diff --git a/designer/src/com/fr/design/actions/edit/DeleteAction.java b/designer/src/com/fr/design/actions/edit/DeleteAction.java index 01e07a75bc..0fe1f7817c 100644 --- a/designer/src/com/fr/design/actions/edit/DeleteAction.java +++ b/designer/src/com/fr/design/actions/edit/DeleteAction.java @@ -8,6 +8,9 @@ import com.fr.design.actions.ElementCaseAction; import com.fr.general.Inter; import com.fr.design.mainframe.ElementCasePane; +import javax.swing.*; +import java.awt.event.KeyEvent; + /** * Delete Row, Column or FloatElement.. */ @@ -18,10 +21,11 @@ public class DeleteAction extends ElementCaseAction { public DeleteAction(ElementCasePane t) { super(t); - this.setName(Inter.getLocText("M_Edit-Delete") + "..."); + this.setName(Inter.getLocText("M_Edit-Delete")); this.setMnemonic('D'); //Richie:删除菜单图标 this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_report/delete.png")); + this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0)); } @Override diff --git a/designer/src/com/fr/design/actions/edit/order/BringFloatElementForwardAction.java b/designer/src/com/fr/design/actions/edit/order/BringFloatElementForwardAction.java index c1ffd413ab..2259388d45 100644 --- a/designer/src/com/fr/design/actions/edit/order/BringFloatElementForwardAction.java +++ b/designer/src/com/fr/design/actions/edit/order/BringFloatElementForwardAction.java @@ -9,6 +9,11 @@ import com.fr.design.mainframe.ElementCasePane; import com.fr.report.cell.FloatElement; import com.fr.report.elementcase.ElementCase; +import javax.swing.*; +import java.awt.event.KeyEvent; + +import static com.fr.design.gui.syntax.ui.rtextarea.RTADefaultInputMap.DEFAULT_MODIFIER; + /** * Bring FloatElement forward. */ @@ -21,8 +26,9 @@ public class BringFloatElementForwardAction extends AbstractFloatElementOrderAct this.setName(Inter.getLocText("M_Edit-Bring_Forward")); this.setMnemonic('F'); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_edit/bringForward.png")); - } + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/control/up.png")); + this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_CLOSE_BRACKET, DEFAULT_MODIFIER)); + } @Override public void orderWithSelectedFloatElement(ElementCase report, diff --git a/designer/src/com/fr/design/actions/edit/order/BringFloatElementToFrontAction.java b/designer/src/com/fr/design/actions/edit/order/BringFloatElementToFrontAction.java index 880abaeecc..b50d683060 100644 --- a/designer/src/com/fr/design/actions/edit/order/BringFloatElementToFrontAction.java +++ b/designer/src/com/fr/design/actions/edit/order/BringFloatElementToFrontAction.java @@ -9,6 +9,12 @@ import com.fr.design.mainframe.ElementCasePane; import com.fr.report.cell.FloatElement; import com.fr.report.elementcase.ElementCase; +import javax.swing.*; +import java.awt.event.InputEvent; +import java.awt.event.KeyEvent; + +import static com.fr.design.gui.syntax.ui.rtextarea.RTADefaultInputMap.DEFAULT_MODIFIER; + /** * Bring FloatElement to front. */ @@ -20,9 +26,10 @@ public class BringFloatElementToFrontAction extends AbstractFloatElementOrderAct super(t); this.setName(Inter.getLocText("M_Edit-Bring_to_Front")); - this.setMnemonic('t'); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_edit/bringToFront.png")); - } + this.setMnemonic('T'); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/control/to_top.png")); + this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_CLOSE_BRACKET, DEFAULT_MODIFIER + InputEvent.ALT_MASK)); + } @Override public void orderWithSelectedFloatElement(ElementCase report, diff --git a/designer/src/com/fr/design/actions/edit/order/SendFloatElementBackwardAction.java b/designer/src/com/fr/design/actions/edit/order/SendFloatElementBackwardAction.java index 166a2f79b6..e1eedc3550 100644 --- a/designer/src/com/fr/design/actions/edit/order/SendFloatElementBackwardAction.java +++ b/designer/src/com/fr/design/actions/edit/order/SendFloatElementBackwardAction.java @@ -9,6 +9,11 @@ import com.fr.design.mainframe.ElementCasePane; import com.fr.report.cell.FloatElement; import com.fr.report.elementcase.ElementCase; +import javax.swing.*; +import java.awt.event.KeyEvent; + +import static com.fr.design.gui.syntax.ui.rtextarea.RTADefaultInputMap.DEFAULT_MODIFIER; + /** * Send FloatElement backward. */ @@ -21,8 +26,9 @@ public class SendFloatElementBackwardAction extends AbstractFloatElementOrderAct this.setName(Inter.getLocText("M_Edit-Send_Backward")); this.setMnemonic('B'); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_edit/sendBackward.png")); - } + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/control/down.png")); + this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_OPEN_BRACKET, DEFAULT_MODIFIER)); + } @Override public void orderWithSelectedFloatElement(ElementCase report, diff --git a/designer/src/com/fr/design/actions/edit/order/SendFloatElementToBackAction.java b/designer/src/com/fr/design/actions/edit/order/SendFloatElementToBackAction.java index a97ea3fb92..ee8fa31d4e 100644 --- a/designer/src/com/fr/design/actions/edit/order/SendFloatElementToBackAction.java +++ b/designer/src/com/fr/design/actions/edit/order/SendFloatElementToBackAction.java @@ -9,6 +9,12 @@ import com.fr.design.mainframe.ElementCasePane; import com.fr.report.cell.FloatElement; import com.fr.report.elementcase.ElementCase; +import javax.swing.*; +import java.awt.event.InputEvent; +import java.awt.event.KeyEvent; + +import static com.fr.design.gui.syntax.ui.rtextarea.RTADefaultInputMap.DEFAULT_MODIFIER; + /** * Send FloatElement to back. */ @@ -21,8 +27,9 @@ public class SendFloatElementToBackAction extends AbstractFloatElementOrderActio this.setName(Inter.getLocText("M_Edit-Send_to_Back")); this.setMnemonic('K'); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_edit/sendToBack.png")); - } + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/control/to_bottom.png")); + this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_OPEN_BRACKET, DEFAULT_MODIFIER + InputEvent.ALT_MASK)); + } @Override public void orderWithSelectedFloatElement(ElementCase report, diff --git a/designer/src/com/fr/design/actions/utils/DeprecatedActionManager.java b/designer/src/com/fr/design/actions/utils/DeprecatedActionManager.java index c072b620d2..da9054afc6 100644 --- a/designer/src/com/fr/design/actions/utils/DeprecatedActionManager.java +++ b/designer/src/com/fr/design/actions/utils/DeprecatedActionManager.java @@ -68,23 +68,6 @@ public class DeprecatedActionManager { return clearMenu; } - /** - * Order menu - */ - public static JMenu getOrderMenu(ElementCasePane ePane) { - JMenu orderMenu = new JMenu(Inter.getLocText("M_Edit-Order")); - orderMenu.setIcon(UIConstants.BLACK_ICON); - orderMenu.setMnemonic('O'); - orderMenu.setBackground(UIConstants.NORMAL_BACKGROUND); - - orderMenu.add(new BringFloatElementToFrontAction(ePane).createMenuItem()); - orderMenu.add(new SendFloatElementToBackAction(ePane).createMenuItem()); - orderMenu.add(new BringFloatElementForwardAction(ePane).createMenuItem()); - orderMenu.add(new SendFloatElementBackwardAction(ePane).createMenuItem()); - - return orderMenu; - } - /** * Cell Style. */ diff --git a/designer/src/com/fr/grid/selection/FloatSelection.java b/designer/src/com/fr/grid/selection/FloatSelection.java index 17b8ca7aa0..0d441a1f7a 100644 --- a/designer/src/com/fr/grid/selection/FloatSelection.java +++ b/designer/src/com/fr/grid/selection/FloatSelection.java @@ -1,33 +1,35 @@ package com.fr.grid.selection; -import java.awt.Toolkit; - -import javax.swing.JPopupMenu; - import com.fr.base.BaseUtils; import com.fr.base.FRContext; import com.fr.design.actions.cell.CleanAuthorityAction; import com.fr.design.actions.cell.FloatStyleAction; import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.edit.*; -import com.fr.design.actions.utils.DeprecatedActionManager; +import com.fr.design.actions.edit.order.BringFloatElementForwardAction; +import com.fr.design.actions.edit.order.BringFloatElementToFrontAction; +import com.fr.design.actions.edit.order.SendFloatElementBackwardAction; +import com.fr.design.actions.edit.order.SendFloatElementToBackAction; import com.fr.design.cell.clipboard.CellElementsClip; import com.fr.design.cell.clipboard.ElementsTransferable; import com.fr.design.cell.clipboard.FloatElementsClip; import com.fr.design.designer.TargetComponent; import com.fr.design.gui.imenu.UIPopupMenu; import com.fr.design.mainframe.CellElementPropertyPane; -import com.fr.general.ComparatorUtils; -import com.fr.general.Inter; import com.fr.design.mainframe.ElementCasePane; import com.fr.design.mainframe.ElementCasePane.Clear; +import com.fr.design.selection.QuickEditor; +import com.fr.design.utils.DesignUtils; +import com.fr.general.ComparatorUtils; +import com.fr.general.Inter; import com.fr.report.cell.FloatElement; import com.fr.report.elementcase.TemplateElementCase; -import com.fr.design.selection.QuickEditor; import com.fr.stable.ColumnRow; import com.fr.stable.unit.FU; import com.fr.stable.unit.OLDPIX; -import com.fr.design.utils.DesignUtils; + +import javax.swing.*; +import java.awt.*; /** * the float selection * @editor zhou @@ -120,19 +122,23 @@ public class FloatSelection extends Selection { popup.add(new CleanAuthorityAction(ePane).createMenuItem()); return popup; } - popup.add(DeprecatedActionManager.getCellMenu(ePane).createJMenu()); popup.add(new FloatStyleAction(ePane).createMenuItem()); popup.add(new HyperlinkAction().createMenuItem()); - // cut, copy and paste popup.addSeparator(); + popup.add(new CutAction(ePane).createMenuItem()); popup.add(new CopyAction(ePane).createMenuItem()); popup.add(new PasteAction(ePane).createMenuItem()); popup.add(new DeleteAction(ePane).createMenuItem()); + popup.addSeparator(); + popup.add(new BringFloatElementToFrontAction(ePane).createMenuItem()); + popup.add(new SendFloatElementToBackAction(ePane).createMenuItem()); + popup.add(new BringFloatElementForwardAction(ePane).createMenuItem()); + popup.add(new SendFloatElementBackwardAction(ePane).createMenuItem()); popup.addSeparator(); - popup.add(DeprecatedActionManager.getOrderMenu(ePane)); + popup.add(new EditFloatElementNameAction(ePane).createMenuItem()); return popup; diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index 132dd225a7..ed58730bc3 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -2149,10 +2149,18 @@ FR-Designer_Provide_Choose_All= FR-Designer_Decimal_Places= FR-Designer_Env_Des_Https=If HTTPS is enabled or the HTTPS configuration (certificate path, HTTPS key) is modified, you must restart the designer to take effect. FR-Designer_Format_JavaScript=Format Code -FR-Designer_Move_Up=Move up -FR-Designer_Move_Down=Move down -FR-Designer_Move_To_Top=Move to top -FR-Designer_Move_To_Bottom=Move to bottom FR-Designer_Preference_CachingTemplate=Template memory optimization FR-Designer_Preference_MaxCachingTemplate=The designer maximum cache template number: FR-Designer_Preference_CachingTemplateTip=Set to 0 to close the function; restart the designer and take effect +FR-Designer_Move_Up=Move up(F) +FR-Designer_Move_Down=Move down(B) +FR-Designer_Move_To_Top=Move to top(T) +FR-Designer_Move_To_Bottom=Move to bottom(K) +FR-Designer_Tab_Style_Template=Style Template +FR-Designer_Tab_Template_One=Template One +FR-Designer_Tab_Template_Two=Template Two +FR-Designer_Tab_Template_Three=Template Three +FR-Designer_Tab_Template_Four=Template Four +FR-Designer_Tab_Template_Five=Template Five +FR-Designer_Tab_Template_Six=Template Six +FR-Designer_Tab_Display_Position=Display Position diff --git a/designer_base/src/com/fr/design/locale/designer_en_US.properties b/designer_base/src/com/fr/design/locale/designer_en_US.properties index 261a1b4652..ea7c11ffa2 100644 --- a/designer_base/src/com/fr/design/locale/designer_en_US.properties +++ b/designer_base/src/com/fr/design/locale/designer_en_US.properties @@ -2148,10 +2148,18 @@ FR-Designer_Provide_Choose_All= FR-Designer_Decimal_Places= FR-Designer_Env_Des_Https=If HTTPS is enabled or the HTTPS configuration (certificate path, HTTPS key) is modified, you must restart the designer to take effect. FR-Designer_Format_JavaScript=Format Code -FR-Designer_Move_Up=Move up -FR-Designer_Move_Down=Move down -FR-Designer_Move_To_Top=Move to top -FR-Designer_Move_To_Bottom=Move to bottom FR-Designer_Preference_CachingTemplate=Template memory optimization FR-Designer_Preference_MaxCachingTemplate=The designer maximum cache template number: FR-Designer_Preference_CachingTemplateTip=Set to 0 to close the function; restart the designer and take effect +FR-Designer_Move_Up=Move up(F) +FR-Designer_Move_Down=Move down(B) +FR-Designer_Move_To_Top=Move to top(T) +FR-Designer_Move_To_Bottom=Move to bottom(K) +FR-Designer_Tab_Style_Template=Style Template +FR-Designer_Tab_Template_One=Template One +FR-Designer_Tab_Template_Two=Template Two +FR-Designer_Tab_Template_Three=Template Three +FR-Designer_Tab_Template_Four=Template Four +FR-Designer_Tab_Template_Five=Template Five +FR-Designer_Tab_Template_Six=Template Six +FR-Designer_Tab_Display_Position=Display Position diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index 9886ae1aa8..c3658f9191 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -2155,4 +2155,12 @@ FR-Designer_Move_To_Top= FR-Designer_Move_To_Bottom= FR-Designer_Preference_CachingTemplate=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30E1\u30E2\u30EA\u6700\u9069\u5316 FR-Designer_Preference_MaxCachingTemplate=\u8BBE\u8BA1\u5668\u6700\u5927\u30AD\u30E3\u30C3\u30B7\u30E5\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u6570\uFF1A -FR-Designer_Preference_CachingTemplateTip=\u8A2D\u7F6E\u30920\u8868\u793A\u6A5F\u80FD\u8BBE\u8BA1\u5668\u9589\u9396;\u518D\u958B\u5F8C\u767A\u52B9\u3059\u308B \ No newline at end of file +FR-Designer_Preference_CachingTemplateTip=\u8A2D\u7F6E\u30920\u8868\u793A\u6A5F\u80FD\u8BBE\u8BA1\u5668\u9589\u9396;\u518D\u958B\u5F8C\u767A\u52B9\u3059\u308B +FR-Designer_Tab_Style_Template= +FR-Designer_Tab_Template_One= +FR-Designer_Tab_Template_Two= +FR-Designer_Tab_Template_Three= +FR-Designer_Tab_Template_Four= +FR-Designer_Tab_Template_Five= +FR-Designer_Tab_Template_Six= +FR-Designer_Tab_Display_Position= diff --git a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties index f51bba4659..c3b6309c47 100644 --- a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties +++ b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties @@ -2155,4 +2155,12 @@ FR-Designer_Move_To_Top= FR-Designer_Move_To_Bottom= FR-Designer_Preference_CachingTemplate=\uD15C\uD50C\uB9BF \uBA54\uBAA8\uB9AC \uCD5C\uC801\uD654 FR-Designer_Preference_MaxCachingTemplate=\uB514\uC790\uC774\uB108 \uCD5C\uB300 \uCE90\uC2DC \uD15C\uD50C\uB9BF \uAC1C\uC218: -FR-Designer_Preference_CachingTemplateTip=\uC124\uC815 \uC744 0 \uD45C\uC2DC \uB2EB\uAE30 \uC774 \uAE30\uB2A5; \uB2E4\uC2DC \uB514\uC790\uC774\uB108 \uD6C4 \uBC1C\uD6A8\uB41C\uB2E4 \ No newline at end of file +FR-Designer_Preference_CachingTemplateTip=\uC124\uC815 \uC744 0 \uD45C\uC2DC \uB2EB\uAE30 \uC774 \uAE30\uB2A5; \uB2E4\uC2DC \uB514\uC790\uC774\uB108 \uD6C4 \uBC1C\uD6A8\uB41C\uB2E4 +FR-Designer_Tab_Style_Template= +FR-Designer_Tab_Template_One= +FR-Designer_Tab_Template_Two= +FR-Designer_Tab_Template_Three= +FR-Designer_Tab_Template_Four= +FR-Designer_Tab_Template_Five= +FR-Designer_Tab_Template_Six= +FR-Designer_Tab_Display_Position= diff --git a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties index 178482e8bb..3e1867c65c 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties @@ -2149,10 +2149,18 @@ FR-Designer_Provide_Choose_All= FR-Designer_Decimal_Places= FR-Designer_Env_Des_Https=\u82E5\u542F\u7528https\u6216\u4FEE\u6539https\u914D\u7F6E\uFF08\u8BC1\u4E66\u8DEF\u5F84\u3001https\u79D8\u94A5\uFF09\uFF0C\u5FC5\u987B\u91CD\u542F\u8BBE\u8BA1\u5668\u624D\u80FD\u751F\u6548\u3002 FR-Designer_Format_JavaScript=\u683C\u5F0F\u5316\u4EE3\u7801 -FR-Designer_Move_Up=\u4E0A\u79FB\u4E00\u5C42 -FR-Designer_Move_Down=\u4E0B\u79FB\u4E00\u5C42 -FR-Designer_Move_To_Top=\u7F6E\u4E8E\u9876\u5C42 -FR-Designer_Move_To_Bottom=\u7F6E\u4E8E\u5E95\u5C42 FR-Designer_Preference_CachingTemplate=\u6A21\u677F\u5185\u5B58\u4F18\u5316 FR-Designer_Preference_MaxCachingTemplate=\u8BBE\u8BA1\u5668\u6700\u5927\u7F13\u5B58\u6A21\u677F\u4E2A\u6570\uFF1A -FR-Designer_Preference_CachingTemplateTip=\u8BBE\u7F6E\u4E3A0\u8868\u793A\u5173\u95ED\u8BE5\u529F\u80FD\uFF1B\u91CD\u542F\u8BBE\u8BA1\u5668\u540E\u751F\u6548 \ No newline at end of file +FR-Designer_Preference_CachingTemplateTip=\u8BBE\u7F6E\u4E3A0\u8868\u793A\u5173\u95ED\u8BE5\u529F\u80FD\uFF1B\u91CD\u542F\u8BBE\u8BA1\u5668\u540E\u751F\u6548 +FR-Designer_Move_Up=\u4E0A\u79FB\u4E00\u5C42(F) +FR-Designer_Move_Down=\u4E0B\u79FB\u4E00\u5C42(B) +FR-Designer_Move_To_Top=\u7F6E\u4E8E\u9876\u5C42(T) +FR-Designer_Move_To_Bottom=\u7F6E\u4E8E\u5E95\u5C42(K) +FR-Designer_Tab_Style_Template=\u6837\u5F0F\u6A21\u677F +FR-Designer_Tab_Template_One=\u6A21\u677F\u4E00 +FR-Designer_Tab_Template_Two=\u6A21\u677F\u4E8C +FR-Designer_Tab_Template_Three=\u6A21\u677F\u4E09 +FR-Designer_Tab_Template_Four=\u6A21\u677F\u56DB +FR-Designer_Tab_Template_Five=\u6A21\u677F\u4E94 +FR-Designer_Tab_Template_Six=\u6A21\u677F\u516D +FR-Designer_Tab_Display_Position=\u663E\u793A\u4F4D\u7F6E diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties index 09a80e22d7..6c4eb3800c 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties @@ -2148,10 +2148,18 @@ FR-Designer_Provide_Choose_All= FR-Designer_Decimal_Places= FR-Designer_Env_Des_Https=\u82E5\u555F\u7528https\u6216\u4FEE\u6539https\u914D\u7F6E\uFF08\u8B49\u66F8\u8DEF\u5F91\u3001https\u7955\u9470\uFF09\uFF0C\u5FC5\u9808\u91CD\u555F\u8A2D\u8A08\u5668\u624D\u80FD\u751F\u6548\u3002 FR-Designer_Format_JavaScript=Format Code -FR-Designer_Move_Up=\u4E0A\u79FB\u4E00\u5C64 -FR-Designer_Move_Down=\u4E0B\u79FB\u4E00\u5C64 -FR-Designer_Move_To_Top=\u7F6E\u65BC\u9802\u5C64 -FR-Designer_Move_To_Bottom=\u7F6E\u65BC\u5E95\u5C64 FR-Designer_Preference_CachingTemplate=\u7BC4\u672C\u8A18\u61B6\u9AD4\u512A\u5316 FR-Designer_Preference_MaxCachingTemplate=\u8A2D\u8A08\u5668\u6700\u5927\u7DE9\u5B58\u7BC4\u672C\u500B\u6578\uFF1A FR-Designer_Preference_CachingTemplateTip=\u8A2D\u5B9A\u70BA0\u8868\u793A\u95DC\u9589\u8A72\u529F\u80FD\uFF1B\u91CD\u5553\u8A2D\u8A08\u5668\u5F8C\u751F\u6548 +FR-Designer_Move_Up=\u4E0A\u79FB\u4E00\u5C64(F) +FR-Designer_Move_Down=\u4E0B\u79FB\u4E00\u5C64(B) +FR-Designer_Move_To_Top=\u7F6E\u65BC\u9802\u5C64(T) +FR-Designer_Move_To_Bottom=\u7F6E\u65BC\u5E95\u5C64(K) +FR-Designer_Tab_Style_Template=\u6A23\u5F0F\u6A21\u677F +FR-Designer_Tab_Template_One=\u6A21\u677F\u4E00 +FR-Designer_Tab_Template_Two=\u6A21\u677F\u4E8C +FR-Designer_Tab_Template_Three=\u6A21\u677F\u4E09 +FR-Designer_Tab_Template_Four=\u6A21\u677F\u56DB +FR-Designer_Tab_Template_Five=\u6A21\u677F\u4E94 +FR-Designer_Tab_Template_Six=\u6A21\u677F\u516D +FR-Designer_Tab_Display_Position=\u986F\u793A\u4F4D\u7F6E diff --git a/designer_base/src/com/fr/design/mainframe/widget/accessibles/AccessibleTemplateStyleEditor.java b/designer_base/src/com/fr/design/mainframe/widget/accessibles/AccessibleTemplateStyleEditor.java new file mode 100644 index 0000000000..9e32a4d46a --- /dev/null +++ b/designer_base/src/com/fr/design/mainframe/widget/accessibles/AccessibleTemplateStyleEditor.java @@ -0,0 +1,42 @@ +package com.fr.design.mainframe.widget.accessibles; + +import com.fr.design.dialog.BasicDialog; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.general.cardtag.TemplateStyle; +import com.fr.design.mainframe.widget.wrappers.TemplateStyleWrapper; + +import javax.swing.SwingUtilities; +import java.awt.Dimension; + +/** + * Created by kerry on 2017/11/23. + */ +public class AccessibleTemplateStyleEditor extends UneditableAccessibleEditor { + + private static final Dimension DEFAULT_DIMENSION = new Dimension(600, 400); + + private TemplateStylePane stylePane; + + public AccessibleTemplateStyleEditor() { + super(new TemplateStyleWrapper()); + } + + @Override + protected void showEditorPane() { + if (stylePane == null) { + stylePane = new TemplateStylePane(); + stylePane.setPreferredSize(DEFAULT_DIMENSION); + } + BasicDialog dlg = stylePane.showWindow(SwingUtilities.getWindowAncestor(this)); + dlg.addDialogActionListener(new DialogActionAdapter() { + + @Override + public void doOk() { + setValue(stylePane.update()); + fireStateChanged(); + } + }); + stylePane.populate((TemplateStyle) getValue()); + dlg.setVisible(true); + } +} 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 new file mode 100644 index 0000000000..890e5dc5cf --- /dev/null +++ b/designer_base/src/com/fr/design/mainframe/widget/accessibles/TemplateStylePane.java @@ -0,0 +1,99 @@ +package com.fr.design.mainframe.widget.accessibles; + +import com.fr.general.cardtag.BannerTemplateStyle; +import com.fr.general.cardtag.BookMarkTemplateStyle; +import com.fr.general.cardtag.CardTemplateStyle; +import com.fr.general.cardtag.DefaultTemplateStyle; +import com.fr.general.cardtag.MenuTemplateStyle; +import com.fr.general.cardtag.PentagonTemplateStyle; +import com.fr.general.cardtag.TrapezoidTemplateStyle; +import com.fr.design.dialog.BasicPane; +import com.fr.general.cardtag.TemplateStyle; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.Inter; + +import javax.swing.DefaultListCellRenderer; +import javax.swing.DefaultListModel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.ListCellRenderer; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +/** + * Created by kerry on 2017/11/23. + */ +public class TemplateStylePane extends BasicPane { + private DefaultListModel listModel; + private JList styleList; + private TemplateStylePreviewPane previewPane = new TemplateStylePreviewPane(new DefaultTemplateStyle()); + + public TemplateStylePane(){ + init(); + } + + public void init(){ + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + listModel = new DefaultListModel(); + listModel.addElement(new DefaultTemplateStyle()); + listModel.addElement(new CardTemplateStyle()); + listModel.addElement(new BookMarkTemplateStyle()); + listModel.addElement(new PentagonTemplateStyle()); + listModel.addElement(new MenuTemplateStyle()); + listModel.addElement(new TrapezoidTemplateStyle()); + listModel.addElement(new BannerTemplateStyle()); + styleList = new JList(listModel); + styleList.setCellRenderer(render); + + JPanel westPane = FRGUIPaneFactory.createBorderLayout_L_Pane(); + westPane.add(styleList, BorderLayout.CENTER); + JPanel centerPane = FRGUIPaneFactory.createBorderLayout_L_Pane(); + westPane.setPreferredSize(new Dimension(100, 500)); + centerPane.setPreferredSize(new Dimension(300, 500)); + centerPane.setBorder(GUICoreUtils.createTitledBorder(Inter.getLocText("Preview"), null)); + centerPane.add(previewPane); + styleList.addMouseListener(new MouseAdapter() { + public void mouseClicked(MouseEvent e) { + previewPane.repaint((TemplateStyle) styleList.getSelectedValue()); + } + }); + this.add(westPane, BorderLayout.WEST); + this.add(centerPane, BorderLayout.CENTER); + } + public static ListCellRenderer render = new DefaultListCellRenderer() { + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + + if (value instanceof TemplateStyle) { + TemplateStyle l = (TemplateStyle) value; + this.setText(l.toString()); + } + return this; + } + }; + + @Override + protected String title4PopupWindow() { + return Inter.getLocText("FR-Designer_Tab_Style_Template"); + } + + public void populate(TemplateStyle templateStyle) { + previewPane.repaint(templateStyle); + for(int i = 0; i< listModel.getSize(); i++){ + if((listModel.getElementAt(i).toString()).equals(templateStyle.toString())){ + styleList.setSelectedIndex(i); + return; + } + } + styleList.setSelectedIndex(0); + } + + public TemplateStyle update() { + return (TemplateStyle) styleList.getSelectedValue(); + } +} diff --git a/designer_base/src/com/fr/design/mainframe/widget/accessibles/TemplateStylePreviewPane.java b/designer_base/src/com/fr/design/mainframe/widget/accessibles/TemplateStylePreviewPane.java new file mode 100644 index 0000000000..4871bfd1d4 --- /dev/null +++ b/designer_base/src/com/fr/design/mainframe/widget/accessibles/TemplateStylePreviewPane.java @@ -0,0 +1,37 @@ +package com.fr.design.mainframe.widget.accessibles; + +import com.fr.base.BaseUtils; +import com.fr.general.cardtag.TemplateStyle; + +import javax.swing.JPanel; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; + +/** + * Created by kerry on 2017/12/11. + */ +public class TemplateStylePreviewPane extends JPanel { + + private static final int WIDTH = 540; + private static final int HEIGHT = 500; + + private TemplateStyle templateStyle; + + public TemplateStylePreviewPane(TemplateStyle templateStyle){ + this.templateStyle = templateStyle; + } + + public void repaint (TemplateStyle templateStyle){ + this.templateStyle = templateStyle; + super.repaint(); + } + + @Override + public void paint(Graphics g) { + super.paint(g); + Graphics2D g2d = (Graphics2D) g.create(); + Image image = BaseUtils.readImage(templateStyle.getPreview()); + g2d.drawImage(image, 0, 0, WIDTH, HEIGHT, null); + } +} diff --git a/designer_base/src/com/fr/design/mainframe/widget/wrappers/TemplateStyleWrapper.java b/designer_base/src/com/fr/design/mainframe/widget/wrappers/TemplateStyleWrapper.java new file mode 100644 index 0000000000..bcdf195f0b --- /dev/null +++ b/designer_base/src/com/fr/design/mainframe/widget/wrappers/TemplateStyleWrapper.java @@ -0,0 +1,29 @@ +package com.fr.design.mainframe.widget.wrappers; + +import com.fr.design.Exception.ValidationException; +import com.fr.design.designer.properties.Decoder; +import com.fr.design.designer.properties.Encoder; +import com.fr.stable.StringUtils; + +/** + * Created by kerry on 2017/11/23. + */ +public class TemplateStyleWrapper implements Encoder, Decoder { + @Override + public String encode(Object v) { + if (v == null) { + return StringUtils.EMPTY; + } + return v.toString(); + } + + @Override + public Object decode(String txt) { + return null; + } + + @Override + public void validate(String txt) throws ValidationException { + + } +} diff --git a/designer_base/src/com/fr/design/utils/ThemeUtils.java b/designer_base/src/com/fr/design/utils/ThemeUtils.java index 9f012f2ee2..56060edb65 100644 --- a/designer_base/src/com/fr/design/utils/ThemeUtils.java +++ b/designer_base/src/com/fr/design/utils/ThemeUtils.java @@ -13,7 +13,7 @@ import java.awt.*; */ public class ThemeUtils { public static final ColorUIResource NORMAL_FOREGROUND = new ColorUIResource(0, 0, 0); - public static final ColorUIResource TEXT_SELECTED_BG_COLOR = new ColorUIResource(43, 107, 197); + public static final ColorUIResource TEXT_SELECTED_BG_COLOR = new ColorUIResource(65, 155, 249); public static final ColorUIResource TEXT_SELECTED_TEXT_COLOR = new ColorUIResource(255, 255, 255); public static final ColorUIResource NORMAL_BG = new ColorUIResource(212, 212, 216); public static final ColorUIResource DISABLE_TEXT = new ColorUIResource(143, 142, 139); diff --git a/designer_base/src/com/fr/design/widget/WidgetBoundsPaneFactory.java b/designer_base/src/com/fr/design/widget/WidgetBoundsPaneFactory.java index 8092fc5e84..2d0fe314b0 100644 --- a/designer_base/src/com/fr/design/widget/WidgetBoundsPaneFactory.java +++ b/designer_base/src/com/fr/design/widget/WidgetBoundsPaneFactory.java @@ -9,8 +9,11 @@ import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.general.Inter; -import javax.swing.*; -import java.awt.*; +import javax.swing.BorderFactory; +import javax.swing.JPanel; +import javax.swing.SwingConstants; +import java.awt.BorderLayout; +import java.awt.Component; /** * Created by plough on 2017/8/7. @@ -69,4 +72,21 @@ public class WidgetBoundsPaneFactory { boundsPane.add(centerPanel, BorderLayout.CENTER); return new UIExpandablePane(Inter.getLocText("FR-Designer_Coords_And_Size"), 230, 24, boundsPane); } + + + public static UIExpandablePane createCardTagBoundPane(UISpinner width) { + JPanel boundsPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + double f = TableLayout.FILL; + double p = TableLayout.PREFERRED; + Component[][] components = new Component[][]{ + new Component[]{new UILabel(Inter.getLocText("FR-Designer-Widget_Size")), width}, + }; + double[] rowSize = {p}; + double[] columnSize = {p, f}; + int[][] rowCount = {{1, 1}}; + final JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L6); + panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); + boundsPane.add(panel); + return new UIExpandablePane(Inter.getLocText("FR-Designer_Coords_And_Size"), 280, 24, boundsPane); + } } diff --git a/designer_form/src/com/fr/design/designer/beans/actions/MoveDownAction.java b/designer_form/src/com/fr/design/designer/beans/actions/MoveDownAction.java index 1fb579c685..95cde265df 100644 --- a/designer_form/src/com/fr/design/designer/beans/actions/MoveDownAction.java +++ b/designer_form/src/com/fr/design/designer/beans/actions/MoveDownAction.java @@ -24,7 +24,7 @@ public class MoveDownAction extends FormEditAction { public MoveDownAction(FormDesigner t) { super(t); this.setName(Inter.getLocText("FR-Designer_Move_Down")); - this.setMnemonic('T'); + this.setMnemonic('B'); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/control/down.png")); this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_OPEN_BRACKET, DEFAULT_MODIFIER)); } diff --git a/designer_form/src/com/fr/design/designer/beans/actions/MoveToBottomAction.java b/designer_form/src/com/fr/design/designer/beans/actions/MoveToBottomAction.java index 2e3041d9ae..9fc69953b8 100644 --- a/designer_form/src/com/fr/design/designer/beans/actions/MoveToBottomAction.java +++ b/designer_form/src/com/fr/design/designer/beans/actions/MoveToBottomAction.java @@ -24,7 +24,7 @@ public class MoveToBottomAction extends FormEditAction { public MoveToBottomAction(FormDesigner t) { super(t); this.setName(Inter.getLocText("FR-Designer_Move_To_Bottom")); - this.setMnemonic('T'); + this.setMnemonic('K'); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/control/to_bottom.png")); this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_OPEN_BRACKET, DEFAULT_MODIFIER + InputEvent.ALT_MASK)); } diff --git a/designer_form/src/com/fr/design/designer/beans/actions/MoveUpAction.java b/designer_form/src/com/fr/design/designer/beans/actions/MoveUpAction.java index 3e214a768a..512b075d9b 100644 --- a/designer_form/src/com/fr/design/designer/beans/actions/MoveUpAction.java +++ b/designer_form/src/com/fr/design/designer/beans/actions/MoveUpAction.java @@ -23,7 +23,7 @@ public class MoveUpAction extends FormEditAction { public MoveUpAction(FormDesigner t) { super(t); this.setName(Inter.getLocText("FR-Designer_Move_Up")); - this.setMnemonic('T'); + this.setMnemonic('F'); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/control/up.png")); this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_CLOSE_BRACKET, DEFAULT_MODIFIER)); } diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRBorderLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRBorderLayoutAdapter.java index a819090ff2..7ebc872025 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRBorderLayoutAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRBorderLayoutAdapter.java @@ -4,6 +4,7 @@ import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; +import com.fr.design.designer.creator.cardlayout.XWCardTagLayout; import com.fr.general.ComparatorUtils; import com.fr.design.designer.beans.ConstraintsGroupModel; import com.fr.design.designer.beans.HoverPainter; @@ -35,6 +36,9 @@ public class FRBorderLayoutAdapter extends AbstractLayoutAdapter { * @param creator 组件 */ public void fix(XCreator creator) { + if(creator.acceptType(XWCardTagLayout.class)){ + creator = (XCreator) creator.getParent(); + } FRBorderLayout layout = (FRBorderLayout)container.getFRLayout(); Object constraints = layout.getConstraints(creator); if (ComparatorUtils.equals(constraints, BorderLayout.NORTH)) { diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java index c293042927..f818c1ee1d 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java @@ -13,6 +13,7 @@ import com.fr.design.designer.creator.XLayoutContainer; import com.fr.design.designer.creator.XWFitLayout; import com.fr.design.designer.creator.cardlayout.XWCardLayout; import com.fr.design.designer.creator.cardlayout.XWCardMainBorderLayout; +import com.fr.design.designer.creator.cardlayout.XWCardTitleLayout; import com.fr.design.designer.creator.cardlayout.XWTabFitLayout; import com.fr.design.designer.properties.FRFitLayoutConstraints; import com.fr.design.designer.properties.FRFitLayoutPropertiesGroupModel; @@ -20,10 +21,13 @@ import com.fr.design.utils.ComponentUtils; import com.fr.form.ui.LayoutBorderStyle; import com.fr.form.ui.container.WAbsoluteLayout; import com.fr.form.ui.container.WLayout; +import com.fr.form.ui.container.WTabDisplayPosition; import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; import com.fr.general.ComparatorUtils; -import java.awt.*; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Rectangle; import java.util.ArrayList; import java.util.List; @@ -281,9 +285,22 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { backupBound.y -= rec.y; XWCardLayout cardLayout = mainLayout.getCardPart(); LayoutBorderStyle style = cardLayout.toData().getBorderStyle(); + XWCardTitleLayout xwCardTitleLayout = mainLayout.getTitlePart(); + Dimension titleDimension = xwCardTitleLayout.getSize(); + // 当tab布局为标题样式时,才需要处理标题栏高度产生的影响 if (ComparatorUtils.equals(style.getType(), LayoutBorderStyle.TITLE)) { - backupBound.y -= WCardMainBorderLayout.TAB_HEIGHT; + WTabDisplayPosition wTabDisplayPosition = xwCardTitleLayout.getDisplayPosition(); + switch (wTabDisplayPosition){ + case TOP_POSITION: + backupBound.y -= titleDimension.height; + break; + case LEFT_POSITION: + backupBound.x -= titleDimension.width; + break; + default: + return backupBound; + } } return backupBound; } 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 850539781d..850b737a36 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 @@ -81,7 +81,9 @@ public class SelectionModel { // 如果父层是scale和title两个专属容器,返回其父层,组件本身是不让被选中的 if (comp != designer.getRootComponent() && comp != designer.getParaComponent()) { XCreator parentContainer = (XCreator) comp.getParent(); - comp = parentContainer.isDedicateContainer() ? parentContainer : comp; + if (parentContainer != null) { + comp = parentContainer.isDedicateContainer() ? parentContainer : comp; + } } if (selection.removeSelectedCreator(comp) || selection.addSelectedCreator(comp)) { designer.getEditListenerTable().fireCreatorModified(comp, DesignerEvent.CREATOR_SELECTED); diff --git a/designer_form/src/com/fr/design/designer/beans/painters/FRBorderLayoutPainter.java b/designer_form/src/com/fr/design/designer/beans/painters/FRBorderLayoutPainter.java index eeac7593f6..2fb2f10f2b 100644 --- a/designer_form/src/com/fr/design/designer/beans/painters/FRBorderLayoutPainter.java +++ b/designer_form/src/com/fr/design/designer/beans/painters/FRBorderLayoutPainter.java @@ -18,6 +18,9 @@ public class FRBorderLayoutPainter extends AbstractPainter { @Override public void paint(Graphics g, int startX, int startY) { + if(hotspot_bounds == null){ + return; + } super.paint(g, startX, startY); int x = hotspot.x; int y = hotspot.y; diff --git a/designer_form/src/com/fr/design/designer/creator/XCreator.java b/designer_form/src/com/fr/design/designer/creator/XCreator.java index 665db751a4..ed234b62ab 100644 --- a/designer_form/src/com/fr/design/designer/creator/XCreator.java +++ b/designer_form/src/com/fr/design/designer/creator/XCreator.java @@ -7,10 +7,10 @@ import com.fr.base.BaseUtils; import com.fr.design.actions.UpdateAction; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.ComponentAdapter; -import com.fr.design.designer.beans.actions.*; import com.fr.design.designer.beans.events.DesignerEditor; import com.fr.design.designer.beans.models.SelectionModel; import com.fr.design.fun.WidgetPropertyUIProvider; +import com.fr.design.gui.imenu.UIPopupMenu; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.*; import com.fr.design.utils.gui.LayoutUtils; @@ -673,7 +673,7 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo */ public JPopupMenu createPopupMenu(FormDesigner formDesigner) { UpdateAction[] actions = formDesigner.getActions(); - JPopupMenu popup = new JPopupMenu(); + JPopupMenu popup = new UIPopupMenu(); for (int i = 0; i < actions.length; i++) { if (i == SHORTS_SEPARATOR_POS) { popup.addSeparator(); diff --git a/designer_form/src/com/fr/design/designer/creator/XCreatorUtils.java b/designer_form/src/com/fr/design/designer/creator/XCreatorUtils.java index 7a041ef4f0..3d289a009c 100644 --- a/designer_form/src/com/fr/design/designer/creator/XCreatorUtils.java +++ b/designer_form/src/com/fr/design/designer/creator/XCreatorUtils.java @@ -237,6 +237,9 @@ public class XCreatorUtils { Container c = creator.getParent(); while (c != null) { XCreator crea = (XCreator) c; + if(crea.acceptType(XWCardTitleLayout.class)){ + return (XLayoutContainer) c.getParent(); + } if (crea.isDedicateContainer()) { return (XLayoutContainer) c.getParent(); } diff --git a/designer_form/src/com/fr/design/designer/creator/XElementCase.java b/designer_form/src/com/fr/design/designer/creator/XElementCase.java index af58fd991a..8ecb2b62ab 100644 --- a/designer_form/src/com/fr/design/designer/creator/XElementCase.java +++ b/designer_form/src/com/fr/design/designer/creator/XElementCase.java @@ -122,7 +122,11 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme if (editor.getFitStateInPC() == 0) { editor.setReportFitAttr(null); } - ReportFitAttrProvider reportFitAttr = editor.getReportFitAttr() == null ? fitAttr : editor.getReportFitAttr(); + ReportFitAttrProvider reportFit = editor.getReportFitAttr(); + if(fitAttr != null){ + reportFit = fitAttr.fitInBrowser() ? editor.getReportFitAttr() : fitAttr; + } + ReportFitAttrProvider reportFitAttr = editor.getReportFitAttr() == null ? fitAttr : reportFit; PropertyDescriptor[] extraEditor = processor.createPropertyDescriptor(this.data.getClass(), reportFitAttr); if (editor.getReportFitAttr() == null) { editor.setReportFitInPc(processor.getFitStateInPC(fitAttr)); diff --git a/designer_form/src/com/fr/design/designer/creator/XWHorizontalBoxLayout.java b/designer_form/src/com/fr/design/designer/creator/XWHorizontalBoxLayout.java index 5844c9abda..215f11325b 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWHorizontalBoxLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWHorizontalBoxLayout.java @@ -8,8 +8,7 @@ import java.awt.Dimension; import java.awt.event.ContainerEvent; import com.fr.design.designer.beans.LayoutAdapter; -import com.fr.design.designer.beans.adapters.layout.FRHorizontalLayoutAdapter; -import com.fr.design.designer.beans.location.Direction; +import com.fr.design.form.layout.FRFlowLayout; import com.fr.design.form.layout.FRHorizontalLayout; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WHorizontalBoxLayout; @@ -20,6 +19,16 @@ import com.fr.form.ui.container.WHorizontalBoxLayout; */ public class XWHorizontalBoxLayout extends XLayoutContainer { + public FRFlowLayout getFrFlowLayout() { + return frFlowLayout; + } + + public void setFrFlowLayout(FRFlowLayout frFlowLayout) { + this.frFlowLayout = frFlowLayout; + } + + private FRFlowLayout frFlowLayout ; + public XWHorizontalBoxLayout(WHorizontalBoxLayout widget, Dimension initSize) { super(widget, initSize); } @@ -46,7 +55,8 @@ public class XWHorizontalBoxLayout extends XLayoutContainer { @Override protected void initLayoutManager() { - this.setLayout(new FRHorizontalLayout(toData().getAlignment(), toData().getHgap(), toData().getVgap())); + this.frFlowLayout = new FRHorizontalLayout(toData().getAlignment(), toData().getHgap(), toData().getVgap()); + this.setLayout(frFlowLayout); } @Override @@ -60,7 +70,7 @@ public class XWHorizontalBoxLayout extends XLayoutContainer { for (int i = 0, count = this.getComponentCount(); i < count; i++) { if (creator == this.getComponent(i)) { wlayout.addWidget(wgt, i); - wlayout.setWidthAtWidget(wgt, creator.getWidth()); + frFlowLayout.componentAdded(e, wlayout); } } this.recalculateChildrenPreferredSize(); @@ -70,7 +80,7 @@ public class XWHorizontalBoxLayout extends XLayoutContainer { protected Dimension calculatePreferredSize(Widget wgt) { // 注意这里计算PreferredSize的时候需要取当前容器的实际大小 // 高度是自适应的,直接就写成0了 - return new Dimension(this.toData().getWidthAtWidget(wgt), 0); + return frFlowLayout.calculatePreferredSize(this.toData(), wgt); } // 在添加的时候需要把可拉伸的方向确定,所以重写了add方法 @@ -80,13 +90,12 @@ public class XWHorizontalBoxLayout extends XLayoutContainer { if (comp == null) { return null; } - XCreator creator = (XCreator) comp; - creator.setDirections(new int[]{Direction.LEFT, Direction.RIGHT}); + frFlowLayout.setDirections(comp); return comp; } @Override public LayoutAdapter getLayoutAdapter() { - return new FRHorizontalLayoutAdapter(this); + return frFlowLayout.getLayoutAdapter(this); } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XCardAddButton.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XCardAddButton.java index 85e26e877c..2de9bbac4c 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XCardAddButton.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XCardAddButton.java @@ -1,6 +1,9 @@ package com.fr.design.designer.creator.cardlayout; -import java.awt.*; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; import java.awt.event.MouseEvent; import javax.swing.Icon; @@ -106,7 +109,7 @@ public class XCardAddButton extends XButton{ FormHierarchyTreePane.getInstance().refreshRoot(); //将焦点切换到新增的tab对应的tabfitLayout上 showNewTab(editingMouseListener,index); - + tagLayout.setTabsAndAdjust(); LayoutUtils.layoutRootContainer(designer.getRootComponent()); } @@ -151,7 +154,6 @@ public class XCardAddButton extends XButton{ titleButton.setCustomStyle(true); titleButton.setShowButton(true); showButton.setBackupParent(tagLayout); - this.tagLayout.setCurrentCard(titleButton); this.tagLayout.setTabFitIndex(index); this.tagLayout.add(showButton); diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XCardSwitchButton.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XCardSwitchButton.java index 04e678029c..294ff0ab15 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XCardSwitchButton.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XCardSwitchButton.java @@ -4,13 +4,12 @@ package com.fr.design.designer.creator.cardlayout; import com.fr.base.BaseUtils; -import com.fr.base.GraphHelper; -import com.fr.base.ScreenResolution; import com.fr.base.background.ColorBackground; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.ComponentAdapter; import com.fr.design.designer.beans.models.SelectionModel; import com.fr.design.designer.creator.XButton; +import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XLayoutContainer; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.gui.ilable.UILabel; @@ -23,17 +22,26 @@ import com.fr.design.utils.gui.LayoutUtils; import com.fr.form.ui.CardSwitchButton; import com.fr.form.ui.LayoutBorderStyle; import com.fr.form.ui.WidgetTitle; +import com.fr.form.ui.container.WTabTextDirection; +import com.fr.form.ui.container.cardlayout.WCardTagLayout; import com.fr.form.ui.container.cardlayout.WTabFitLayout; import com.fr.general.Background; +import com.fr.general.ComparatorUtils; import com.fr.general.FRFont; import com.fr.general.Inter; -import javax.swing.*; -import java.awt.*; +import javax.swing.Action; +import javax.swing.Icon; +import javax.swing.JOptionPane; +import javax.swing.JPopupMenu; +import javax.swing.SwingUtilities; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Point; import java.awt.event.MouseEvent; import java.awt.geom.Rectangle2D; -import java.util.HashMap; -import java.util.Map; /** * @@ -65,8 +73,6 @@ public class XCardSwitchButton extends XButton { // tab按钮里的字体因为按钮内部的布局看起来比正常的要小,加个调整量 private static final int FONT_SIZE_ADJUST = 2; - private static final int SIDE_OFFSET = 57; - private XWCardLayout cardLayout; private XWCardTagLayout tagLayout; @@ -118,6 +124,7 @@ public class XCardSwitchButton extends XButton { public XCardSwitchButton(CardSwitchButton widget, Dimension initSize) { super(widget, initSize); + } public XCardSwitchButton(CardSwitchButton widget, Dimension initSize, @@ -180,7 +187,6 @@ public class XCardSwitchButton extends XButton { ComponentAdapter adapter = AdapterBus.getComponentAdapter(designer, this); editingMouseListener.startEditing(this, adapter.getDesignerEditor(), adapter); } - setTabsAndAdjust(); if(SwingUtilities.isRightMouseButton(e)){ showPopupMenu(editingMouseListener, e, index, maxIndex); } @@ -211,7 +217,7 @@ public class XCardSwitchButton extends XButton { private void deleteCard(XCardSwitchButton button,int index){ String titleName = button.getContentLabel().getText(); int value = JOptionPane.showConfirmDialog(null, Inter.getLocText("FR-Designer_ConfirmDialog_Content") + "“" + titleName + "”", - Inter.getLocText("FR-Designer_ConfirmDialog_Title"),JOptionPane.YES_NO_OPTION); + Inter.getLocText("FR-Designer_ConfirmDialog_Title"), JOptionPane.YES_NO_OPTION); if (value != JOptionPane.OK_OPTION) { return; } @@ -296,7 +302,6 @@ public class XCardSwitchButton extends XButton { public void paintComponent(Graphics g) { super.paintComponent(g); - setTabsAndAdjust(); Graphics2D g2d = (Graphics2D) g; drawBackground(); drawTitle(); @@ -334,7 +339,22 @@ public class XCardSwitchButton extends XButton { //画标题 private void drawTitle() { CardSwitchButton button = (CardSwitchButton) this.toData(); - this.setButtonText(button.getText()); + String titleText = button.getText(); + if(tagLayout != null){ + WCardTagLayout wCardTagLayout = (WCardTagLayout) tagLayout.toData(); + StringBuilder titleString = new StringBuilder(); + //竖向处理 + if(ComparatorUtils.equals(wCardTagLayout.getTextDirection(), WTabTextDirection.TEXT_VER_DIRECTION)){ + titleString.append(""); + for(int i = 0; i < titleText.length(); i++){ + titleString.append(titleText.charAt(i)).append("
"); + } + titleString.append(""); + titleText = titleString.toString(); + } + } + + this.setButtonText(titleText); if (this.cardLayout == null) { initRelateLayout(this); } @@ -383,64 +403,37 @@ public class XCardSwitchButton extends XButton { public XLayoutContainer getTopLayout() { return this.getBackupParent().getTopLayout(); } - - public void setTabsAndAdjust() { - if (this.tagLayout == null) { - return; - } - int tabLength = this.tagLayout.getComponentCount(); - Map cardWidth = new HashMap<>(); - Map cardHeight = new HashMap<>(); - for (int i = 0; i < tabLength; i++) { - XCardSwitchButton temp = (XCardSwitchButton) this.tagLayout.getComponent(i); - CardSwitchButton tempCard = (CardSwitchButton) temp.toData(); - String tempText = tempCard.getText(); - Font f = tempCard.getFont(); - FontMetrics fm = GraphHelper.getFontMetrics(f); - cardWidth.put(i,fm.stringWidth(tempText)); - cardHeight.put(i,fm.getHeight()); - } - adjustTabs(tabLength, cardWidth, cardHeight); - } - - public void adjustTabs(int tabLength, Map width, Map height) { - if (width == null) { - return; - } - int tempX = 0; - for (int i = 0; i < tabLength; i++) { - Rectangle rectangle = this.tagLayout.getComponent(i).getBounds(); - Integer cardWidth = width.get(i) + SIDE_OFFSET; - //先用这边的固定高度 - Integer cardHeight = DEFAULT_BUTTON_HEIGHT; - rectangle.setSize(cardWidth, cardHeight); - rectangle.setBounds(tempX, 0, cardWidth, cardHeight); - tempX += cardWidth; - this.tagLayout.getComponent(i).setBounds(rectangle); - Dimension dimension = new Dimension(); - dimension.setSize(cardWidth, cardHeight); - XCardSwitchButton temp = (XCardSwitchButton) this.tagLayout.getComponent(i); - CardSwitchButton cardSwitchButton = (CardSwitchButton) temp.toData(); - FRFont frFont = cardSwitchButton.getFont(); - UILabel label = temp.getContentLabel(); - label.setSize(dimension); - label.setFont(frFont.applyResolutionNP(ScreenResolution.getScreenResolution())); - label.setForeground(frFont.getForeground()); - temp.setContentLabel(label); - temp.setSize(dimension); - temp.setPreferredSize(new Dimension(cardWidth, cardHeight)); - } - } - + + @Override public void doLayout() { super.doLayout(); - setTabsAndAdjust(); } + + /** + * 控件树里需要隐藏xwcardmainLayout,返回其子组件xwcardLayout; + * 标题样式下,this.getComponent(1)==xwcardLayout + * 标准样式下,this.getComponent(0)==xwcardLayout + * @return 子组件xwcardLayout + */ + @Override + public XCreator getXCreator() { + //根据index获取对应的tabFitLayout + int index = ((CardSwitchButton) this.toData()).getIndex(); + return (XCreator) cardLayout.getComponent(index); + } + + @Override protected void initXCreatorProperties() { super.initXCreatorProperties(); label = this.getContentLabel(); } + + public void firePropertyChange() { + super.firePropertyChange(); + tagLayout.setTabsAndAdjust(); + repaint(); + } } \ No newline at end of file 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 4c54efd4aa..6beadc2920 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 @@ -8,7 +8,11 @@ import com.fr.design.designer.beans.LayoutAdapter; import com.fr.design.designer.beans.adapters.layout.FRCardLayoutAdapter; import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.design.designer.beans.models.SelectionModel; -import com.fr.design.designer.creator.*; +import com.fr.design.designer.creator.CRPropertyDescriptor; +import com.fr.design.designer.creator.XCreator; +import com.fr.design.designer.creator.XCreatorUtils; +import com.fr.design.designer.creator.XLayoutContainer; +import com.fr.design.designer.creator.XWidgetCreator; import com.fr.design.form.layout.FRCardLayout; import com.fr.design.form.util.XCreatorConstants; import com.fr.design.mainframe.FormDesigner; @@ -16,7 +20,11 @@ import com.fr.design.mainframe.WidgetPropertyPane; import com.fr.design.mainframe.widget.editors.BooleanEditor; import com.fr.design.mainframe.widget.editors.CardTagWLayoutBorderStyleEditor; import com.fr.design.mainframe.widget.editors.DoubleEditor; -import com.fr.form.ui.*; +import com.fr.form.ui.CardAddButton; +import com.fr.form.ui.CardSwitchButton; +import com.fr.form.ui.LayoutBorderStyle; +import com.fr.form.ui.Widget; +import com.fr.form.ui.WidgetTitle; import com.fr.form.ui.container.WBorderLayout; import com.fr.form.ui.container.WCardLayout; import com.fr.form.ui.container.WLayout; @@ -30,7 +38,9 @@ import com.fr.stable.Constants; import com.fr.stable.core.PropertyChangeAdapter; import javax.swing.border.Border; -import java.awt.*; +import java.awt.CardLayout; +import java.awt.Color; +import java.awt.Dimension; import java.awt.event.ContainerEvent; import java.beans.IntrospectionException; @@ -67,7 +77,7 @@ public class XWCardLayout extends XLayoutContainer { * */ public String createDefaultName() { - return "tabpane"; + return "cardlayout"; } /** @@ -146,10 +156,12 @@ public class XWCardLayout extends XLayoutContainer { //主结构是一个borderlayout, 标签部分是north, card部分为center WCardMainBorderLayout border = new WCardMainBorderLayout(); XWCardMainBorderLayout xMainBorder = new XWCardMainBorderLayout(border, dimension); + //将子WCardBorder的style设置到父容器上 + LayoutBorderStyle style = (this.toData()).getBorderStyle(); + border.setBorderStyle(style); this.setBackupParent(xMainBorder); - XWCardTitleLayout titlePart = this.initTitlePart(widgetName, xMainBorder); - xMainBorder.addTitlePart(titlePart); + xMainBorder.addTitlePart(titlePart, WBorderLayout.NORTH); return xMainBorder; } @@ -188,7 +200,7 @@ public class XWCardLayout extends XLayoutContainer { private XWCardTagLayout initTagPart(String widgetName, XWCardTitleLayout xTitle){ Dimension dimension = new Dimension(); //放置标题的tab流式布局 - WCardTagLayout tagLayout = new WCardTagLayout(); + WCardTagLayout tagLayout = new WCardTagLayout("tabpane" + widgetName.replaceAll(createDefaultName(), "")); XWCardTagLayout xTag = new XWCardTagLayout(tagLayout, dimension, this); xTag.setBackupParent(xTitle); 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 57a5190807..70ed5984d5 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 @@ -1,5 +1,5 @@ /** - * + * */ package com.fr.design.designer.creator.cardlayout; @@ -15,25 +15,31 @@ import com.fr.design.mainframe.EditingMouseListener; import com.fr.design.mainframe.FormDesigner; import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import com.fr.form.ui.container.WBorderLayout; +import com.fr.form.ui.container.WTabDisplayPosition; import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; import com.fr.general.IOUtils; -import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import com.fr.general.Inter; - -import java.awt.*; +import java.awt.AlphaComposite; +import java.awt.Color; +import java.awt.Component; +import java.awt.Composite; +import java.awt.Cursor; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.util.ArrayList; /** * card布局主体框架 - * + * * * * @date: 2014-12-9-下午9:59:31 */ public class XWCardMainBorderLayout extends XWBorderLayout{ - + private static final int CENTER = 1; private static final int NORTH = 0; public static final Color DEFAULT_BORDER_COLOR = new Color(210,210,210); @@ -43,7 +49,7 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ private static final int EDIT_BTN_WIDTH = 60; private static final int EDIT_BTN_HEIGHT = 24; - + /** * 构造函数 */ @@ -53,38 +59,54 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ /** * 获取当前组件里的控件 - * + * * @return 控件 - * + * * * @date 2014-12-10-下午1:46:33 - * + * */ public WCardMainBorderLayout toData() { return (WCardMainBorderLayout) super.toData(); } - + /** * 添加标题区域 - * + * * @param title 标题区域 - * + * * * @date 2014-12-10-下午1:50:56 - * + * */ - public void addTitlePart(XWCardTitleLayout title){ - this.add(title, WBorderLayout.NORTH); + public void addTitlePart(XWCardTitleLayout title, String position){ + toData().setTabPosition(position); + this.add(title, position); } - + + public void add(Component comp, String position) { + super.add(comp, position); + } + + /** + * 切换到非添加状态 + * + * @return designer 表单设计器 + */ + public void stopAddingState(FormDesigner designer){ + designer.stopAddingState(); + return; + } + + /** * 添加card区域 - * + * * @param card card区域 - * + * * * @date 2014-12-10-下午1:50:37 - * + * */ public void addCardPart(XWCardLayout card){ this.add(card, WBorderLayout.CENTER); @@ -93,11 +115,17 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ public XWCardLayout getCardPart(){ return this.getComponentCount() == TITLE_STYLE ? (XWCardLayout)this.getComponent(CENTER) : (XWCardLayout)this.getComponent(NORTH); } - + public XWCardTitleLayout getTitlePart(){ + Component[] components = this.getComponents(); + for(Component component : components){ + if(component instanceof XWCardTitleLayout){ + return (XWCardTitleLayout)component; + } + } return (XWCardTitleLayout)this.getComponent(NORTH); } - + /** * 控件树里需要隐藏xwcardmainLayout,返回其子组件xwcardLayout; * 标题样式下,this.getComponent(1)==xwcardLayout @@ -106,15 +134,9 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ */ @Override public XCreator getXCreator() { - switch(this.getComponentCount()){ - case TITLE_STYLE: - return (XCreator)this.getComponent(TITLE_STYLE-1); - case NORMAL_STYLE: - return (XCreator)this.getComponent(NORMAL_STYLE-1); - default: - return this; - } + return this; } + /** * 控件树不显示此组件 * @param path 控件树list @@ -122,7 +144,7 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ public void notShowInComponentTree(ArrayList path) { path.remove(LAYOUT_INDEX); } - + @Override public ArrayList getTargetChildrenList() { ArrayList tabLayoutList = new ArrayList(); @@ -133,7 +155,7 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ } return tabLayoutList; } - + /** * 重新调整子组件的宽度 * @param width 宽度 @@ -164,7 +186,7 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ } } } - + /** * 重新调整子组件的高度 * @param height 高度 @@ -198,7 +220,7 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ tabLayout.adjustCreatorsHeight(percent); } } - + } public void paint(Graphics g) { @@ -275,4 +297,35 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ return this; } } + + /** + * data属性改变触发其他操作 + * + */ + public void firePropertyChange(){ + getCardPart().initStyle(); + } + + + public void resetTabDisplayPosition(WTabDisplayPosition wTabDisplayPosition){ + XWCardTitleLayout xwCardTitleLayout = getTitlePart(); + xwCardTitleLayout.resetNewBtnPosition(wTabDisplayPosition); + switch (wTabDisplayPosition){ + case TOP_POSITION: + this.addTitlePart(getTitlePart(),WBorderLayout.NORTH); + break; + case LEFT_POSITION: + this.addTitlePart(getTitlePart(),WBorderLayout.WEST); + break; + case BOTTOM_POSITION: + this.addTitlePart(getTitlePart(),WBorderLayout.SOUTH); + break; + case RIGHT_POSITION: + this.addTitlePart(getTitlePart(),WBorderLayout.EAST); + break; + default: + break; + } + this.addCardPart((XWCardLayout)this.getComponent(0)); + } } \ No newline at end of file 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 114ce3240c..b91953e11f 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 @@ -3,26 +3,47 @@ */ package com.fr.design.designer.creator.cardlayout; +import java.awt.Component; import java.awt.Dimension; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Rectangle; import java.awt.event.ContainerEvent; import java.awt.event.MouseEvent; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; import javax.swing.border.Border; +import com.fr.base.GraphHelper; +import com.fr.base.ScreenResolution; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.ComponentAdapter; +import com.fr.design.designer.beans.LayoutAdapter; +import com.fr.design.designer.beans.adapters.layout.FRHorizontalLayoutAdapter; +import com.fr.design.designer.beans.adapters.layout.FRVerticalLayoutAdapter; import com.fr.design.designer.beans.models.SelectionModel; +import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XCreatorUtils; import com.fr.design.designer.creator.XLayoutContainer; import com.fr.design.designer.creator.XWHorizontalBoxLayout; import com.fr.design.designer.creator.XWidgetCreator; +import com.fr.design.form.layout.FRFlowLayout; +import com.fr.design.form.layout.FRHorizontalLayout; +import com.fr.design.form.layout.FRVerticalLayout; +import com.fr.design.gui.ilable.UILabel; 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; +import com.fr.form.ui.container.WTabDisplayPosition; import com.fr.form.ui.container.cardlayout.WCardTagLayout; import com.fr.form.ui.container.cardlayout.WTabFitLayout; +import com.fr.general.ComparatorUtils; +import com.fr.general.FRFont; /** * @date: 2014-11-25-下午3:11:14 @@ -39,6 +60,12 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { private int tabFitIndex = 0; private CardSwitchButton currentCard; + private static final int WIDTH_SIDE_OFFSET = 57; + + private static final int HEIGHT_SIDE_OFFSET = 20; + + private static final int DEFAULT_BUTTON_HEIGHT = 40; + public CardSwitchButton getCurrentCard() { return currentCard; } @@ -75,14 +102,14 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { public XWCardTagLayout(WCardTagLayout widget, Dimension initSize) { super(widget, initSize); + initLayoutManager(); } /** * 构造函数 */ public XWCardTagLayout(WCardTagLayout widget, Dimension initSize, XWCardLayout cardLayout) { - super(widget, initSize); - + this(widget, initSize); this.cardLayout = cardLayout; } @@ -109,19 +136,20 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { WTabFitLayout fitLayout = new WTabFitLayout(widgetName, tabFitIndex, currentCard); fitLayout.setTabNameIndex(getTabNameIndex()); XWTabFitLayout tabFitLayout = new XWTabFitLayout(fitLayout, new Dimension()); + tabFitLayout.setxCardSwitchButton((XCardSwitchButton)this.getComponent(0)); tabFitLayout.setBackupParent(cardLayout); cardLayout.add(tabFitLayout, widgetName); this.cardLayout.toData().setShowIndex(index); cardLayout.showCard(); } + private void initCardLayout() { XWCardTitleLayout titleLayout = (XWCardTitleLayout) this.getBackupParent(); XWCardMainBorderLayout borderLayout = (XWCardMainBorderLayout) titleLayout.getBackupParent(); this.cardLayout = borderLayout.getCardPart(); } - /** * 将WLayout转换为XLayoutContainer */ @@ -132,6 +160,7 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { for (int i = 0; i < layout.getWidgetCount(); i++) { Widget wgt = layout.getWidget(i); if (wgt != null) { + initLayoutManager(); XWidgetCreator comp = (XWidgetCreator) XCreatorUtils.createXCreator(wgt, calculatePreferredSize(wgt)); this.add(comp, i); comp.setBackupParent(this); @@ -140,6 +169,10 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { isRefreshing = false; } + public String createDefaultName() { + return "tabpane"; + } + /** * 切换到非添加状态 * @@ -195,15 +228,9 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { FormDesigner designer = editingMouseListener.getDesigner(); SelectionModel selectionModel = editingMouseListener.getSelectionModel(); - XWCardTitleLayout titleLayout = (XWCardTitleLayout) this.getBackupParent(); - if (titleLayout != null) { - XWCardMainBorderLayout mainLayout = (XWCardMainBorderLayout) titleLayout.getBackupParent(); - if (mainLayout != null) { - XWCardLayout cardLayout = mainLayout.getCardPart(); - selectionModel.setSelectedCreator(cardLayout); - } + if (e.getClickCount() <= 1) { + selectionModel.selectACreatorAtMouseEvent(e); } - if (editingMouseListener.stopEditing()) { if (this != designer.getRootComponent()) { ComponentAdapter adapter = AdapterBus.getComponentAdapter(designer, this); @@ -212,8 +239,198 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { } } + public int[] getDirections() { + return ((XCreator)getParent()).getDirections(); + } + + public Rectangle getBounds() { + return this.getParent().getBounds(); + } + @Override public XLayoutContainer getTopLayout() { return this.getBackupParent().getTopLayout(); } + + public void notShowInComponentTree(ArrayList path) { + path.remove(0); + } + + + @Override + public void doLayout() { + //设置布局 + super.doLayout(); + } + + @Override + protected void initLayoutManager() { + FRFlowLayout frFlowLayout; + if (isHori()) { + frFlowLayout = new FRHorizontalLayout(((WCardTagLayout)toData()).getAlignment(), toData().getHgap(), toData().getVgap()); + }else{ + frFlowLayout = new FRVerticalLayout(((WCardTagLayout)toData()).getAlignment(), toData().getHgap(), toData().getVgap()); + } + this.setFrFlowLayout(frFlowLayout); + this.setLayout(frFlowLayout); + } + + + @Override + public LayoutAdapter getLayoutAdapter() { + if (isHori()) { + return new FRHorizontalLayoutAdapter(this); + }else{ + return new FRVerticalLayoutAdapter(this); + } + + } + + private boolean isHori(){ + WTabDisplayPosition displayPosition = ((WCardTagLayout)this.toData()).getDisplayPosition(); + if(displayPosition == null){ + displayPosition = WTabDisplayPosition.TOP_POSITION; + } + return ComparatorUtils.equals(displayPosition, WTabDisplayPosition.TOP_POSITION) || ComparatorUtils.equals(displayPosition, WTabDisplayPosition.BOTTOM_POSITION); + } + + + /** + * data属性改变触发其他操作 + * + */ + public void firePropertyChange() { + WCardTagLayout wCardTagLayout = (WCardTagLayout) this.toData(); + ((XWCardMainBorderLayout) getTopLayout()).resetTabDisplayPosition(wCardTagLayout.getDisplayPosition()); + //重置内部组件的大小和位置 + initLayoutManager(); + setTabsAndAdjust(); + repaint(); + } + + + public void setTabsAndAdjust() { + WCardTagLayout wCardTagLayout = (WCardTagLayout)this.toData(); + int tabLength = this.getComponentCount(); + Map cardWidth = new HashMap<>(); + Map cardHeight = new HashMap<>(); + for (int i = 0; i < tabLength; i++) { + XCardSwitchButton temp = (XCardSwitchButton) this.getComponent(i); + CardSwitchButton tempCard = (CardSwitchButton) temp.toData(); + String tempText = tempCard.getText(); + Font f = tempCard.getFont(); + FontMetrics fm = GraphHelper.getFontMetrics(f); + + switch (wCardTagLayout.getTextDirection()){ + case TEXT_HORI_DERECTION: + cardWidth.put(i,fm.stringWidth(tempText)); + cardHeight.put(i,fm.getHeight()); + break; + case TEXT_VER_DIRECTION: + int perHeight = fm.getHeight(); + int wordCount = tempText.length(); + if(tempText.length() !=0 ){ + cardWidth.put(i,fm.stringWidth(tempText)/tempText.length()); + }else { + cardWidth.put(i, 0); + } + cardHeight.put(i,(perHeight+3)*wordCount); + break; + default: + break; + } + } + if(isHori()){ + adjustTabsH(tabLength, cardWidth, cardHeight); + }else { + adjustTabsV(tabLength, cardWidth, cardHeight); + } + } + + public void adjustTabsH(int tabLength, Map width, Map height) { + if (width == null) { + return; + } + //调整XWCardTagLayout的高度 + int tempX = 0; + int maxHeight = DEFAULT_BUTTON_HEIGHT; + for (int i = 0; i < tabLength; i++) { + + Rectangle rectangle = this.getComponent(i).getBounds(); + Integer cardWidth = width.get(i) + WIDTH_SIDE_OFFSET; + Integer cardHeight = height.get(i)+ HEIGHT_SIDE_OFFSET ; + if(cardHeight < DEFAULT_BUTTON_HEIGHT){ + cardHeight = DEFAULT_BUTTON_HEIGHT; + } + maxHeight = maxHeight > cardHeight ? maxHeight : cardHeight ; + rectangle.setBounds(tempX, 0, cardWidth, cardHeight); + tempX += cardWidth; + XCardSwitchButton temp = (XCardSwitchButton) this.getComponent(i); + setTabBtnSize(cardWidth, cardHeight, temp); + } + + FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner(); + XLayoutContainer parent = this.getBackupParent(); + Rectangle parentBounds = new Rectangle(parent.getBounds()); + parentBounds.height = maxHeight; + parent.setBounds(parentBounds); + LayoutAdapter layoutAdapter = AdapterBus.searchLayoutAdapter(formDesigner, parent); + if (layoutAdapter != null) { + parent.setBackupBound(parent.getBounds()); + layoutAdapter.fix(parent); + } + } + + public void setTabBtnSize(int cardWidth, int cardHeight, XCardSwitchButton temp){ + Dimension dimension = new Dimension(); + dimension.setSize(cardWidth, cardHeight); + CardSwitchButton cardSwitchButton = (CardSwitchButton) temp.toData(); + FRFont frFont = cardSwitchButton.getFont(); + UILabel label = temp.getContentLabel(); + label.setSize(dimension); + label.setFont(frFont.applyResolutionNP(ScreenResolution.getScreenResolution())); + label.setForeground(frFont.getForeground()); + temp.setContentLabel(label); + temp.setSize(dimension); + temp.setPreferredSize(new Dimension(cardWidth, cardHeight)); + } + + + public void adjustTabsV(int tabLength, Map width, Map height) { + if (width == null) { + return; + } + int tempY = 0; + int maxWidth = DEFAULT_BUTTON_HEIGHT; + for (int i = 0; i < tabLength; i++) { + Rectangle rectangle = this.getComponent(i).getBounds(); + Integer cardWidth = width.get(i) + WIDTH_SIDE_OFFSET; + maxWidth = maxWidth > cardWidth ? maxWidth : cardWidth; + //先用这边的固定高度 + 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); + setTabBtnSize(cardWidth, cardHeight, temp); + } + + FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner(); + XLayoutContainer parent = this.getBackupParent(); + Rectangle parentBounds = new Rectangle(parent.getBounds()); + parentBounds.width = maxWidth; + parent.setBounds(parentBounds); + 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/XWCardTitleLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTitleLayout.java index 1514ed4034..d835012038 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTitleLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTitleLayout.java @@ -11,6 +11,7 @@ import javax.swing.border.Border; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.ComponentAdapter; import com.fr.design.designer.beans.models.SelectionModel; +import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XCreatorUtils; import com.fr.design.designer.creator.XLayoutContainer; import com.fr.design.designer.creator.XWBorderLayout; @@ -19,6 +20,8 @@ import com.fr.design.mainframe.EditingMouseListener; import com.fr.design.mainframe.FormDesigner; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WBorderLayout; +import com.fr.form.ui.container.WTabDisplayPosition; +import com.fr.form.ui.container.cardlayout.WCardTagLayout; import com.fr.form.ui.container.cardlayout.WCardTitleLayout; /** @@ -43,6 +46,11 @@ public class XWCardTitleLayout extends XWBorderLayout { public XWCardTitleLayout(WCardTitleLayout widget, Dimension initSize) { super(widget, initSize); } + + + public WTabDisplayPosition getDisplayPosition(){ + return ((WCardTagLayout)this.getTagPart().toData()).getDisplayPosition(); + } /** * 将WLayout转换为XLayoutContainer @@ -102,6 +110,29 @@ public class XWCardTitleLayout extends XWBorderLayout { public void addNewButton(XCardAddButton addBtn){ this.add(addBtn, WBorderLayout.EAST); } + + public void resetNewBtnPosition(WTabDisplayPosition wTabDisplayPosition){ + XCardAddButton xCardAddButton = (XCardAddButton) this.getComponent(0); + switch (wTabDisplayPosition){ + case TOP_POSITION: + this.add(xCardAddButton, WBorderLayout.EAST); + break; + case LEFT_POSITION: + this.add(xCardAddButton, WBorderLayout.SOUTH); + break; + case BOTTOM_POSITION: + this.add(xCardAddButton, WBorderLayout.EAST); + break; + case RIGHT_POSITION: + this.add(xCardAddButton, WBorderLayout.SOUTH); + break; + default: + break; + } + //需要重新添加一次保证组件顺序不变(重新初始化CardTagLayout改变内部布局) + XWCardTagLayout xwCardTagLayout = (XWCardTagLayout) this.getComponent(0); + this.addTagPart(xwCardTagLayout); + } /** * 切换到非添加状态 @@ -134,10 +165,8 @@ public class XWCardTitleLayout extends XWBorderLayout { FormDesigner designer = editingMouseListener.getDesigner(); SelectionModel selectionModel = editingMouseListener.getSelectionModel(); - XWCardMainBorderLayout mainLayout = (XWCardMainBorderLayout) this.getBackupParent(); - if(mainLayout != null){ - XWCardLayout cardLayout = mainLayout.getCardPart(); - selectionModel.setSelectedCreator(cardLayout); + if (e.getClickCount() <= 1) { + selectionModel.selectACreatorAtMouseEvent(e); } if (editingMouseListener.stopEditing()) { @@ -152,4 +181,15 @@ public class XWCardTitleLayout extends XWBorderLayout { public XLayoutContainer getTopLayout() { return this.getBackupParent().getTopLayout(); } + + public String createDefaultName() { + return "tabpane"; + } + + + @Override + public XCreator getXCreator() { + return (XCreator)this.getComponent(1); + } + } \ 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 42011c3063..415d1637ad 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 @@ -1,5 +1,6 @@ package com.fr.design.designer.creator.cardlayout; +import com.fr.base.GraphHelper; import com.fr.base.background.ColorBackground; import com.fr.design.designer.beans.LayoutAdapter; import com.fr.design.designer.beans.adapters.layout.FRTabFitLayoutAdapter; @@ -37,6 +38,9 @@ import java.beans.IntrospectionException; public class XWTabFitLayout extends XWFitLayout { private static final int MIN_SIZE = 1; + + private static final int WIDTH_SIDE_OFFSET = 57; + // tab布局在拖拽导致的缩放里(含间隔时),如果拖拽宽高大于组件宽高,会导致调整的时候找不到原来的组件 // 这里先将拖拽之前的宽高先做备份 private static final Color NORMAL_GRAL = new Color(236,236,236); @@ -539,6 +543,15 @@ public class XWTabFitLayout extends XWFitLayout { public void firePropertyChange(){ checkButonType(); + //根据字体长度设置tab宽度 + setCardSwitchBtnSize(); + XWCardLayout cardLayout = (XWCardLayout) this.getBackupParent(); + XWCardMainBorderLayout mainLayout = (XWCardMainBorderLayout) cardLayout.getBackupParent(); + XWCardTitleLayout titleLayout = mainLayout.getTitlePart(); +// //放置tab按钮的tagLayout + XWCardTagLayout tagLayout = titleLayout.getTagPart(); + tagLayout.setTabsAndAdjust(); + initialBackground = ((WTabFitLayout) data).getInitialBackground(); overBackground = ((WTabFitLayout) data).getOverBackground(); clickBackground = ((WTabFitLayout)data).getClickBackground(); @@ -554,4 +567,14 @@ public class XWTabFitLayout extends XWFitLayout { cardSwitchButton.setClickBackground(clickBackground); } } + + public void setCardSwitchBtnSize(){ + CardSwitchButton cardSwitchButton = (CardSwitchButton) xCardSwitchButton.toData(); + Font f = cardSwitchButton.getFont(); + FontMetrics fm = GraphHelper.getFontMetrics(f); + int width = fm.stringWidth(cardSwitchButton.getText())+ WIDTH_SIDE_OFFSET; + xCardSwitchButton.setPreferredSize(new Dimension(width, xCardSwitchButton.getHeight())); + } + + } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/treeview/ComponentTreeCellRenderer.java b/designer_form/src/com/fr/design/designer/treeview/ComponentTreeCellRenderer.java index 27db77a98c..8ba77b8168 100644 --- a/designer_form/src/com/fr/design/designer/treeview/ComponentTreeCellRenderer.java +++ b/designer_form/src/com/fr/design/designer/treeview/ComponentTreeCellRenderer.java @@ -6,6 +6,7 @@ import java.awt.Dimension; import javax.swing.Icon; import com.fr.design.constants.UIConstants; +import com.fr.design.designer.creator.cardlayout.XWCardLayout; import com.fr.design.gui.ilable.UILabel; import javax.swing.JTree; import javax.swing.tree.DefaultTreeCellRenderer; @@ -23,7 +24,14 @@ public class ComponentTreeCellRenderer extends DefaultTreeCellRenderer { boolean leaf, int row, boolean hasFocus) { super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); if (value instanceof XCreator) { - setText(((XCreator) value).toData().getWidgetName()); + String name = ((XCreator) value).toData().getWidgetName(); + //树节点上不显示此控件 + if(value instanceof XWCardLayout){ + this.setSize(new Dimension(0, 0)); + this.setPreferredSize(new Dimension(0, 0)); + return this; + } + setText(name); Icon icon = XCreatorUtils.getCreatorIcon((XCreator) value); if (icon != null) { setIcon(icon); diff --git a/designer_form/src/com/fr/design/form/layout/FRFlowLayout.java b/designer_form/src/com/fr/design/form/layout/FRFlowLayout.java index 8c048f8d56..b06a6d6eb5 100644 --- a/designer_form/src/com/fr/design/form/layout/FRFlowLayout.java +++ b/designer_form/src/com/fr/design/form/layout/FRFlowLayout.java @@ -1,10 +1,16 @@ package com.fr.design.form.layout; +import com.fr.design.designer.beans.LayoutAdapter; +import com.fr.design.designer.creator.XWHorizontalBoxLayout; +import com.fr.form.ui.Widget; +import com.fr.form.ui.container.WHorizontalBoxLayout; + import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.Insets; import java.awt.LayoutManager; +import java.awt.event.ContainerEvent; public abstract class FRFlowLayout implements LayoutManager, FRLayoutManager, java.io.Serializable { @@ -52,6 +58,24 @@ public abstract class FRFlowLayout implements LayoutManager, FRLayoutManager, ja protected abstract void moveComponents(Container target, Insets insets, int total); + public void componentAdded(ContainerEvent e, WHorizontalBoxLayout wlayout){ + + } + + public Dimension calculatePreferredSize(WHorizontalBoxLayout wlayout, Widget widget){ + return new Dimension(); + } + + public void setDirections(Component component){ + + } + + public abstract LayoutAdapter getLayoutAdapter(XWHorizontalBoxLayout xwHorizontalBoxLayout) ; + + public void adjustComponents(Component component){ + + } + @Override public void addLayoutComponent(String name, Component comp) { diff --git a/designer_form/src/com/fr/design/form/layout/FRHorizontalLayout.java b/designer_form/src/com/fr/design/form/layout/FRHorizontalLayout.java index f5795d35d3..7f6a24ae16 100644 --- a/designer_form/src/com/fr/design/form/layout/FRHorizontalLayout.java +++ b/designer_form/src/com/fr/design/form/layout/FRHorizontalLayout.java @@ -3,9 +3,20 @@ */ package com.fr.design.form.layout; +import com.fr.design.designer.beans.LayoutAdapter; +import com.fr.design.designer.beans.adapters.layout.FRHorizontalLayoutAdapter; +import com.fr.design.designer.beans.location.Direction; +import com.fr.design.designer.creator.XCreator; +import com.fr.design.designer.creator.XWHorizontalBoxLayout; +import com.fr.design.designer.creator.XWidgetCreator; +import com.fr.form.ui.Widget; +import com.fr.form.ui.container.WHorizontalBoxLayout; + import java.awt.Component; import java.awt.Container; +import java.awt.Dimension; import java.awt.Insets; +import java.awt.event.ContainerEvent; /** * @author richer @@ -70,4 +81,29 @@ public class FRHorizontalLayout extends FRFlowLayout { } return total; } + + public void componentAdded(ContainerEvent e, WHorizontalBoxLayout wlayout){ + XWidgetCreator creator = (XWidgetCreator) e.getChild(); + Widget wgt = creator.toData(); + wlayout.setWidthAtWidget(wgt, creator.getWidth()); + } + + public Dimension calculatePreferredSize(WHorizontalBoxLayout wlayout, Widget widget){ + return new Dimension(wlayout.getWidthAtWidget(widget), 0); + } + + + public void setDirections(Component component){ + XCreator creator = (XCreator) component; + creator.setDirections(new int[]{Direction.LEFT, Direction.RIGHT}); + } + + public LayoutAdapter getLayoutAdapter(XWHorizontalBoxLayout xwHorizontalBoxLayout){ + return new FRHorizontalLayoutAdapter(xwHorizontalBoxLayout); + } + + public void adjustComponents(Component component){ + + } + } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/form/layout/FRVerticalLayout.java b/designer_form/src/com/fr/design/form/layout/FRVerticalLayout.java index 9201773817..3783a0e413 100644 --- a/designer_form/src/com/fr/design/form/layout/FRVerticalLayout.java +++ b/designer_form/src/com/fr/design/form/layout/FRVerticalLayout.java @@ -3,9 +3,20 @@ */ package com.fr.design.form.layout; +import com.fr.design.designer.beans.LayoutAdapter; +import com.fr.design.designer.beans.adapters.layout.FRVerticalLayoutAdapter; +import com.fr.design.designer.beans.location.Direction; +import com.fr.design.designer.creator.XCreator; +import com.fr.design.designer.creator.XWHorizontalBoxLayout; +import com.fr.design.designer.creator.XWidgetCreator; +import com.fr.form.ui.Widget; +import com.fr.form.ui.container.WHorizontalBoxLayout; + import java.awt.Component; import java.awt.Container; +import java.awt.Dimension; import java.awt.Insets; +import java.awt.event.ContainerEvent; /** @@ -73,4 +84,27 @@ public class FRVerticalLayout extends FRFlowLayout { } return total; } + + + public void componentAdded(ContainerEvent e, WHorizontalBoxLayout wlayout){ + XWidgetCreator creator = (XWidgetCreator) e.getChild(); + Widget wgt = creator.toData(); + wlayout.setWidthAtWidget(wgt, creator.getHeight()); + } + + public Dimension calculatePreferredSize(WHorizontalBoxLayout wlayout, Widget widget){ + return new Dimension(0, wlayout.getWidthAtWidget(widget)); + } + + + public void setDirections(Component component){ + XCreator creator = (XCreator) component; + creator.setDirections(new int[]{Direction.TOP, Direction.BOTTOM}); + } + + public LayoutAdapter getLayoutAdapter(XWHorizontalBoxLayout xwHorizontalBoxLayout){ + return new FRVerticalLayoutAdapter(xwHorizontalBoxLayout); + } + + } \ No newline at end of file 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 a797f84cd3..e49416356e 100644 --- a/designer_form/src/com/fr/design/gui/xpane/CardTagLayoutBorderPane.java +++ b/designer_form/src/com/fr/design/gui/xpane/CardTagLayoutBorderPane.java @@ -4,19 +4,11 @@ package com.fr.design.gui.xpane; import java.awt.BorderLayout; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; import javax.swing.BorderFactory; import javax.swing.JComponent; import javax.swing.JPanel; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; - import com.fr.base.Utils; -import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; @@ -25,14 +17,9 @@ import com.fr.design.gui.style.FRFontPane; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; -import com.fr.design.mainframe.JForm; -import com.fr.design.mainframe.JTemplate; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.form.ui.LayoutBorderStyle; -import com.fr.form.ui.WidgetTitle; -import com.fr.general.FRFont; import com.fr.general.Inter; -import com.fr.stable.Constants; /** * CardTagLayoutBorderPane Pane. @@ -41,7 +28,8 @@ public class CardTagLayoutBorderPane extends LayoutBorderPane { public CardTagLayoutBorderPane(){ initComponents(); } - + + protected UIScrollPane initRightBottomPane(){ this.setFontSizeComboBox(new UIComboBox(FRFontPane.FONT_SIZES)); this.setFontNameComboBox(new UIComboBox(Utils.getAvailableFontFamilyNames4Report())); @@ -90,66 +78,35 @@ public class CardTagLayoutBorderPane extends LayoutBorderPane { JPanel rightPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); defaultPane.add(rightPane, BorderLayout.EAST); - rightPane.add(initRightBottomPane(), BorderLayout.CENTER); - JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - if (!jTemplate.isJWorkBook() && ((JForm)jTemplate).isSelectRootPane()){ - //界面上表单主体只有背景和透明度可以设置 - rightPane.add(initBodyRightTopPane(), BorderLayout.NORTH); - } else { - rightPane.add(initRightTopPane(), BorderLayout.NORTH); - } + rightPane.add(initRightTopPane(), BorderLayout.NORTH); } - - + + protected JComponent[] getBorderTypeComp(){ + return new JComponent[]{null, null}; + } + protected JComponent[] getBorderCornerSpinnerComp(){ + return new JComponent[]{null, null}; + } + + protected void switchBorderType(){ + return; + } + public LayoutBorderStyle update() { LayoutBorderStyle style = new LayoutBorderStyle(); - style.setType(this.getBorderTypeCombo().getSelectedIndex()); 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())); - - WidgetTitle title = style.getTitle() == null ? new WidgetTitle() : style.getTitle(); - title.setTextObject("title"); - FRFont frFont = title.getFrFont(); - frFont = frFont.applySize((Integer)this.getFontSizeComboBox().getSelectedItem()); - frFont = frFont.applyName(this.getFontNameComboBox().getSelectedItem().toString()); - frFont = frFont.applyForeground(this.getColorSelectPane().getColor()); - frFont = updateItalicBold(frFont); - int line = this.getUnderline().isSelected() ? this.getUnderlineCombo().getSelectedLineStyle() : Constants.LINE_NONE; - frFont = frFont.applyUnderline(line); - title.setFrFont(frFont); - title.setBackground(this.getTitleBackgroundPane().update()); - style.setTitle(title); return style; } + + protected void populateBorderType(){ + return; + } - - protected void populateTitle(){ - WidgetTitle widgetTitle = this.getBorderStyle() == null ? new WidgetTitle() : this.getBorderStyle().getTitle(); - widgetTitle = widgetTitle == null ? new WidgetTitle() : widgetTitle; - populateFont(widgetTitle); - this.getUnderline().addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - paintPreviewPane(); - } - }); - this.getUnderlineCombo().addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - paintPreviewPane(); - } - }); - - this.getTitleBackgroundPane().populateBean(widgetTitle.getBackground()); - this.getTitleBackgroundPane().addChangeListener(new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - paintPreviewPane(); - } - }); - paintPreviewPane(); + protected void populateTitle(){ + return; } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/gui/xpane/LayoutBorderPane.java b/designer_form/src/com/fr/design/gui/xpane/LayoutBorderPane.java index 4c7c1d959e..aee64ec2bd 100644 --- a/designer_form/src/com/fr/design/gui/xpane/LayoutBorderPane.java +++ b/designer_form/src/com/fr/design/gui/xpane/LayoutBorderPane.java @@ -14,7 +14,11 @@ import com.fr.design.dialog.BasicPane; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.formula.TinyFormulaPane; import com.fr.design.gui.frpane.UINumberDragPane; -import com.fr.design.gui.ibutton.*; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.ibutton.UIButtonGroup; +import com.fr.design.gui.ibutton.UIButtonUI; +import com.fr.design.gui.ibutton.UIColorButton; +import com.fr.design.gui.ibutton.UIToggleButton; import com.fr.design.gui.icombobox.LineComboBox; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.icontainer.UIScrollPane; @@ -37,15 +41,35 @@ import com.fr.general.FRFont; import com.fr.general.Inter; import com.fr.stable.Constants; -import javax.swing.*; +import javax.swing.AbstractButton; +import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; +import javax.swing.ButtonModel; +import javax.swing.Icon; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.JToggleButton; import javax.swing.border.Border; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.plaf.basic.BasicToggleButtonUI; -import java.awt.*; -import java.awt.event.*; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.awt.geom.RoundRectangle2D; /** @@ -97,47 +121,47 @@ public class LayoutBorderPane extends BasicPane { private int minNumber = 0; private double maxNumber = 100; private int iconWidth = 32; - + public LayoutBorderStyle getBorderStyle() { - return borderStyle; - } + return borderStyle; + } - public void setBorderStyle(LayoutBorderStyle borderStyle) { - this.borderStyle = borderStyle; - } + public void setBorderStyle(LayoutBorderStyle borderStyle) { + this.borderStyle = borderStyle; + } - public LayoutBorderPreviewPane getLayoutBorderPreviewPane() { - return layoutBorderPreviewPane; - } + public LayoutBorderPreviewPane getLayoutBorderPreviewPane() { + return layoutBorderPreviewPane; + } - public void setLayoutBorderPreviewPane( - LayoutBorderPreviewPane layoutBorderPreviewPane) { - this.layoutBorderPreviewPane = layoutBorderPreviewPane; - } + public void setLayoutBorderPreviewPane( + LayoutBorderPreviewPane layoutBorderPreviewPane) { + this.layoutBorderPreviewPane = layoutBorderPreviewPane; + } - public UIComboBox getBorderTypeCombo() { - return borderTypeCombo; - } + public UIComboBox getBorderTypeCombo() { + return borderTypeCombo; + } - public void setBorderTypeCombo(UIComboBox borderTypeCombo) { - this.borderTypeCombo = borderTypeCombo; - } + public void setBorderTypeCombo(UIComboBox borderTypeCombo) { + this.borderTypeCombo = borderTypeCombo; + } - public UIComboBox getBorderStyleCombo() { - return borderStyleCombo; - } + public UIComboBox getBorderStyleCombo() { + return borderStyleCombo; + } - public void setBorderStyleCombo(UIComboBox borderStyleCombo) { - this.borderStyleCombo = borderStyleCombo; - } + public void setBorderStyleCombo(UIComboBox borderStyleCombo) { + this.borderStyleCombo = borderStyleCombo; + } - public LineComboBox getCurrentLineCombo() { - return currentLineCombo; - } + public LineComboBox getCurrentLineCombo() { + return currentLineCombo; + } - public void setCurrentLineCombo(LineComboBox currentLineCombo) { - this.currentLineCombo = currentLineCombo; - } + public void setCurrentLineCombo(LineComboBox currentLineCombo) { + this.currentLineCombo = currentLineCombo; + } public UISpinner getBorderCornerSpinner() { @@ -150,162 +174,162 @@ public class LayoutBorderPane extends BasicPane { public UIColorButton getCurrentLineColorPane() { - return currentLineColorPane; - } + return currentLineColorPane; + } - public void setCurrentLineColorPane(UIColorButton currentLineColorPane) { - this.currentLineColorPane = currentLineColorPane; - } + public void setCurrentLineColorPane(UIColorButton currentLineColorPane) { + this.currentLineColorPane = currentLineColorPane; + } - public BackgroundSpecialPane getBackgroundPane() { - return backgroundPane; - } + public BackgroundSpecialPane getBackgroundPane() { + return backgroundPane; + } - public void setBackgroundPane(BackgroundSpecialPane backgroundPane) { - this.backgroundPane = backgroundPane; - } + public void setBackgroundPane(BackgroundSpecialPane backgroundPane) { + this.backgroundPane = backgroundPane; + } - public UINumberDragPane getNumberDragPane() { - return numberDragPane; - } + public UINumberDragPane getNumberDragPane() { + return numberDragPane; + } - public void setNumberDragPane(UINumberDragPane numberDragPane) { - this.numberDragPane = numberDragPane; - } + public void setNumberDragPane(UINumberDragPane numberDragPane) { + this.numberDragPane = numberDragPane; + } - public TinyFormulaPane getFormulaPane() { - return formulaPane; - } + public TinyFormulaPane getFormulaPane() { + return formulaPane; + } - public void setFormulaPane(TinyFormulaPane formulaPane) { - this.formulaPane = formulaPane; - } + public void setFormulaPane(TinyFormulaPane formulaPane) { + this.formulaPane = formulaPane; + } - public UIComboBox getFontNameComboBox() { - return fontNameComboBox; - } + public UIComboBox getFontNameComboBox() { + return fontNameComboBox; + } - public void setFontNameComboBox(UIComboBox fontNameComboBox) { - this.fontNameComboBox = fontNameComboBox; - } + public void setFontNameComboBox(UIComboBox fontNameComboBox) { + this.fontNameComboBox = fontNameComboBox; + } - public UIComboBox getFontSizeComboBox() { - return fontSizeComboBox; - } + public UIComboBox getFontSizeComboBox() { + return fontSizeComboBox; + } - public void setFontSizeComboBox(UIComboBox fontSizeComboBox) { - this.fontSizeComboBox = fontSizeComboBox; - } + public void setFontSizeComboBox(UIComboBox fontSizeComboBox) { + this.fontSizeComboBox = fontSizeComboBox; + } - public UIColorButton getColorSelectPane() { - return colorSelectPane; - } + public UIColorButton getColorSelectPane() { + return colorSelectPane; + } - public void setColorSelectPane(UIColorButton colorSelectPane) { - this.colorSelectPane = colorSelectPane; - } + public void setColorSelectPane(UIColorButton colorSelectPane) { + this.colorSelectPane = colorSelectPane; + } - public UIToggleButton getBold() { - return bold; - } + public UIToggleButton getBold() { + return bold; + } - public void setBold(UIToggleButton bold) { - this.bold = bold; - } + public void setBold(UIToggleButton bold) { + this.bold = bold; + } - public UIToggleButton getItalic() { - return italic; - } + public UIToggleButton getItalic() { + return italic; + } - public void setItalic(UIToggleButton italic) { - this.italic = italic; - } + public void setItalic(UIToggleButton italic) { + this.italic = italic; + } - public UIToggleButton getUnderline() { - return underline; - } + public UIToggleButton getUnderline() { + return underline; + } - public void setUnderline(UIToggleButton underline) { - this.underline = underline; - } + public void setUnderline(UIToggleButton underline) { + this.underline = underline; + } - public LineComboBox getUnderlineCombo() { - return underlineCombo; - } + public LineComboBox getUnderlineCombo() { + return underlineCombo; + } - public void setUnderlineCombo(LineComboBox underlineCombo) { - this.underlineCombo = underlineCombo; - } + public void setUnderlineCombo(LineComboBox underlineCombo) { + this.underlineCombo = underlineCombo; + } - public UIButtonGroup gethAlignmentPane() { - return hAlignmentPane; - } + public UIButtonGroup gethAlignmentPane() { + return hAlignmentPane; + } - public void sethAlignmentPane(UIButtonGroup hAlignmentPane) { - this.hAlignmentPane = hAlignmentPane; - } + public void sethAlignmentPane(UIButtonGroup hAlignmentPane) { + this.hAlignmentPane = hAlignmentPane; + } - public BackgroundNoImagePane getTitleBackgroundPane() { - return titleBackgroundPane; - } + public BackgroundNoImagePane getTitleBackgroundPane() { + return titleBackgroundPane; + } - public void setTitleBackgroundPane(BackgroundNoImagePane titleBackgroundPane) { - this.titleBackgroundPane = titleBackgroundPane; - } + public void setTitleBackgroundPane(BackgroundNoImagePane titleBackgroundPane) { + this.titleBackgroundPane = titleBackgroundPane; + } - public UIScrollPane getTitlePane() { - return titlePane; - } + public UIScrollPane getTitlePane() { + return titlePane; + } - public void setTitlePane(UIScrollPane titlePane) { - this.titlePane = titlePane; - } + public void setTitlePane(UIScrollPane titlePane) { + this.titlePane = titlePane; + } - public int getMinNumber() { - return minNumber; - } + public int getMinNumber() { + return minNumber; + } - public void setMinNumber(int minNumber) { - this.minNumber = minNumber; - } + public void setMinNumber(int minNumber) { + this.minNumber = minNumber; + } - public double getMaxNumber() { - return maxNumber; - } + public double getMaxNumber() { + return maxNumber; + } - public void setMaxNumber(double maxNumber) { - this.maxNumber = maxNumber; - } + public void setMaxNumber(double maxNumber) { + this.maxNumber = maxNumber; + } - public int getIconWidth() { - return iconWidth; - } + public int getIconWidth() { + return iconWidth; + } - public void setIconWidth(int iconWidth) { - this.iconWidth = iconWidth; - } + public void setIconWidth(int iconWidth) { + this.iconWidth = iconWidth; + } - public final static int[] BORDER_LINE_STYLE_ARRAY = new int[]{ + public final static int[] BORDER_LINE_STYLE_ARRAY = new int[]{ Constants.LINE_NONE, Constants.LINE_THIN, //1px Constants.LINE_MEDIUM, //2px Constants.LINE_THICK, //3px - }; + }; public final static String[] BORDER_TYPE = new String[]{Inter.getLocText("FR-Designer-Widget-Style_Standard"), Inter.getLocText("FR-Designer-Widget-Style_Custom")}; public final static String[] BORDER_STYLE= new String[]{Inter.getLocText("FR-Designer-Widget-Style_Common"), Inter.getLocText("FR-Designer-Widget-Style_Shadow")}; private final static Dimension BUTTON_SIZE = new Dimension(24, 20); - + public LayoutBorderPane() { this.initComponents(); } - + protected void initComponents() { - this.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4)); + this.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4)); this.setLayout(FRGUIPaneFactory.createBorderLayout()); - + JPanel defaultPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); this.add(defaultPane, BorderLayout.CENTER); @@ -318,7 +342,7 @@ public class LayoutBorderPane extends BasicPane { borderPane.setBorder(BorderFactory.createEmptyBorder(10, 4, 10, 4)); layoutBorderPreviewPane = new LayoutBorderPreviewPane(borderStyle); - + borderPane.add(layoutBorderPreviewPane, BorderLayout.CENTER); JPanel rightPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); @@ -336,17 +360,7 @@ public class LayoutBorderPane extends BasicPane { } protected UIScrollPane initRightTopPane(){ - this.borderTypeCombo = new UIComboBox(BORDER_TYPE); - this.borderTypeCombo.addItemListener(new ItemListener() { - public void itemStateChanged(ItemEvent e) { - if(borderTypeCombo.getSelectedIndex() == 0){ - titlePane.setVisible(false); - } else { - titlePane.setVisible(true); - currentLineCombo.setSelectedItem(Constants.LINE_THIN); - } - } - }); + switchBorderType(); this.borderStyleCombo = new UIComboBox(BORDER_STYLE); this.currentLineCombo = new LineComboBox(BORDER_LINE_STYLE_ARRAY); this.currentLineColorPane = new UIColorButton(null); @@ -366,22 +380,43 @@ public class LayoutBorderPane extends BasicPane { double[] rowSize = {p,p,p,p,p,p,p,p}; double[] columnSize = { p, MAX_WIDTH}; JPanel rightTopContentPane = TableLayoutHelper.createCommonTableLayoutPane(new JComponent[][]{ - {new UILabel(Inter.getLocText("FR-Designer-Widget-Style_Frame_Style")), borderTypeCombo}, + getBorderTypeComp(), {new UILabel(Inter.getLocText("FR-Designer-Widget-Style_Render_Style")), borderStyleCombo}, {new UILabel(Inter.getLocText("FR-Designer-Widget-Style_Border_Line")), currentLineCombo}, {new UILabel(Inter.getLocText("FR-Designer-Widget-Style_Border_Color")), buttonPane}, - {new UILabel(Inter.getLocText("plugin-ChartF_Radius")+":"),borderCornerSpinner}, + getBorderCornerSpinnerComp(), {new UILabel(Inter.getLocText("FR-Designer-Widget-Style_Body_Background")), backgroundPane}, {new UILabel(""),new UILabel(Inter.getLocText("FR-Designer-Widget-Style_Alpha"))}, {new UILabel(""),transparencyPane}, - }, rowSize, columnSize, 10); + }, rowSize, columnSize, 10); rightTopContentPane.setBorder(BorderFactory.createEmptyBorder(15, 12, 10, 12)); UIScrollPane rightTopPane = new UIScrollPane(rightTopContentPane); rightTopPane.setBorder(GUICoreUtils.createTitledBorder(Inter.getLocText("FR-Designer-Widget-Style_Frame"),null)); rightTopPane.setPreferredSize(rightTopPane.getPreferredSize()); return rightTopPane; } - + + protected JComponent[] getBorderTypeComp(){ + return new JComponent[]{new UILabel(Inter.getLocText("FR-Designer-Widget-Style_Frame_Style")), borderTypeCombo}; + } + + protected JComponent[] getBorderCornerSpinnerComp(){ + return new JComponent[]{new UILabel(Inter.getLocText("plugin-ChartF_Radius")+":"),borderCornerSpinner}; + } + + protected void switchBorderType(){ + this.borderTypeCombo = new UIComboBox(BORDER_TYPE); + this.borderTypeCombo.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if(borderTypeCombo.getSelectedIndex() == 0){ + titlePane.setVisible(false); + } else { + titlePane.setVisible(true); + currentLineCombo.setSelectedItem(Constants.LINE_THIN); + } + } + }); + } @@ -452,8 +487,8 @@ public class LayoutBorderPane extends BasicPane { titlePane.setVisible(false); return titlePane; } - - + + protected JPanel initFontButtonPane(){ colorSelectPane = new UIColorButton(); @@ -524,8 +559,8 @@ public class LayoutBorderPane extends BasicPane { title.setPosition((Integer)hAlignmentPane.getSelectedItem()); title.setBackground(titleBackgroundPane.update()); style.setTitle(title); - return style; - } + return style; + } protected FRFont updateItalicBold(FRFont frFont) { int italic_bold = frFont.getStyle(); @@ -547,10 +582,10 @@ public class LayoutBorderPane extends BasicPane { } public void populate(LayoutBorderStyle style) { - if(this.borderStyle == null) { - borderStyle = new LayoutBorderStyle(); - } - this.borderStyle.setStyle(style); + if(this.borderStyle == null) { + borderStyle = new LayoutBorderStyle(); + } + this.borderStyle.setStyle(style); populateBorder(); @@ -558,7 +593,7 @@ public class LayoutBorderPane extends BasicPane { } - protected void populateBorder(){ + protected void populateBorderType(){ this.borderTypeCombo.setSelectedIndex(borderStyle.getType()); this.borderTypeCombo.addItemListener(new ItemListener() { @Override @@ -566,6 +601,10 @@ public class LayoutBorderPane extends BasicPane { paintPreviewPane(); } }); + } + + protected void populateBorder(){ + populateBorderType(); this.borderStyleCombo.setSelectedIndex(borderStyle.getBorderStyle()); this.borderStyleCombo.addItemListener(new ItemListener() { @Override @@ -610,7 +649,7 @@ public class LayoutBorderPane extends BasicPane { populateFourmula(widgetTitle); populateFont(widgetTitle); - + underline.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { @@ -631,10 +670,10 @@ public class LayoutBorderPane extends BasicPane { paintPreviewPane(); } }); - - titleBackgroundPane.populateBean(widgetTitle.getBackground()); + + titleBackgroundPane.populateBean(widgetTitle.getBackground()); this.titleBackgroundPane.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { @@ -716,27 +755,27 @@ public class LayoutBorderPane extends BasicPane { }; } - - private void populateFourmula(WidgetTitle widgetTitle) { - this.formulaPane.populateBean(widgetTitle.getTextObject().toString()); - this.formulaPane.getUITextField().getDocument() - .addDocumentListener(new DocumentListener() { - @Override - public void insertUpdate(DocumentEvent e) { - paintPreviewPane(); - } - @Override - public void removeUpdate(DocumentEvent e) { - paintPreviewPane(); - } - - @Override - public void changedUpdate(DocumentEvent e) { - paintPreviewPane(); - } - }); - } + private void populateFourmula(WidgetTitle widgetTitle) { + this.formulaPane.populateBean(widgetTitle.getTextObject().toString()); + this.formulaPane.getUITextField().getDocument() + .addDocumentListener(new DocumentListener() { + @Override + public void insertUpdate(DocumentEvent e) { + paintPreviewPane(); + } + + @Override + public void removeUpdate(DocumentEvent e) { + paintPreviewPane(); + } + + @Override + public void changedUpdate(DocumentEvent e) { + paintPreviewPane(); + } + }); + } protected JPanel createVerButtonPane(JToggleButton noBorder, String text) { @@ -747,119 +786,119 @@ public class LayoutBorderPane extends BasicPane { return verPane; } - + protected class VerButtonPane extends JPanel { - - JToggleButton noBorder; - BorderButton normalBorder; - BorderButton RoundedBorder; - ButtonGroup group; - - private VerButtonPane () { - setLayout(new FlowLayout(FlowLayout.CENTER)); - setBorder(BorderFactory.createEmptyBorder(0, 0, 4, 0)); - group = new ButtonGroup(); - noBorder = new BorderButton(NO_BORDERS); - normalBorder = new BorderButton(RIGHTANGLE_BORDERS); - RoundedBorder = new BorderButton(ROUNDED_BORDERS); - group.add(noBorder); - group.add(normalBorder); - group.add(RoundedBorder); - + + JToggleButton noBorder; + BorderButton normalBorder; + BorderButton RoundedBorder; + ButtonGroup group; + + private VerButtonPane () { + setLayout(new FlowLayout(FlowLayout.CENTER)); + setBorder(BorderFactory.createEmptyBorder(0, 0, 4, 0)); + group = new ButtonGroup(); + noBorder = new BorderButton(NO_BORDERS); + normalBorder = new BorderButton(RIGHTANGLE_BORDERS); + RoundedBorder = new BorderButton(ROUNDED_BORDERS); + group.add(noBorder); + group.add(normalBorder); + group.add(RoundedBorder); + // add(createVerButtonPane(noBorder, Inter.getLocText("None"))); // add(createVerButtonPane(normalBorder, Inter.getLocText("Border-Style-Normal"))); // add(createVerButtonPane(RoundedBorder, Inter.getLocText("Border-Style-Radius"))); - } - - public void populate(LayoutBorderStyle style) { - if(style.getBorder() == Constants.LINE_NONE) { - group.setSelected(noBorder.getModel(), true); - } else if(style.getBorderRadius() != NO_RADIUS) { + } + + public void populate(LayoutBorderStyle style) { + if(style.getBorder() == Constants.LINE_NONE) { + group.setSelected(noBorder.getModel(), true); + } else if(style.getBorderRadius() != NO_RADIUS) { group.setSelected(RoundedBorder.getModel(), true); } else { - group.setSelected(normalBorder.getModel(), true); - } - } - } - - private class BorderButton extends JToggleButton { - private BorderButton(int border) { - super(); - this.setIcon(new BorderButtonIcon(border)); - addBorderActionListener(border); - setPreferredSize(new Dimension(32, 32)); - this.setBorder(new UIRoundedBorder(new Color(220, 220, 220), 1, 5)); - this.setRolloverEnabled(true); - } - - @Override - public Border getBorder() { - ButtonModel model = getModel(); - if (this.isSelected()) { - return null; - } - if (isRolloverEnabled() && model.isRollover()) { - return new UIRoundedBorder(new Color(148, 148, 148), 1, 5); - } - return super.getBorder(); - } - - @Override - public void updateUI() { - setUI(new BorderToggleButtonUI()); - } - - private void addBorderActionListener(final int border) { - addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent ae) { - if (border == 0) { - borderStyle.reset(); - } else { - borderStyle.setColor(currentLineColorPane.getColor()); - borderStyle.setBorder(currentLineCombo.getSelectedLineStyle()); - borderStyle.setBorderRadius((int)borderCornerSpinner.getValue()); - } + group.setSelected(normalBorder.getModel(), true); + } + } + } + + private class BorderButton extends JToggleButton { + private BorderButton(int border) { + super(); + this.setIcon(new BorderButtonIcon(border)); + addBorderActionListener(border); + setPreferredSize(new Dimension(32, 32)); + this.setBorder(new UIRoundedBorder(new Color(220, 220, 220), 1, 5)); + this.setRolloverEnabled(true); + } + + @Override + public Border getBorder() { + ButtonModel model = getModel(); + if (this.isSelected()) { + return null; + } + if (isRolloverEnabled() && model.isRollover()) { + return new UIRoundedBorder(new Color(148, 148, 148), 1, 5); + } + return super.getBorder(); + } + + @Override + public void updateUI() { + setUI(new BorderToggleButtonUI()); + } + + private void addBorderActionListener(final int border) { + addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent ae) { + if (border == 0) { + borderStyle.reset(); + } else { + borderStyle.setColor(currentLineColorPane.getColor()); + borderStyle.setBorder(currentLineCombo.getSelectedLineStyle()); + borderStyle.setBorderRadius((int)borderCornerSpinner.getValue()); + } layoutBorderPreviewPane.repaint(); - } - }); - - } - } - - private class BorderToggleButtonUI extends BasicToggleButtonUI { - - @Override - public void paint(Graphics g, JComponent c) { - paintBackground(g, (AbstractButton) c); - super.paint(g, c); - } - - private void paintBackground(Graphics g, AbstractButton b) { - if (b.isContentAreaFilled()) { - Dimension size = b.getSize(); - Background background = new GradientBackground(new Color(247, 247, 247), new Color(228, 228, 228), - GradientBackground.TOP2BOTTOM); - background.paint(g, new RoundRectangle2D.Double(2, 2, size.width - 4, size.height - 4, 5, 5)); - } - } - - private void paintBorder(Graphics g, Color lineColor, int width, int height) { - Graphics2D g2d = (Graphics2D) g; - g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); - g2d.setColor(lineColor); - g2d.drawRoundRect(0, 0, width - 1, height - 1, 5, 5); - g2d.setColor(Color.WHITE); - g2d.drawRoundRect(1, 1, width - 3, height - 3, 5, 5); - g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); - } - - @Override - protected void paintButtonPressed(Graphics g, AbstractButton b) { - Dimension size = b.getSize(); - paintBorder(g, new Color(78,143,203), size.height, size.width); - } - } + } + }); + + } + } + + private class BorderToggleButtonUI extends BasicToggleButtonUI { + + @Override + public void paint(Graphics g, JComponent c) { + paintBackground(g, (AbstractButton) c); + super.paint(g, c); + } + + private void paintBackground(Graphics g, AbstractButton b) { + if (b.isContentAreaFilled()) { + Dimension size = b.getSize(); + Background background = new GradientBackground(new Color(247, 247, 247), new Color(228, 228, 228), + GradientBackground.TOP2BOTTOM); + background.paint(g, new RoundRectangle2D.Double(2, 2, size.width - 4, size.height - 4, 5, 5)); + } + } + + private void paintBorder(Graphics g, Color lineColor, int width, int height) { + Graphics2D g2d = (Graphics2D) g; + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g2d.setColor(lineColor); + g2d.drawRoundRect(0, 0, width - 1, height - 1, 5, 5); + g2d.setColor(Color.WHITE); + g2d.drawRoundRect(1, 1, width - 3, height - 3, 5, 5); + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); + } + + @Override + protected void paintButtonPressed(Graphics g, AbstractButton b) { + Dimension size = b.getSize(); + paintBorder(g, new Color(78,143,203), size.height, size.width); + } + } // Icon to display in shortcut setting buttons private class BorderButtonIcon implements Icon { @@ -883,13 +922,13 @@ public class LayoutBorderPane extends BasicPane { g.drawRect(3, 3, this.getIconWidth() - 7, this.getIconHeight() - 7); } else if (display == LayoutBorderPane.ROUNDED_BORDERS) { g.setColor(Color.black); - g.drawRoundRect(3, 3, this.getIconWidth() - 7, this.getIconHeight() - 7, 6, 6); + g.drawRoundRect(3, 3, this.getIconWidth() - 7, this.getIconHeight() - 7, 6, 6); } } } - @Override - protected String title4PopupWindow() { - return Inter.getLocText("FR-Designer-Widget_Style"); - } + @Override + protected String title4PopupWindow() { + return Inter.getLocText("FR-Designer-Widget_Style"); + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/mainframe/ComponentTree.java b/designer_form/src/com/fr/design/mainframe/ComponentTree.java index 6779dfa037..c676ff8c56 100644 --- a/designer_form/src/com/fr/design/mainframe/ComponentTree.java +++ b/designer_form/src/com/fr/design/mainframe/ComponentTree.java @@ -1,27 +1,26 @@ package com.fr.design.mainframe; -import java.awt.*; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.image.BufferedImage; -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; - -import javax.imageio.ImageIO; -import javax.swing.*; -import javax.swing.tree.TreeCellRenderer; -import javax.swing.tree.TreePath; -import javax.swing.tree.TreeSelectionModel; - import com.fr.design.constants.UIConstants; -import com.fr.design.designer.creator.*; +import com.fr.design.designer.creator.XCreator; +import com.fr.design.designer.creator.XLayoutContainer; +import com.fr.design.designer.creator.XWAbsoluteBodyLayout; +import com.fr.design.designer.creator.XWFitLayout; import com.fr.design.designer.treeview.ComponentTreeCellRenderer; import com.fr.design.designer.treeview.ComponentTreeModel; import com.fr.design.gui.itree.UITreeUI; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.stable.StringUtils; -import com.fr.web.core.A.M; + +import javax.swing.*; +import javax.swing.tree.TreeCellRenderer; +import javax.swing.tree.TreePath; +import javax.swing.tree.TreeSelectionModel; +import java.awt.*; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.util.ArrayList; public class ComponentTree extends JTree { @@ -29,8 +28,8 @@ public class ComponentTree extends JTree { private ComponentTreeModel model; private UITreeUI uiTreeUI = new UITreeUI(); private PopupPreviewPane previewPane; - private static final int PADDING_LEFT = 10; - private static final int PADDING_TOP = 8; + private static final int PADDING_LEFT = 5; + private static final int PADDING_TOP = 5; public ComponentTree(FormDesigner designer) { this.designer = designer; @@ -42,13 +41,19 @@ public class ComponentTree extends JTree { this.setDropMode(DropMode.ON_OR_INSERT); this.setTransferHandler(new TreeTransferHandler()); this.refreshTreeRoot(); - addTreeSelectionListener(designer); - addMouseMotionListener(new ComponetTreeMouseListener(this)); + initListeners(); setEditable(true); setUI(uiTreeUI); setBorder(BorderFactory.createEmptyBorder(PADDING_TOP, PADDING_LEFT, 0, 0)); } + private void initListeners() { + this.addTreeSelectionListener(designer); + ComponetTreeMouseListener componetTreeMouseListener = new ComponetTreeMouseListener(this); + this.addMouseMotionListener(componetTreeMouseListener); + this.addMouseListener(componetTreeMouseListener); + } + public FormDesigner getDesigner() { return designer; } @@ -276,6 +281,11 @@ public class ComponentTree extends JTree { hidePreviewPane(); } } + + @Override + public void mouseExited(MouseEvent e) { + hidePreviewPane(); + } } private class PopupPreviewPane extends JPopupMenu { diff --git a/designer_form/src/com/fr/design/mainframe/FormDesigner.java b/designer_form/src/com/fr/design/mainframe/FormDesigner.java index dad299c2c9..851a2cdee6 100644 --- a/designer_form/src/com/fr/design/mainframe/FormDesigner.java +++ b/designer_form/src/com/fr/design/mainframe/FormDesigner.java @@ -1140,6 +1140,9 @@ public class FormDesigner extends TargetComponent
implements TreeSelection public boolean isCurrentComponentMovableUp() { XCreator creator = getSelectionModel().getSelection().getSelectedCreator(); Container container = creator.getParent(); + if (container == null) { + return false; + } return creator.isMovable() && container.getComponentZOrder(creator) > 0; } @@ -1147,6 +1150,9 @@ public class FormDesigner extends TargetComponent implements TreeSelection public boolean isCurrentComponentMovableDown() { XCreator creator = getSelectionModel().getSelection().getSelectedCreator(); Container container = creator.getParent(); + if (container == null) { + return false; + } return creator.isMovable() && container.getComponentZOrder(creator) < container.getComponentCount() - 1; } diff --git a/designer_form/src/com/fr/design/mainframe/FormDesignerUI.java b/designer_form/src/com/fr/design/mainframe/FormDesignerUI.java index dfbcfbb2fe..8a40928c36 100644 --- a/designer_form/src/com/fr/design/mainframe/FormDesignerUI.java +++ b/designer_form/src/com/fr/design/mainframe/FormDesignerUI.java @@ -219,7 +219,7 @@ public class FormDesignerUI extends ComponentUI { if (subCreator instanceof XLayoutContainer) { paintAuthorityDetails(g, subCreator); } else { - if (subCreator.toData().isDirtyWidget(selectedRoles)) { + if (subCreator.toData().isDirtyWidget(selectedRoles)) { Rectangle creatorBounds = ComponentUtils.getRelativeBounds(subCreator); creatorBounds.x -= designer.getArea().getHorizontalValue(); creatorBounds.y -= designer.getArea().getVerticalValue(); @@ -273,43 +273,43 @@ public class FormDesignerUI extends ComponentUI { creatorBounds.x -= designer.getArea().getHorizontalValue(); creatorBounds.y -= designer.getArea().getVerticalValue(); if (creator.acceptType(XWFitLayout.class)) { - resetFitlayoutBounds(creatorBounds); + resetFitlayoutBounds(creatorBounds); } else if (designer.getRootComponent().acceptType(XWFitLayout.class)) { - resetCreatorBounds(creatorBounds); + resetCreatorBounds(creatorBounds); } GraphHelper.draw(g, creatorBounds, Constants.LINE_MEDIUM); } } - + /** * 初始为自适应时,处理选中的范围 * @param bound */ private void resetFitlayoutBounds( Rectangle bound) { - bound.x ++; - bound.width -= 2; - bound.y ++; - bound.height -= 2; + bound.x ++; + bound.width -= 2; + bound.y ++; + bound.height -= 2; } - + private void resetCreatorBounds( Rectangle bound) { - Rectangle rec = bound; - if (rec.x == 0) { - bound.x ++; - bound.width --; - } - if (rec.y == 0) { - bound.y ++; - bound.height --; - } - if (rec.x+rec.width == designer.getWidth()) { - bound.width --; - } - if (rec.y+rec.height == designer.getHeight()) { - bound.height --; - } + Rectangle rec = bound; + if (rec.x == 0) { + bound.x ++; + bound.width --; + } + if (rec.y == 0) { + bound.y ++; + bound.height --; + } + if (rec.x+rec.width == designer.getWidth()) { + bound.width --; + } + if (rec.y+rec.height == designer.getHeight()) { + bound.height --; + } } - + /** * 画出八个拖拽框 @@ -397,7 +397,7 @@ public class FormDesignerUI extends ComponentUI { ComponentUtils.resetBuffer(dbcomponents); designer.resetEditorComponentBounds(); } - + /** * 画参数面板 */ @@ -421,5 +421,5 @@ public class FormDesignerUI extends ComponentUI { // 恢复双缓冲 ComponentUtils.resetBuffer(dbcomponents); } - + } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/mainframe/FormHierarchyTreePane.java b/designer_form/src/com/fr/design/mainframe/FormHierarchyTreePane.java index e133e100ed..212fe33897 100644 --- a/designer_form/src/com/fr/design/mainframe/FormHierarchyTreePane.java +++ b/designer_form/src/com/fr/design/mainframe/FormHierarchyTreePane.java @@ -13,6 +13,7 @@ import com.fr.design.gui.controlpane.ShortCut4JControlPane; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.itoolbar.UIToolBarUI; import com.fr.design.gui.itoolbar.UIToolbar; +import com.fr.design.gui.style.BorderPane; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.menu.ShortCut; import com.fr.design.menu.ToolBarDef; @@ -33,6 +34,7 @@ public class FormHierarchyTreePane extends FormDockView implements HierarchyTree private static final int PARA = 0; private static final int BODY = 1; private static final int SHORTS_SEPARATOR_POS = 4; + private static final int TOOLBAR_PADDING_RIGHT = 10; private ShortCut4JControlPane[] shorts; private ComponentTree componentTree; @@ -114,12 +116,11 @@ public class FormHierarchyTreePane extends FormDockView implements HierarchyTree shorts = createShortcuts(); JPanel widgetPane = new JPanel(); - widgetPane.setBorder(BorderFactory.createLineBorder(UIConstants.RULER_LINE_COLOR)); widgetPane.setLayout(FRGUIPaneFactory.createBorderLayout()); widgetPane.add(getToolBarPane(), BorderLayout.CENTER); UIScrollPane scrollPane = new UIScrollPane(componentTree); - scrollPane.setBorder(BorderFactory.createMatteBorder(1, 0, 0, 0, UIConstants.RULER_LINE_COLOR)); + scrollPane.setBorder(BorderFactory.createEmptyBorder()); scrollPane.setPreferredSize(new Dimension(210, 170)); widgetPane.add(scrollPane, BorderLayout.SOUTH); return widgetPane; @@ -144,7 +145,11 @@ public class FormHierarchyTreePane extends FormDockView implements HierarchyTree JPanel toolBarPane = new JPanel(new BorderLayout()); toolBarPane.add(toolBar, BorderLayout.CENTER); - return toolBarPane; + toolBarPane.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, UIConstants.BARNOMAL)); + JPanel toolBarPaneWrapper = new JPanel(new BorderLayout()); + toolBarPaneWrapper.add(toolBarPane, BorderLayout.CENTER); + toolBarPaneWrapper.setBorder(BorderFactory.createEmptyBorder(1, 0, 2, TOOLBAR_PADDING_RIGHT)); + return toolBarPaneWrapper; } protected ShortCut4JControlPane[] createShortcuts() { diff --git a/designer_form/src/com/fr/design/mainframe/FormSelection.java b/designer_form/src/com/fr/design/mainframe/FormSelection.java index ff809371c5..8f2fc67378 100644 --- a/designer_form/src/com/fr/design/mainframe/FormSelection.java +++ b/designer_form/src/com/fr/design/mainframe/FormSelection.java @@ -8,7 +8,14 @@ import com.fr.base.FRContext; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.LayoutAdapter; import com.fr.design.designer.beans.location.Direction; -import com.fr.design.designer.creator.*; +import com.fr.design.designer.creator.XComponent; +import com.fr.design.designer.creator.XCreator; +import com.fr.design.designer.creator.XCreatorUtils; +import com.fr.design.designer.creator.XLayoutContainer; +import com.fr.design.designer.creator.XWAbsoluteLayout; +import com.fr.design.designer.creator.XWFitLayout; +import com.fr.design.designer.creator.XWParameterLayout; +import com.fr.design.designer.creator.cardlayout.XWCardTagLayout; import com.fr.form.ui.Widget; import com.fr.design.utils.ComponentUtils; import com.fr.design.utils.gui.LayoutUtils; @@ -224,6 +231,9 @@ public class FormSelection { int size = selection.size(); if (size == 1) { XCreator creator = selection.get(0); + if(creator.acceptType(XWCardTagLayout.class)){ + creator = (XCreator)selection.get(0).getParent(); + } creator.setBounds(rec); if (creator.acceptType(XWParameterLayout.class)) { designer.setParaHeight((int) rec.getHeight()); diff --git a/designer_form/src/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java b/designer_form/src/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java index 963caf8a3d..841e9c2908 100644 --- a/designer_form/src/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java +++ b/designer_form/src/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java @@ -10,6 +10,7 @@ import com.fr.design.designer.creator.XWFitLayout; import com.fr.design.designer.creator.XWParameterLayout; import com.fr.design.designer.creator.XWScaleLayout; import com.fr.design.designer.creator.XWTitleLayout; +import com.fr.design.designer.creator.cardlayout.XWCardTagLayout; import com.fr.design.dialog.AttrScrollPane; import com.fr.design.dialog.BasicScrollPane; import com.fr.design.foldablepane.UIExpandablePane; @@ -22,6 +23,7 @@ import com.fr.design.widget.FormWidgetDefinePaneFactoryBase; import com.fr.design.widget.Operator; import com.fr.design.widget.ui.designer.component.WidgetAbsoluteBoundPane; import com.fr.design.widget.ui.designer.component.WidgetBoundPane; +import com.fr.design.widget.ui.designer.component.WidgetCardTagBoundPane; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WScaleLayout; import com.fr.form.ui.container.WTitleLayout; @@ -73,10 +75,12 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane { public WidgetBoundPane createWidgetBoundPane(XCreator xCreator) { XLayoutContainer xLayoutContainer = getParent(xCreator); - if (xLayoutContainer == null || xCreator instanceof XWParameterLayout || xCreator instanceof XWAbsoluteLayout) { + if (xLayoutContainer == null || xCreator.acceptType(XWParameterLayout.class) || xCreator.acceptType(XWAbsoluteLayout.class)) { return null; - } else if (xLayoutContainer instanceof XWAbsoluteLayout) { + } else if (xLayoutContainer.acceptType(XWAbsoluteLayout.class)) { return new WidgetAbsoluteBoundPane(xCreator); + } else if(xCreator.acceptType(XWCardTagLayout.class)){ + return new WidgetCardTagBoundPane(xCreator); } return new WidgetBoundPane(xCreator); } diff --git a/designer_form/src/com/fr/design/parameter/ParameterPropertyPane.java b/designer_form/src/com/fr/design/parameter/ParameterPropertyPane.java index 45593e99d3..6ce5a2ff9e 100644 --- a/designer_form/src/com/fr/design/parameter/ParameterPropertyPane.java +++ b/designer_form/src/com/fr/design/parameter/ParameterPropertyPane.java @@ -118,7 +118,7 @@ public class ParameterPropertyPane extends JPanel{ private void setEditor(FormDesigner editor) { if (formHierarchyTreePaneWrapper == null) { formHierarchyTreePaneWrapper = new JPanel(new BorderLayout()); - formHierarchyTreePaneWrapper.setBorder(BorderFactory.createEmptyBorder(PADDING_MIDDLE, PADDING_MIDDLE, 0, PADDING_MIDDLE)); + formHierarchyTreePaneWrapper.setBorder(BorderFactory.createEmptyBorder(0, PADDING_MIDDLE, 0, 0)); this.add(formHierarchyTreePaneWrapper, BorderLayout.SOUTH); } formHierarchyTreePaneWrapper.remove(FormHierarchyTreePane.getInstance()); diff --git a/designer_form/src/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java b/designer_form/src/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java index 47efd40fe8..0de1e2bdaf 100644 --- a/designer_form/src/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java +++ b/designer_form/src/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java @@ -12,6 +12,7 @@ import com.fr.form.parameter.FormSubmitButton; import com.fr.form.ui.*; import com.fr.form.ui.container.*; import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; +import com.fr.form.ui.container.cardlayout.WCardTagLayout; import com.fr.form.ui.container.cardlayout.WTabFitLayout; import com.fr.stable.bridge.BridgeMark; import com.fr.stable.bridge.StableFactory; @@ -64,6 +65,7 @@ public class FormWidgetDefinePaneFactoryBase { defineMap.put(WAbsoluteBodyLayout.class, new Appearance(FRAbsoluteBodyLayoutDefinePane.class, "wAbsoluteBodyLayout")); defineMap.put(WParameterLayout.class, new Appearance(RootDesignDefinePane.class, "wParameterLayout")); defineMap.put(WCardMainBorderLayout.class, new Appearance(WCardMainLayoutDefinePane.class, "wCardMainBorderLayout")); + defineMap.put(WCardTagLayout.class, new Appearance(WCardTagLayoutDefinePane.class, "wCardMainBorderLayout")); defineMap.put(WCardLayout.class, new Appearance(WCardLayoutDefinePane.class, "wCardLayout")); defineMap.put(Label.class, new Appearance(LabelDefinePane.class, "label")); defineMap.put(WTabFitLayout.class, new Appearance(WTabFitLayoutDefinePane.class, "wTabFitLayout")); diff --git a/designer_form/src/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java b/designer_form/src/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java index db2f634e93..a046b2d18f 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java @@ -8,6 +8,7 @@ import com.fr.design.designer.creator.XLayoutContainer; import com.fr.design.designer.creator.XWFitLayout; import com.fr.design.designer.creator.XWParameterLayout; import com.fr.design.designer.creator.cardlayout.XWCardLayout; +import com.fr.design.designer.creator.cardlayout.XWCardTagLayout; import com.fr.design.dialog.BasicPane; import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.layout.FRGUIPaneFactory; @@ -44,6 +45,9 @@ public class WidgetBoundPane extends BasicPane { } public XLayoutContainer getParent(XCreator source) { + if(source.acceptType(XWCardTagLayout.class)){ + return (XLayoutContainer)source.getParent(); + } XLayoutContainer container = XCreatorUtils.getParentXLayoutContainer(source); if (source.acceptType(XWFitLayout.class) || source.acceptType(XWParameterLayout.class)) { container = null; @@ -122,7 +126,6 @@ public class WidgetBoundPane extends BasicPane { difference = bounds.width - w; bounds.width = w; } - width.setValue(bounds.width); wabs.setBounds(creator.toData(), bounds); adjustComponents(bounds, difference, 0); } @@ -144,7 +147,6 @@ public class WidgetBoundPane extends BasicPane { difference = bounds.height - h; bounds.height = h; } - height.setValue(bounds.height); wabs.setBounds(creator.toData(), bounds); adjustComponents(bounds, difference, 1); } diff --git a/designer_form/src/com/fr/design/widget/ui/designer/component/WidgetCardTagBoundPane.java b/designer_form/src/com/fr/design/widget/ui/designer/component/WidgetCardTagBoundPane.java new file mode 100644 index 0000000000..92fb9b9652 --- /dev/null +++ b/designer_form/src/com/fr/design/widget/ui/designer/component/WidgetCardTagBoundPane.java @@ -0,0 +1,76 @@ +package com.fr.design.widget.ui.designer.component; + +import com.fr.design.designer.beans.AdapterBus; +import com.fr.design.designer.beans.LayoutAdapter; +import com.fr.design.designer.creator.XCreator; +import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.mainframe.FormDesigner; +import com.fr.design.mainframe.WidgetPropertyPane; +import com.fr.design.widget.WidgetBoundsPaneFactory; +import com.fr.form.ui.container.WTabDisplayPosition; +import com.fr.form.ui.container.cardlayout.WCardTagLayout; +import com.fr.general.ComparatorUtils; +import com.fr.general.Inter; + +import java.awt.Rectangle; + +/** + * Created by kerry on 2017/12/4. + */ +public class WidgetCardTagBoundPane extends WidgetBoundPane { + private UISpinner cardTagWidth ; + + public WidgetCardTagBoundPane(XCreator source) { + super(source); + } + + @Override + public void initBoundPane() { + cardTagWidth = new UIBoundSpinner(0, Integer.MAX_VALUE, 1); + cardTagWidth.setGlobalName(Inter.getLocText("FR-Designer_Coords_And_Size")); + this.add(WidgetBoundsPaneFactory.createCardTagBoundPane(cardTagWidth)); + } + + @Override + public void update() { + if (parent == null) { + return; + } + FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner(); + Rectangle parentBounds = new Rectangle(parent.getBounds()); + + WCardTagLayout tagLayout = (WCardTagLayout)creator.toData(); + WTabDisplayPosition displayPosition = tagLayout.getDisplayPosition(); + if( ComparatorUtils.equals(displayPosition, WTabDisplayPosition.TOP_POSITION) || ComparatorUtils.equals(displayPosition, WTabDisplayPosition.BOTTOM_POSITION)){ + parentBounds.height = (int)cardTagWidth.getValue(); + }else{ + parentBounds.width = (int)cardTagWidth.getValue(); + } + + parent.setBounds(parentBounds); + LayoutAdapter layoutAdapter = AdapterBus.searchLayoutAdapter(formDesigner, parent); + if (layoutAdapter != null) { + parent.setBackupBound(parent.getBounds()); + layoutAdapter.fix(parent); + } + } + + @Override + protected String title4PopupWindow() { + return "absoluteBound"; + } + + @Override + public void populate() { + WCardTagLayout tagLayout = (WCardTagLayout)creator.toData(); + Rectangle bounds = new Rectangle(creator.getBounds()); + WTabDisplayPosition displayPosition = tagLayout.getDisplayPosition(); + if( ComparatorUtils.equals(displayPosition, WTabDisplayPosition.TOP_POSITION) || ComparatorUtils.equals(displayPosition, WTabDisplayPosition.BOTTOM_POSITION)){ + cardTagWidth.setValue(bounds.height); + }else{ + cardTagWidth.setValue(bounds.width); + } + + } + +} diff --git a/designer_form/src/com/fr/design/widget/ui/designer/layout/FRFitLayoutDefinePane.java b/designer_form/src/com/fr/design/widget/ui/designer/layout/FRFitLayoutDefinePane.java index b429ff84b4..4f75209108 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/layout/FRFitLayoutDefinePane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/layout/FRFitLayoutDefinePane.java @@ -29,6 +29,7 @@ import com.fr.form.ui.container.WAbsoluteBodyLayout; import com.fr.form.ui.container.WAbsoluteLayout; import com.fr.form.ui.container.WBodyLayoutType; import com.fr.form.ui.container.WFitLayout; +import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.Inter; @@ -144,7 +145,9 @@ public class FRFitLayoutDefinePane extends AbstractDataModify { @Override public WFitLayout updateBean() { WFitLayout layout = (WFitLayout) creator.toData(); - paddingBound.update(layout); + if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_Layout-Padding"))) { + paddingBound.update(layout); + } LayoutBorderStyle borderStyle = (LayoutBorderStyle) stylePane.getValue(); if(borderStyle != null){ layout.setBorderStyle(borderStyle); diff --git a/designer_form/src/com/fr/design/widget/ui/designer/layout/WCardLayoutDefinePane.java b/designer_form/src/com/fr/design/widget/ui/designer/layout/WCardLayoutDefinePane.java index a1d8347f5e..177a184cc0 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/layout/WCardLayoutDefinePane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/layout/WCardLayoutDefinePane.java @@ -1,32 +1,15 @@ 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.foldablepane.UIExpandablePane; -import com.fr.design.gui.icheckbox.UICheckBox; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.layout.TableLayoutHelper; -import com.fr.design.mainframe.widget.accessibles.AccessibleCardTagWLayoutBorderStyleEditor; import com.fr.design.widget.ui.designer.AbstractDataModify; -import com.fr.form.ui.LayoutBorderStyle; import com.fr.form.ui.container.WCardLayout; -import com.fr.general.Inter; -import javax.swing.*; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; /** * Created by ibm on 2017/8/7. */ public class WCardLayoutDefinePane extends AbstractDataModify { - private AccessibleCardTagWLayoutBorderStyleEditor accessibleCardTagWLayoutBorderStyleEditor; - private UICheckBox setCarousel; - private UISpinner carouselInterval; - private JPanel IntervalPane; public WCardLayoutDefinePane(XCreator xCreator) { super(xCreator); @@ -35,31 +18,6 @@ public class WCardLayoutDefinePane extends AbstractDataModify { public void initComponent() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); - carouselInterval = new UISpinner(0, 20, 1, 0); - accessibleCardTagWLayoutBorderStyleEditor = new AccessibleCardTagWLayoutBorderStyleEditor(); - JPanel accessibleCardlayout = FRGUIPaneFactory.createBorderLayout_S_Pane(); - JPanel stylePane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{ - new Component[]{new UILabel(Inter.getLocText("FR-Designer-Widget_Style")), accessibleCardTagWLayoutBorderStyleEditor}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_W3, IntervalConstants.INTERVAL_L1); - stylePane.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); - accessibleCardlayout.add(stylePane, BorderLayout.CENTER); - UIExpandablePane advanceExpandablePane = new UIExpandablePane(Inter.getLocText("FR-Designer_Advanced"), 280, 20, accessibleCardlayout); - final JPanel jPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); - jPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); - setCarousel = new UICheckBox(Inter.getLocText("FR-Designer_setCarousel")); - IntervalPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{ - new UILabel(Inter.getLocText("FR-Designer_carouselInterval")), carouselInterval}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); - IntervalPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); - jPanel.add(setCarousel, BorderLayout.NORTH); - jPanel.add(IntervalPane, BorderLayout.CENTER); - setCarousel.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - IntervalPane.setVisible(setCarousel.isSelected()); - } - }); - UIExpandablePane setCarouselPane = new UIExpandablePane(Inter.getLocText("FR-Designer_Tab_carousel"), 280, 20, jPanel); - this.add(advanceExpandablePane, BorderLayout.NORTH); - this.add(setCarouselPane, BorderLayout.CENTER); } @Override @@ -69,19 +27,13 @@ public class WCardLayoutDefinePane extends AbstractDataModify { @Override public void populateBean(WCardLayout ob) { - accessibleCardTagWLayoutBorderStyleEditor.setValue(ob.getBorderStyle()); - setCarousel.setSelected(ob.isCarousel()); - IntervalPane.setVisible(ob.isCarousel()); - carouselInterval.setValue(ob.getCarouselInterval()); + } @Override public WCardLayout updateBean() { WCardLayout layout = (WCardLayout) creator.toData(); - layout.setBorderStyle((LayoutBorderStyle) accessibleCardTagWLayoutBorderStyleEditor.getValue()); - layout.setCarousel(setCarousel.isSelected()); - layout.setCarouselInterval((int)carouselInterval.getValue()); return layout; } } 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 5eae81e3f1..ff2b139c2a 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 @@ -1,39 +1,92 @@ 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.foldablepane.UIExpandablePane; +import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.mainframe.widget.accessibles.AccessibleCardTagWLayoutBorderStyleEditor; 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 java.awt.*; +import com.fr.general.Inter; + +import javax.swing.BorderFactory; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; /** * Created by ibm on 2017/8/2. */ public class WCardMainLayoutDefinePane extends AbstractDataModify { + private AccessibleCardTagWLayoutBorderStyleEditor accessibleCardTagWLayoutBorderStyleEditor; + private UICheckBox setCarousel; + private UISpinner carouselInterval; + private JPanel IntervalPane; public WCardMainLayoutDefinePane(XCreator xCreator) { super(xCreator); - this.setPreferredSize(new Dimension(0,0)); + initComponent(); } public void initComponent() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); + carouselInterval = new UISpinner(0, 20, 1, 0); + accessibleCardTagWLayoutBorderStyleEditor = new AccessibleCardTagWLayoutBorderStyleEditor(); + JPanel accessibleCardlayout = FRGUIPaneFactory.createBorderLayout_S_Pane(); + JPanel stylePane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{ + new Component[]{new UILabel(Inter.getLocText("FR-Designer-Widget_Style")), accessibleCardTagWLayoutBorderStyleEditor}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_W3, IntervalConstants.INTERVAL_L1); + stylePane.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); + accessibleCardlayout.add(stylePane, BorderLayout.CENTER); + UIExpandablePane advanceExpandablePane = new UIExpandablePane(Inter.getLocText("FR-Designer_Advanced"), 280, 20, accessibleCardlayout); + final JPanel jPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); + jPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); + setCarousel = new UICheckBox(Inter.getLocText("FR-Designer_setCarousel")); + IntervalPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{ + new UILabel(Inter.getLocText("FR-Designer_carouselInterval")), carouselInterval}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); + IntervalPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); + jPanel.add(setCarousel, BorderLayout.NORTH); + jPanel.add(IntervalPane, BorderLayout.CENTER); + setCarousel.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + IntervalPane.setVisible(setCarousel.isSelected()); + } + }); + UIExpandablePane setCarouselPane = new UIExpandablePane(Inter.getLocText("FR-Designer_Tab_carousel"), 280, 20, jPanel); + this.add(advanceExpandablePane, BorderLayout.NORTH); + this.add(setCarouselPane, BorderLayout.CENTER); } @Override public String title4PopupWindow() { - return "cardMainLayout"; + return "tabFitLayout"; } @Override public void populateBean(WCardMainBorderLayout ob) { - + WCardLayout cardLayout = ob.getCardPart(); + accessibleCardTagWLayoutBorderStyleEditor.setValue(ob.getBorderStyle()); + setCarousel.setSelected(cardLayout.isCarousel()); + IntervalPane.setVisible(ob.isCarousel()); + carouselInterval.setValue(cardLayout.getCarouselInterval()); } @Override public WCardMainBorderLayout updateBean() { - WCardMainBorderLayout layout = (WCardMainBorderLayout)creator.toData(); + WCardMainBorderLayout layout = (WCardMainBorderLayout) creator.toData(); + layout.setBorderStyle((LayoutBorderStyle) accessibleCardTagWLayoutBorderStyleEditor.getValue()); + WCardLayout wCardLayout = layout.getCardPart(); + wCardLayout.setCarousel(setCarousel.isSelected()); + wCardLayout.setCarouselInterval((int)carouselInterval.getValue()); return layout; } } diff --git a/designer_form/src/com/fr/design/widget/ui/designer/layout/WCardTagLayoutDefinePane.java b/designer_form/src/com/fr/design/widget/ui/designer/layout/WCardTagLayoutDefinePane.java new file mode 100644 index 0000000000..3fe62fdacf --- /dev/null +++ b/designer_form/src/com/fr/design/widget/ui/designer/layout/WCardTagLayoutDefinePane.java @@ -0,0 +1,114 @@ +package com.fr.design.widget.ui.designer.layout; + +import com.fr.general.cardtag.TemplateStyle; +import com.fr.design.designer.IntervalConstants; +import com.fr.design.designer.creator.XCreator; +import com.fr.design.designer.creator.XLayoutContainer; +import com.fr.design.designer.creator.cardlayout.XWCardMainBorderLayout; +import com.fr.design.foldablepane.UIExpandablePane; +import com.fr.design.gui.ibutton.UIButtonGroup; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.style.FRFontPane; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.mainframe.widget.accessibles.AccessibleImgBackgroundEditor; +import com.fr.design.mainframe.widget.accessibles.AccessibleTemplateStyleEditor; +import com.fr.design.widget.ui.designer.AbstractDataModify; +import com.fr.form.ui.LayoutBorderStyle; +import com.fr.form.ui.container.WTabDisplayPosition; +import com.fr.form.ui.container.WTabTextDirection; +import com.fr.form.ui.container.cardlayout.WCardTagLayout; +import com.fr.general.Background; +import com.fr.general.FRFont; +import com.fr.general.Inter; + +import javax.swing.BorderFactory; +import javax.swing.JPanel; +import javax.swing.SwingConstants; +import java.awt.BorderLayout; +import java.awt.Component; + +/** + * Created by kerry on 2017/11/16. + */ +public class WCardTagLayoutDefinePane extends AbstractDataModify { + private AccessibleImgBackgroundEditor backgroundEditor; + private FRFontPane frFontPane; + private UIButtonGroup displayPositionGroup; + private UIButtonGroup textDirectionGroup; + private AccessibleTemplateStyleEditor templateStyleEditor; + + public WCardTagLayoutDefinePane(XCreator xCreator) { + super(xCreator); + initComponent(); + } + + public void initComponent() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + + backgroundEditor = new AccessibleImgBackgroundEditor(); + templateStyleEditor = new AccessibleTemplateStyleEditor(); + double f = TableLayout.FILL; + double p = TableLayout.PREFERRED; + double[] rowSize = {p, p, p, p, p}; + double[] columnSize = {p, f}; + int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}; + + UILabel fontLabel = new UILabel(Inter.getLocText("FR-Designer_Font")); + fontLabel.setVerticalAlignment(SwingConstants.TOP); + frFontPane = new FRFontPane(); + displayPositionGroup = new UIButtonGroup(WTabDisplayPosition.getStringArray()); + textDirectionGroup = new UIButtonGroup(WTabTextDirection.getStringArray()); + Component[][] components = new Component[][]{ + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Tab_Style_Template")), templateStyleEditor}, + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Tab_Display_Position")), displayPositionGroup}, + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Background")), backgroundEditor}, + new Component[]{fontLabel, frFontPane}, + new Component[]{new UILabel(Inter.getLocText("FR-Designer_StyleAlignment_Text_Rotation")), textDirectionGroup} + }; + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); + JPanel jPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); + panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); + jPanel.add(panel, BorderLayout.CENTER); + UIExpandablePane advanceExpandablePane = new UIExpandablePane(Inter.getLocText("FR-Designer_Advanced"), 280, 20, jPanel); + this.add(advanceExpandablePane, BorderLayout.CENTER); + } + + @Override + public String title4PopupWindow() { + return "tabFitLayout"; + } + + @Override + public void populateBean(WCardTagLayout ob) { + //标题背景和字体属性设置在WCardLayout上做兼容 + XLayoutContainer topLayout = creator.getTopLayout(); + LayoutBorderStyle layoutBorderStyle = ((XWCardMainBorderLayout)topLayout).getCardPart().toData().getBorderStyle(); + + displayPositionGroup.setSelectedIndex(ob.getDisplayPosition().getType()); + textDirectionGroup.setSelectedIndex(ob.getTextDirection().getType()); + backgroundEditor.setValue(layoutBorderStyle.getTitle().getBackground()); + templateStyleEditor.setValue(ob.getTemplateStyle()); + FRFont frFont = layoutBorderStyle.getTitle().getFrFont(); + if (frFont != null) { + frFontPane.populateBean(frFont); + } + } + + @Override + public WCardTagLayout updateBean() { + //标题背景和字体属性设置在WCardLayout上做兼容 + XLayoutContainer topLayout = creator.getTopLayout(); + LayoutBorderStyle layoutBorderStyle = ((XWCardMainBorderLayout)topLayout).getCardPart().toData().getBorderStyle(); + FRFont frFont = layoutBorderStyle.getTitle().getFrFont() == null ? FRFont.getInstance() : layoutBorderStyle.getTitle().getFrFont(); + layoutBorderStyle.getTitle().setBackground((Background) backgroundEditor.getValue()); + layoutBorderStyle.getTitle().setFrFont(frFontPane.update(frFont)); + WCardTagLayout layout = (WCardTagLayout) creator.toData(); + layout.setDisplayPosition(WTabDisplayPosition.parse(displayPositionGroup.getSelectedIndex())); + layout.setTextDirection(WTabTextDirection.parse(textDirectionGroup.getSelectedIndex())); + layout.setTemplateStyle((TemplateStyle) templateStyleEditor.getValue()); + + return layout; + } +} diff --git a/designer_form/src/com/fr/design/widget/ui/designer/layout/WTabFitLayoutDefinePane.java b/designer_form/src/com/fr/design/widget/ui/designer/layout/WTabFitLayoutDefinePane.java index 85ca8ee977..77452e07b9 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/layout/WTabFitLayoutDefinePane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/layout/WTabFitLayoutDefinePane.java @@ -19,6 +19,7 @@ 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 javax.swing.BorderFactory; @@ -118,7 +119,9 @@ public class WTabFitLayoutDefinePane extends AbstractDataModify { public WTabFitLayout updateBean() { WTabFitLayout layout = (WTabFitLayout) creator.toData(); borderStyle.update(layout); - paddingBoundPane.update(layout); + if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_Layout-Padding"))) { + paddingBoundPane.update(layout); + } int gap = (int)componentInterval.getValue(); setLayoutGap(gap, layout, (XWTabFitLayout)creator); layout.getCurrentCard().setText(titleField.getText());