diff --git a/designer_base/src/com/fr/design/mainframe/widget/accessibles/TemplateStylePane.java b/designer_base/src/com/fr/design/mainframe/widget/accessibles/TemplateStylePane.java index e9afb05e9c..b066fab966 100644 --- a/designer_base/src/com/fr/design/mainframe/widget/accessibles/TemplateStylePane.java +++ b/designer_base/src/com/fr/design/mainframe/widget/accessibles/TemplateStylePane.java @@ -43,8 +43,8 @@ public class TemplateStylePane extends BasicPane { listModel.addElement(new CardTemplateStyle()); listModel.addElement(new BannerTemplateStyle()); listModel.addElement(new BookMarkTemplateStyle()); - listModel.addElement(new PentagonTemplateStyle()); listModel.addElement(new MenuTemplateStyle()); + listModel.addElement(new PentagonTemplateStyle()); listModel.addElement(new TrapezoidTemplateStyle()); styleList = new JList(listModel); styleList.setCellRenderer(render); diff --git a/designer_base/src/com/fr/start/BaseDesigner.java b/designer_base/src/com/fr/start/BaseDesigner.java index 47e53bd722..eb4b2c6f23 100644 --- a/designer_base/src/com/fr/start/BaseDesigner.java +++ b/designer_base/src/com/fr/start/BaseDesigner.java @@ -83,7 +83,7 @@ public abstract class BaseDesigner extends ToolBarMenuDock { DesignUtils.clientSend(args); return; } - + Register.load(); //标记一下是设计器启动 PluginConversionModule.getInstance().markDesignerStart(); diff --git a/designer_form/src/com/fr/design/designer/beans/actions/FormDeleteAction.java b/designer_form/src/com/fr/design/designer/beans/actions/FormDeleteAction.java index d799fed63b..52d9aa8ea3 100644 --- a/designer_form/src/com/fr/design/designer/beans/actions/FormDeleteAction.java +++ b/designer_form/src/com/fr/design/designer/beans/actions/FormDeleteAction.java @@ -48,11 +48,8 @@ public class FormDeleteAction extends FormWidgetEditAction { if (designer == null) { return false; } - FormSelection selection = designer.getSelectionModel().getSelection(); - XCreator creator = selection.getSelectedCreator(); designer.getSelectionModel().deleteSelection(); - creator.deleteRelatedComponent(creator, designer); return false; } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java index 850b737a36..fe94edc3b2 100644 --- a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java +++ b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java @@ -234,7 +234,6 @@ public class SelectionModel { */ public void deleteSelection() { XCreator[] roots = selection.getSelectedCreators(); - if (roots.length > 0) { boolean isInPara = true; // 在参数面板内删除控件 for (XCreator creator : roots) { @@ -245,10 +244,12 @@ public class SelectionModel { designer.removeParaComponent(); } removeCreatorFromContainer(creator, creator.getWidth(), creator.getHeight()); + creator.deleteRelatedComponent(creator, designer); creator.removeAll(); // 清除被选中的组件 selection.reset(); } + setSelectedCreator(isInPara ? designer.getParaComponent() : designer.getRootComponent()); // 触发事件 designer.getEditListenerTable().fireCreatorModified(DesignerEvent.CREATOR_DELETED); diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveAction.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveAction.java index 354846d91a..008a41fab5 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveAction.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/TabMoveAction.java @@ -35,6 +35,7 @@ public class TabMoveAction extends FormUndoableAction { moveTabAction(xwCardTagLayout, currentButton, xCurrentTab, currentTab); xwCardTagLayout.setSwitchingTab(false); + xwCardTagLayout.doLayout(); }catch (Exception e){ xwCardTagLayout.setSwitchingTab(false); FRLogger.getLogger().error(e.getMessage()); diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardLayout.java index 984aac144c..4c1a957fc1 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardLayout.java @@ -31,6 +31,7 @@ import com.fr.form.ui.container.WLayout; import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; import com.fr.form.ui.container.cardlayout.WCardTagLayout; import com.fr.form.ui.container.cardlayout.WCardTitleLayout; +import com.fr.form.ui.container.cardlayout.WTabFitLayout; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; import com.fr.stable.ArrayUtils; @@ -59,6 +60,8 @@ public class XWCardLayout extends XLayoutContainer { private static final int LAYOUT_INDEX = 0; + public static final String DEFAULT_NAME = "cardlayout"; + //默认蓝色标题背景 private static final Color TITLE_COLOR = new Color(51, 132, 240); @@ -83,7 +86,7 @@ public class XWCardLayout extends XLayoutContainer { */ @Override public String createDefaultName() { - return "cardlayout"; + return DEFAULT_NAME; } /** @@ -210,6 +213,7 @@ public class XWCardLayout extends XLayoutContainer { Dimension dimension = new Dimension(); //放置标题的tab流式布局 WCardTagLayout tagLayout = new WCardTagLayout("tabpane" + widgetName.replaceAll(createDefaultName(), "")); + tagLayout.setNewTab(true); XWCardTagLayout xTag = new XWCardTagLayout(tagLayout, dimension, this); xTag.setBackupParent(xTitle); @@ -464,6 +468,7 @@ public class XWCardLayout extends XLayoutContainer { selectionModel.setSelectedCreator(mainLayout); selectionModel.deleteSelection(); } + @Override public void setBorder(Border border) { super.setBorder(border); diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java index c326cec11f..fda713bcf3 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java @@ -19,8 +19,11 @@ import com.fr.design.mainframe.FormDesigner; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import com.fr.form.ui.container.WBorderLayout; +import com.fr.form.ui.container.WCardLayout; import com.fr.form.ui.container.WTabDisplayPosition; import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; +import com.fr.form.ui.container.cardlayout.WCardTagLayout; +import com.fr.form.ui.container.cardlayout.WCardTitleLayout; import com.fr.general.ComparatorUtils; import com.fr.general.IOUtils; import com.fr.general.Inter; @@ -126,9 +129,29 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ comp.setBackupParent(this); } } + dealCompatibility(wb); + isRefreshing = false; } + private void dealCompatibility(WBorderLayout wb){ + WCardMainBorderLayout ob = (WCardMainBorderLayout)wb; + WCardLayout cardLayout = ob.getCardPart(); + //tab结构改变需要兼容以前的tab,重新命名tabpane + WCardTitleLayout wCardTitleLayout = ob.getTitlePart(); + if(cardLayout == null || wCardTitleLayout == null){ + return; + } + WCardTagLayout wCardTagLayout = wCardTitleLayout.getTagPart(); + String tabpaneName = cardLayout.getWidgetName(); + if (!wCardTagLayout.isNewTab()) { + wCardTagLayout.setWidgetName(tabpaneName); + cardLayout.setWidgetName(XWCardLayout.DEFAULT_NAME + tabpaneName.replaceAll(XWCardTagLayout.DEFAULT_NAME, "")); + wCardTagLayout.setNewTab(true); + wCardTagLayout.setNewTab(true); + } + } + /** * 切换到非添加状态 * @@ -341,13 +364,7 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ */ @Override public XLayoutContainer getTopLayout() { - XLayoutContainer xTopLayout = XCreatorUtils.getParentXLayoutContainer(this).getTopLayout(); - if (xTopLayout != null && !xTopLayout.isEditable()){ - return xTopLayout; - } - else{ return this; - } } @Override diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java index 8f71b08be7..179864bd57 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java @@ -19,6 +19,7 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.imenu.UIPopupMenu; import com.fr.design.mainframe.EditingMouseListener; import com.fr.design.mainframe.FormDesigner; +import com.fr.design.mainframe.WidgetPropertyPane; import com.fr.form.ui.CardSwitchButton; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WCardLayout; @@ -56,6 +57,8 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { private static final int DEFAULT_BUTTON_HEIGHT = 40; + public static final String DEFAULT_NAME = "tabpane"; + public CardSwitchButton getCurrentCard() { return currentCard; } @@ -163,7 +166,7 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { @Override public String createDefaultName() { - return "tabpane"; + return DEFAULT_NAME; } /** @@ -324,6 +327,8 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { int tabLength = this.getComponentCount(); Map cardWidth = new HashMap(); Map cardHeight = new HashMap(); + XLayoutContainer parent = this.getBackupParent(); + for (int i = 0; i < tabLength; i++) { XCardSwitchButton temp = (XCardSwitchButton) this.getComponent(i); CardSwitchButton tempCard = (CardSwitchButton) temp.toData(); @@ -351,17 +356,17 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { } } if(isHori()){ - adjustTabsH(tabLength, cardWidth, cardHeight); + adjustTabsH(parent, tabLength, cardWidth, cardHeight); }else { - adjustTabsV(tabLength, cardWidth, cardHeight); + adjustTabsV(parent, tabLength, cardWidth, cardHeight); } + fixTitleLayout(parent); } - public void adjustTabsH(int tabLength, Map width, Map height) { + public void adjustTabsH(XLayoutContainer parent, int tabLength, Map width, Map height) { if (width == null) { return; } - XLayoutContainer parent = this.getBackupParent(); int tabPaneSize = parent.getHeight(); //调整XWCardTagLayout的高度 int tempX = 0; @@ -369,9 +374,6 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { Rectangle rectangle = this.getComponent(i).getBounds(); Integer cardWidth = width.get(i) + WIDTH_SIDE_OFFSET; Integer cardHeight = tabPaneSize; - if(cardHeight < DEFAULT_BUTTON_HEIGHT){ - cardHeight = DEFAULT_BUTTON_HEIGHT; - } rectangle.setBounds(tempX, 0, cardWidth, cardHeight); tempX += cardWidth; XCardSwitchButton temp = (XCardSwitchButton) this.getComponent(i); @@ -394,11 +396,10 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { } - public void adjustTabsV(int tabLength, Map width, Map height) { + public void adjustTabsV(XLayoutContainer parent, int tabLength, Map width, Map height) { if (width == null) { return; } - XLayoutContainer parent = this.getBackupParent(); int tabPaneSize = parent.getWidth(); int tempY = 0; for (int i = 0; i < tabLength; i++) { @@ -406,13 +407,6 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { Integer cardWidth = tabPaneSize; //先用这边的固定高度 Integer cardHeight = height.get(i) + HEIGHT_SIDE_OFFSET; - - if(cardWidth < DEFAULT_BUTTON_HEIGHT){ - cardWidth = DEFAULT_BUTTON_HEIGHT; - } - if(cardHeight < DEFAULT_BUTTON_HEIGHT){ - cardHeight = DEFAULT_BUTTON_HEIGHT; - } rectangle.setBounds(0, tempY, cardWidth, cardHeight); tempY += cardHeight; XCardSwitchButton temp = (XCardSwitchButton) this.getComponent(i); @@ -421,4 +415,13 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { } + private void fixTitleLayout(XLayoutContainer parent){ + FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner(); + LayoutAdapter layoutAdapter = AdapterBus.searchLayoutAdapter(formDesigner, parent); + if (layoutAdapter != null) { + parent.setBackupBound(parent.getBounds()); + layoutAdapter.fix(parent); + } + } + } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java index 7f80f94870..5e85b503a4 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java @@ -28,7 +28,12 @@ import com.fr.stable.ArrayUtils; import com.fr.stable.core.PropertyChangeAdapter; import javax.swing.border.Border; -import java.awt.*; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Rectangle; import java.beans.IntrospectionException; @@ -38,7 +43,7 @@ import java.beans.IntrospectionException; */ public class XWTabFitLayout extends XWFitLayout { - private static final int MIN_SIZE = 1; + private static final int MIN_SIZE = 0; private static final int WIDTH_SIDE_OFFSET = 57; @@ -266,21 +271,22 @@ public class XWTabFitLayout extends XWFitLayout { //放置tab按钮的tagLayout XWCardTagLayout tagLayout = titleLayout.getTagPart(); WCardTagLayout tag = (WCardTagLayout) tagLayout.toData(); - + + //先删除对应的tab按钮 + for(int i=0;i index){ - button.setIndex(--buttonIndex); - } - if(currentFitIndex > index){ - tempFitLayout.setIndex(--currentFitIndex); - } - } + + private void refreshIndex(WCardTagLayout tag, XWCardLayout cardLayout, int index) { + for (int i = 0; i < tag.getWidgetCount(); i++) { + CardSwitchButton button = tag.getSwitchButton(i); + XWTabFitLayout tempFit = (XWTabFitLayout) cardLayout.getComponent(i); + WTabFitLayout tempFitLayout = (WTabFitLayout) tempFit.toData(); + int currentFitIndex = tempFitLayout.getIndex(); + int buttonIndex = button.getIndex(); + if (buttonIndex > index) { + button.setIndex(--buttonIndex); + } + if (currentFitIndex > index) { + tempFitLayout.setIndex(--currentFitIndex); + } + } } /** @@ -461,7 +467,7 @@ public class XWTabFitLayout extends XWFitLayout { } //控件树上显示其taglayout层 if ((cardSwitchButton != null)) { - return cardSwitchButton.getTagLayout(); + return cardSwitchButton.getBackupParent(); } return super.getParentShow(); } diff --git a/designer_form/src/com/fr/design/gui/xpane/CardTagLayoutBorderPane.java b/designer_form/src/com/fr/design/gui/xpane/CardTagLayoutBorderPane.java index e49416356e..89bbd10568 100644 --- a/designer_form/src/com/fr/design/gui/xpane/CardTagLayoutBorderPane.java +++ b/designer_form/src/com/fr/design/gui/xpane/CardTagLayoutBorderPane.java @@ -92,15 +92,18 @@ public class CardTagLayoutBorderPane extends LayoutBorderPane { return; } - public LayoutBorderStyle update() { - LayoutBorderStyle style = new LayoutBorderStyle(); - style.setBorderStyle(this.getBorderStyleCombo().getSelectedIndex()); - style.setBorder(this.getCurrentLineCombo().getSelectedLineStyle()); - style.setColor(this.getCurrentLineColorPane().getColor()); - style.setBackground(this.getBackgroundPane().update()); - style.setAlpha((float)(this.getNumberDragPane().updateBean()/this.getMaxNumber())); - return style; + public LayoutBorderStyle update() { + LayoutBorderStyle style = new LayoutBorderStyle(); + if (this.getBorderStyle() != null) { + style.setStyle(this.getBorderStyle()); } + style.setBorderStyle(this.getBorderStyleCombo().getSelectedIndex()); + style.setBorder(this.getCurrentLineCombo().getSelectedLineStyle()); + style.setColor(this.getCurrentLineColorPane().getColor()); + style.setBackground(this.getBackgroundPane().update()); + style.setAlpha((float) (this.getNumberDragPane().updateBean() / this.getMaxNumber())); + return style; + } protected void populateBorderType(){ return; diff --git a/designer_form/src/com/fr/design/gui/xpane/LayoutBorderPreviewPane.java b/designer_form/src/com/fr/design/gui/xpane/LayoutBorderPreviewPane.java index ea75ee3df2..5aa65360a6 100644 --- a/designer_form/src/com/fr/design/gui/xpane/LayoutBorderPreviewPane.java +++ b/designer_form/src/com/fr/design/gui/xpane/LayoutBorderPreviewPane.java @@ -92,8 +92,6 @@ public class LayoutBorderPreviewPane extends JPanel{ jp.setBounds(smallGAP,smallGAP, getWidth() - GAP, height); borderStyle.paint(g, new Rectangle2D.Double(smallGAP, smallGAP, getWidth() - GAP, getHeight() - GAP)); jp.setFontObject(borderStyle.getTitle().getFrFont()); - jp.setVisible(borderStyle.getType() == LayoutBorderStyle.TITLE); - } } diff --git a/designer_form/src/com/fr/design/widget/ui/designer/layout/WCardMainLayoutDefinePane.java b/designer_form/src/com/fr/design/widget/ui/designer/layout/WCardMainLayoutDefinePane.java index ff2b139c2a..ffafb9e87f 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/layout/WCardMainLayoutDefinePane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/layout/WCardMainLayoutDefinePane.java @@ -2,6 +2,8 @@ package com.fr.design.widget.ui.designer.layout; import com.fr.design.designer.IntervalConstants; import com.fr.design.designer.creator.XCreator; +import com.fr.design.designer.creator.cardlayout.XWCardLayout; +import com.fr.design.designer.creator.cardlayout.XWCardTagLayout; import com.fr.design.foldablepane.UIExpandablePane; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; @@ -13,6 +15,8 @@ import com.fr.design.widget.ui.designer.AbstractDataModify; import com.fr.form.ui.LayoutBorderStyle; import com.fr.form.ui.container.WCardLayout; import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; +import com.fr.form.ui.container.cardlayout.WCardTagLayout; +import com.fr.form.ui.container.cardlayout.WCardTitleLayout; import com.fr.general.Inter; import javax.swing.BorderFactory; @@ -21,6 +25,7 @@ import java.awt.BorderLayout; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.UUID; /** * Created by ibm on 2017/8/2. @@ -75,7 +80,7 @@ public class WCardMainLayoutDefinePane extends AbstractDataModify