diff --git a/designer/src/com/fr/design/widget/CellWidgetCardPane.java b/designer/src/com/fr/design/widget/CellWidgetCardPane.java index 3d135d34c..b3f5fef11 100644 --- a/designer/src/com/fr/design/widget/CellWidgetCardPane.java +++ b/designer/src/com/fr/design/widget/CellWidgetCardPane.java @@ -1,6 +1,7 @@ package com.fr.design.widget; import com.fr.design.data.DataCreatorUI; +import com.fr.design.designer.IntervalConstants; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.BasicScrollPane; import com.fr.design.foldablepane.UIExpandablePane; @@ -73,7 +74,7 @@ public class CellWidgetCardPane extends BasicPane { tabbedPane = new CardLayout(); center = new JPanel(tabbedPane); jPanel.add(center, BorderLayout.CENTER); - + jPanel.setBorder(BorderFactory.createEmptyBorder(0, IntervalConstants.INTERVAL_L6, 0, 0)); attriTabPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); eventTabPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); initPaneList(); @@ -91,7 +92,7 @@ public class CellWidgetCardPane extends BasicPane { } }; tabsHeaderIconPane.setNeedLeftRightOutLine(false); - jPanel.add(tabsHeaderIconPane, BorderLayout.NORTH); + this.add(tabsHeaderIconPane, BorderLayout.NORTH); widgetPropertyPane = new BasicWidgetPropertySettingPane(); diff --git a/designer/src/com/fr/design/widget/ui/CheckBoxGroupDefinePane.java b/designer/src/com/fr/design/widget/ui/CheckBoxGroupDefinePane.java index 710d566b8..5a1c24072 100644 --- a/designer/src/com/fr/design/widget/ui/CheckBoxGroupDefinePane.java +++ b/designer/src/com/fr/design/widget/ui/CheckBoxGroupDefinePane.java @@ -9,6 +9,7 @@ import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.widget.component.CheckBoxDictPane; import com.fr.form.ui.CheckBoxGroup; import com.fr.general.Inter; @@ -36,7 +37,7 @@ public class CheckBoxGroupDefinePane extends FieldEditorDefinePane { - private UIHeadGroup returnTypeComboBox; + private UIButtonGroup returnTypeComboBox; private DateValuePane startDv; private DateValuePane endDv; private UIComboBox currentFormatComboBox; private UILabel currentSamplelabel; - private UIHeadGroup fomatHeadGroup; + private UIButtonGroup fomatHeadGroup; @@ -47,12 +48,7 @@ public class DateEditorDefinePane extends DirectWriteEditorDefinePane(new String[] {Inter.getLocText("Date") , Inter.getLocText("String")}); JPanel formatHead = createFormatHead(); startDv = new DateValuePane(); @@ -118,8 +114,11 @@ public class DateEditorDefinePane extends DirectWriteEditorDefinePane 0) { @@ -175,6 +176,7 @@ public class DateEditorDefinePane extends DirectWriteEditorDefinePane e protected WaterMarkDictPane waterMarkDictPane; public DirectWriteEditorDefinePane() { - this.initComponents(); + super(); } diff --git a/designer/src/com/fr/design/widget/ui/FieldEditorDefinePane.java b/designer/src/com/fr/design/widget/ui/FieldEditorDefinePane.java index 054380b4d..15ad11fd5 100644 --- a/designer/src/com/fr/design/widget/ui/FieldEditorDefinePane.java +++ b/designer/src/com/fr/design/widget/ui/FieldEditorDefinePane.java @@ -1,7 +1,7 @@ package com.fr.design.widget.ui; -import com.fr.base.GraphHelper; import com.fr.design.constants.LayoutConstants; +import com.fr.design.designer.IntervalConstants; import com.fr.design.foldablepane.UIExpandablePane; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; @@ -20,8 +20,6 @@ import java.awt.event.ItemEvent; import java.awt.event.ItemListener; public abstract class FieldEditorDefinePane extends AbstractDataModify { - private static final int ALLOW_BLANK_CHECK_BOX_WIDTH = GraphHelper.getLocTextWidth("FR-Designer_Allow_Null") + 30; - private static final int ALLOW_BLANK_CHECK_BOX_HEIGHT = 30; protected UICheckBox allowBlankCheckBox; // richer:错误信息,是所有控件共有的属性,所以放到这里来 protected UITextField errorMsgTextField; @@ -95,39 +93,29 @@ public abstract class FieldEditorDefinePane extends Abstr protected void addValidatePane() { validatePane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - final UILabel uiLabel = new UILabel(Inter.getLocText(new String[]{"FR-Designer_Error", "FR-Designer_Tooltips"})); + final UILabel uiLabel = new UILabel(Inter.getLocText("FR-Designer_Widget_Error_Tip")); initErrorMsgPane(); allowBlankCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Allow_Null")); allowBlankCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - allowBlankCheckBox.setPreferredSize(new Dimension(ALLOW_BLANK_CHECK_BOX_WIDTH, ALLOW_BLANK_CHECK_BOX_HEIGHT)); + JPanel borderPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + final JPanel errorTipPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{uiLabel, errorMsgTextField}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L1, LayoutConstants.VGAP_MEDIUM); + errorTipPane.setBorder(BorderFactory.createEmptyBorder(0, IntervalConstants.INTERVAL_L5, 0, 0)); + borderPane.add(errorTipPane, BorderLayout.CENTER); allowBlankCheckBox.addItemListener(new ItemListener() { - @Override public void itemStateChanged(ItemEvent e) { boolean isSelected = allowBlankCheckBox.isSelected(); - uiLabel.setVisible(!isSelected); - errorMsgTextField.setVisible(!isSelected); - if (isSelected) { - uiLabel.setPreferredSize(new Dimension(0, 0)); - errorMsgTextField.setPreferredSize(new Dimension(0, 0)); - } else { - uiLabel.setPreferredSize(new Dimension(66, 20)); - errorMsgTextField.setPreferredSize(new Dimension(150, 20)); - } + errorTipPane.setVisible(!isSelected); } }); - - double f = TableLayout.FILL; - double p = TableLayout.PREFERRED; + errorTipPane.setBorder(BorderFactory.createEmptyBorder(0, IntervalConstants.INTERVAL_L5, 0, 0)); Component[][] components = new Component[][]{ - new Component[]{allowBlankCheckBox, null}, - new Component[]{uiLabel, errorMsgTextField}, + new Component[]{allowBlankCheckBox}, + new Component[]{borderPane}, }; - double[] rowSize = {p, p}; - double[] columnSize = {p, f}; - int[][] rowCount = {{1, 1}, {1, 1}}; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_SMALL, 1); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components,TableLayoutHelper.FILL_LASTCOLUMN, 5, 5); + panel.setBorder(BorderFactory.createEmptyBorder(IntervalConstants.INTERVAL_L1, 0, IntervalConstants.INTERVAL_L6, 0)); validatePane.add(panel, BorderLayout.NORTH); JPanel contentPane = this.setValidatePane(); diff --git a/designer/src/com/fr/design/widget/ui/NumberEditorDefinePane.java b/designer/src/com/fr/design/widget/ui/NumberEditorDefinePane.java index b47355143..122441b81 100644 --- a/designer/src/com/fr/design/widget/ui/NumberEditorDefinePane.java +++ b/designer/src/com/fr/design/widget/ui/NumberEditorDefinePane.java @@ -1,60 +1,20 @@ package com.fr.design.widget.ui; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - - import javax.swing.BorderFactory; -import javax.swing.JComponent; -import javax.swing.JFormattedTextField; - -import com.fr.design.constants.LayoutConstants; -import com.fr.design.gui.ilable.UILabel; - import javax.swing.JPanel; -import javax.swing.SpinnerNumberModel; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; -import javax.swing.text.DefaultFormatter; - -import com.fr.design.gui.icheckbox.UICheckBox; -import com.fr.design.gui.ispinner.UIBasicSpinner; -import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.layout.TableLayout; -import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.widget.component.NumberEditorValidatePane; import com.fr.form.ui.NumberEditor; -import com.fr.general.Inter; public class NumberEditorDefinePane extends FieldEditorDefinePane { /** * FieldEditorDefinePane */ private static final long serialVersionUID = 8011242951911686805L; - private UICheckBox allowDecimalsCheckBox; - private UICheckBox allowNegativeCheckBox; - private UICheckBox setMaxValueCheckBox; - private UICheckBox setMinValueCheckBox; - private UIBasicSpinner maxValueSpinner; - private SpinnerNumberModel maxValueModel; - private UIBasicSpinner minValueSpinner; - private SpinnerNumberModel minValueModel; - private UISpinner decimalLength; - private JPanel limitNumberPane; - private WaterMarkDictPane waterMarkDictPane; - - private ActionListener allowDecimalsListener; - - private ActionListener allowNegativeListener ; - - public ActionListener setMaxListener; - - private ActionListener setMinListener; - - private ChangeListener maxValueChangeListener; - private ChangeListener minValueChangeListener; + private WaterMarkDictPane waterMarkDictPane; + private NumberEditorValidatePane numberEditorValidatePane; public NumberEditorDefinePane() { } @@ -75,226 +35,23 @@ public class NumberEditorDefinePane extends FieldEditorDefinePane } public JPanel setValidatePane() { - initListeners(); - - this.allowDecimalsCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Allow_Decimals")); - allowDecimalsCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - this.decimalLength = new UISpinner(0, Integer.MAX_VALUE, 1, 16); - this.allowDecimalsCheckBox.addActionListener(allowDecimalsListener); - - this.allowNegativeCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Allow_Negative")); - this.allowNegativeCheckBox.addActionListener(allowNegativeListener); - allowNegativeCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - - this.setMaxValueCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Max_Value"), false); - setMaxValueCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - this.maxValueSpinner = new UIBasicSpinner(maxValueModel = new SpinnerNumberModel(0D, -Double.MAX_VALUE, Double.MAX_VALUE, 1D)); - setNotAllowsInvalid(this.maxValueSpinner); - this.setMaxValueCheckBox.addActionListener(setMaxListener); - this.maxValueSpinner.addChangeListener(maxValueChangeListener); - - this.setMinValueCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Min_Value"), false); - setMinValueCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - this.minValueSpinner = new UIBasicSpinner(minValueModel = new SpinnerNumberModel(0D, -Double.MAX_VALUE, Double.MAX_VALUE, 1D)); - setNotAllowsInvalid(this.minValueSpinner); - this.setMinValueCheckBox.addActionListener(setMinListener); - this.minValueSpinner.addChangeListener(minValueChangeListener); - - UILabel numberLabel = new UILabel(Inter.getLocText("FR-Designer_Decimal_Places")); - limitNumberPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{numberLabel, decimalLength}}, TableLayoutHelper.FILL_LASTCOLUMN, 18, 7); - double f = TableLayout.FILL; - double p = TableLayout.PREFERRED; - Component[][] components = new Component[][]{ - new Component[]{allowDecimalsCheckBox, null}, - new Component[]{limitNumberPane, null}, - new Component[]{allowNegativeCheckBox, null}, - new Component[]{setMaxValueCheckBox, maxValueSpinner}, - new Component[]{setMinValueCheckBox, minValueSpinner}, - }; - double[] rowSize = {p, p, p, p, p}; - double[] columnSize = {p, f}; - int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}; - JPanel pane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM); - pane.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); - return pane; + numberEditorValidatePane = new NumberEditorValidatePane(); + return numberEditorValidatePane; } - @Override protected void populateSubFieldEditorBean(NumberEditor e) { - allowDecimalsCheckBox.setSelected(e.isAllowDecimals()); - if (e.isAllowDecimals()) { - this.decimalLength.setValue(e.getMaxDecimalLength()); - } else { - this.limitNumberPane.setVisible(false); - this.limitNumberPane.setPreferredSize(new Dimension(0,0)); - } - - allowNegativeCheckBox.setSelected(e.isAllowNegative()); - if (e.getMaxValue() == Double.MAX_VALUE) { - setMaxValueCheckBox.setSelected(false); - maxValueSpinner.setValue(new Double(Double.MAX_VALUE)); - maxValueSpinner.setEnabled(false); - } else { - setMaxValueCheckBox.setSelected(true); - maxValueSpinner.setEnabled(true); - maxValueSpinner.setValue(new Double(e.getMaxValue())); - } - - if (e.getMinValue() == -Double.MAX_VALUE) { - setMinValueCheckBox.setSelected(false); - minValueSpinner.setValue(new Double(-Double.MAX_VALUE)); - minValueSpinner.setEnabled(false); - - } else { - minValueSpinner.setEnabled(true); - setMinValueCheckBox.setSelected(true); - minValueSpinner.setValue(new Double(e.getMinValue())); - } + this.numberEditorValidatePane.populate(e); this.waterMarkDictPane.populate(e); } @Override protected NumberEditor updateSubFieldEditorBean() { - NumberEditor ob = new NumberEditor(); - ob.setAllowDecimals(allowDecimalsCheckBox.isSelected()); - if (allowDecimalsCheckBox.isSelected()) { - ob.setMaxDecimalLength((int)this.decimalLength.getValue()); - } - - ob.setAllowNegative(allowNegativeCheckBox.isSelected()); - if (setMaxValueCheckBox.isSelected()) { - ob.setMaxValue(Double.parseDouble("" + maxValueSpinner.getValue())); - } else { - ob.setMaxValue(Double.MAX_VALUE); - } - - if (setMinValueCheckBox.isSelected()) { - ob.setMinValue(Double.parseDouble("" + minValueSpinner.getValue())); - } else { - ob.setMinValue(-Double.MAX_VALUE); - } - + this.numberEditorValidatePane.update(ob); this.waterMarkDictPane.update(ob); - - return ob; } - private void initListeners(){ allowDecimalsListener = new ActionListener() { - public void actionPerformed(ActionEvent e) { - if (allowDecimalsCheckBox.isSelected()) { - limitNumberPane.setVisible(true); - limitNumberPane.setPreferredSize(new Dimension(215,20)); - } else { - limitNumberPane.setVisible(false); - limitNumberPane.setPreferredSize(new Dimension(0,0)); - } - } - }; - - allowNegativeListener = new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - if (allowNegativeCheckBox.isSelected()) { - minValueModel.setMinimum(-Double.MAX_VALUE); - if (!setMinValueCheckBox.isSelected()) { - maxValueModel.setMinimum(-Double.MAX_VALUE); - } - } else { - minValueModel.setMinimum(0.0); - if (!setMinValueCheckBox.isSelected()) { - maxValueModel.setMinimum(0.0); - } - Double minValue = Double.parseDouble("" + minValueSpinner.getValue()); - Double maxValue = Double.parseDouble("" + maxValueSpinner.getValue()); - if (minValue < 0.0) { - minValueSpinner.setValue(0.0); - } - if (maxValue < 0.0) { - maxValueSpinner.setValue(0.0); - } - } - } - }; - - - setMaxListener = new ActionListener() { - public void actionPerformed(ActionEvent e) { - if (setMaxValueCheckBox.isSelected()) { - maxValueSpinner.setEnabled(true); - Double value = new Double(0); - if (setMinValueCheckBox.isSelected()) { - Double minValue = Double.parseDouble("" + minValueSpinner.getValue()); - if (minValue > value) { - value = minValue; - } - } - maxValueSpinner.setValue(value); - } else { - maxValueSpinner.setEnabled(false); - minValueModel.setMaximum(Double.MAX_VALUE); - } - } - }; - - - setMinListener = new ActionListener() { - public void actionPerformed(ActionEvent e) { - if (setMinValueCheckBox.isSelected()) { - minValueSpinner.setEnabled(true); - Double value = new Double(0); - if (setMaxValueCheckBox.isSelected()) { - Double maxValue = Double.parseDouble("" + maxValueSpinner.getValue()); - if (maxValue < value) { - value = maxValue; - } - } - minValueSpinner.setValue(value); - } else { - minValueSpinner.setEnabled(false); - maxValueModel.setMinimum(allowNegativeCheckBox.isSelected() ? (-Double.MAX_VALUE) : new Double(0)); - } - } - }; - - maxValueChangeListener = new ChangeListener() { - - @Override - public void stateChanged(ChangeEvent e) { - if (setMaxValueCheckBox.isSelected()) { - if (setMinValueCheckBox.isSelected()) { - minValueModel.setMaximum(Double.parseDouble("" + maxValueSpinner.getValue())); - } - } - } - }; - - minValueChangeListener = new ChangeListener() { - - @Override - public void stateChanged(ChangeEvent e) { - if (setMinValueCheckBox.isSelected()) { - if (setMaxValueCheckBox.isSelected()) { - maxValueModel.setMinimum(Double.parseDouble("" + minValueSpinner.getValue())); - } - } - } - }; - } - - private void setNotAllowsInvalid(UIBasicSpinner jspinner) { - JComponent editor = jspinner.getEditor(); - if (editor instanceof UIBasicSpinner.DefaultEditor) { - JFormattedTextField ftf = ((UIBasicSpinner.DefaultEditor) editor).getTextField(); - ftf.setColumns(10); - JFormattedTextField.AbstractFormatter formatter = ftf.getFormatter(); - DefaultFormatter df = (DefaultFormatter) formatter; - df.setAllowsInvalid(false); - } - } - } \ No newline at end of file diff --git a/designer/src/com/fr/design/widget/ui/btn/DefineAppendColumnRowPane.java b/designer/src/com/fr/design/widget/ui/btn/DefineAppendColumnRowPane.java index bc965f29d..da3d173f3 100644 --- a/designer/src/com/fr/design/widget/ui/btn/DefineAppendColumnRowPane.java +++ b/designer/src/com/fr/design/widget/ui/btn/DefineAppendColumnRowPane.java @@ -38,11 +38,11 @@ public class DefineAppendColumnRowPane extends BasicPane { crEditor = new ColumnRowEditor(); jNumberEditor = new UISpinner(0, 100 , 1, 0); - rowCountLable = new UILabel(Inter.getLocText("Edit-Row_Count") + ":"); + rowCountLable = new UILabel(Inter.getLocText("Edit-Row_Count")); JPanel lpane = FRGUIPaneFactory.createBorderLayout_S_Pane(); lpane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); lpane.add(new UILabel(Inter.getLocText("Append_Delete_Row_Message"))); - Component[][] components = { { new UILabel(Inter.getLocText(new String[]{"Specify", "Cell"}) + ":"), crEditor }, { rowCountLable, jNumberEditor } ,{lpane,null}}; + Component[][] components = { { new UILabel(Inter.getLocText(new String[]{"Specify", "Cell"})), crEditor }, { rowCountLable, jNumberEditor } ,{lpane,null}}; JPanel contentPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); contentPane.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); diff --git a/designer/src/com/fr/design/widget/ui/btn/DefineDeleteColumnRowPane.java b/designer/src/com/fr/design/widget/ui/btn/DefineDeleteColumnRowPane.java index 2b190afc8..e4b9d3c3b 100644 --- a/designer/src/com/fr/design/widget/ui/btn/DefineDeleteColumnRowPane.java +++ b/designer/src/com/fr/design/widget/ui/btn/DefineDeleteColumnRowPane.java @@ -34,9 +34,10 @@ public class DefineDeleteColumnRowPane extends BasicPane { double rowSize[] = { p, p}; double columnSize[] = { p, f}; crEditor = new ColumnRowEditor(); + UILabel messageLabel = new UILabel(Inter.getLocText("Append_Delete_Row_Message")); Component[][] components = { - { new UILabel(Inter.getLocText(new String[]{"Specify", "Cell"}) + ":"), crEditor }, - {new UILabel(Inter.getLocText("Append_Delete_Row_Message")),null}}; + { new UILabel(Inter.getLocText(new String[]{"Specify", "Cell"})), crEditor }, + { messageLabel, null}}; JPanel contentPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); contentPane.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); setLayout(FRGUIPaneFactory.createBorderLayout()); diff --git a/designer/src/com/fr/design/widget/ui/btn/TreeNodeToogleButtonDefinePane.java b/designer/src/com/fr/design/widget/ui/btn/TreeNodeToogleButtonDefinePane.java index d28b505de..0f3778652 100644 --- a/designer/src/com/fr/design/widget/ui/btn/TreeNodeToogleButtonDefinePane.java +++ b/designer/src/com/fr/design/widget/ui/btn/TreeNodeToogleButtonDefinePane.java @@ -1,5 +1,6 @@ package com.fr.design.widget.ui.btn; +import com.fr.design.designer.IntervalConstants; import com.fr.design.foldablepane.UIExpandablePane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; @@ -27,34 +28,21 @@ public class TreeNodeToogleButtonDefinePane exte } protected void initComponents() { - setLayout(FRGUIPaneFactory.createBorderLayout()); - JPanel attrPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - attrPane.setBorder(BorderFactory.createEmptyBorder(0, 4, 0, 4)); + this.setLayout(FRGUIPaneFactory.createBorderLayout()); double f = TableLayout.FILL; double p = TableLayout.PREFERRED; double rowSize[] = {p}; double columnSize[] = {p, f}; Component[][] n_components = { - {new UILabel(Inter.getLocText("FR-Designer_Button-Type") + ":"), createButtonTypeComboBox()}, + {new UILabel(Inter.getLocText("FR-Designer_Button-Type")), createButtonTypeComboBox()}, }; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(n_components, rowSize, columnSize, 0, 8); - UIExpandablePane advancedPane = new UIExpandablePane("高级", 280, 20, panel); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(n_components, rowSize, columnSize, IntervalConstants.INTERVAL_L2, 8); + JPanel borderPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); + borderPanel.add(panel, BorderLayout.CENTER); + panel.setBorder(BorderFactory.createEmptyBorder(IntervalConstants.INTERVAL_L1, 0, 0, 0)); + UIExpandablePane advancedPane = new UIExpandablePane(Inter.getLocText("FR-Designer_Advanced"), 280, 20, borderPanel); this.add(advancedPane); - - - -// setLayout(FRGUIPaneFactory.createBorderLayout()); -// double p = TableLayout.PREFERRED; -// double rowSize[] = {p}; -// double columnSize[] = {p, 184}; -// Component[][] n_components = { -// {new UILabel(Inter.getLocText(new String[]{"Form-Button", "Type"}) + ":"), createButtonTypeComboBox()} -// }; -// JPanel northPane = TableLayoutHelper.createTableLayoutPane(n_components, rowSize, columnSize); -// JPanel advancedPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Advanced")); -//// advancedPane.add(northPane); -// add(northPane); } @Override diff --git a/designer_base/src/com/fr/design/designer/IntervalConstants.java b/designer_base/src/com/fr/design/designer/IntervalConstants.java new file mode 100644 index 000000000..0f4256c4e --- /dev/null +++ b/designer_base/src/com/fr/design/designer/IntervalConstants.java @@ -0,0 +1,22 @@ +package com.fr.design.designer; + +/** + * Created by kerry on 2017/9/8. + */ +public class IntervalConstants { + + public static final int INTERVAL_L1 = 10; + + public static final int INTERVAL_L2 = 15; + + public static final int INTERVAL_L3 = 155; + + public static final int INTERVAL_L4 = 10; + + public static final int INTERVAL_L5 = 12; + + public static final int INTERVAL_L6 = 5; + + public static final int INTERVAL_L7 = 8; + +} diff --git a/designer_base/src/com/fr/design/gui/columnrow/ColumnRowPane.java b/designer_base/src/com/fr/design/gui/columnrow/ColumnRowPane.java index f0622bf85..997220801 100644 --- a/designer_base/src/com/fr/design/gui/columnrow/ColumnRowPane.java +++ b/designer_base/src/com/fr/design/gui/columnrow/ColumnRowPane.java @@ -17,6 +17,7 @@ import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.DocumentFilter; +import com.fr.design.designer.IntervalConstants; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; import com.fr.design.gui.itextfield.UITextField; @@ -96,7 +97,7 @@ public class ColumnRowPane extends JPanel implements UIObserver { * 初始化元素 */ public void initComponents() { - this.setLayout(new GridLayout(0, 2, 0, 0)); + this.setLayout(new GridLayout(0, 2, IntervalConstants.INTERVAL_L6, 0)); initColSpinner(); this.add(columnSpinner, BorderLayout.WEST); initRowSpinner(); diff --git a/designer_base/src/com/fr/design/gui/frpane/RegFieldPane.java b/designer_base/src/com/fr/design/gui/frpane/RegFieldPane.java index 6768d0dfd..25bef67e9 100644 --- a/designer_base/src/com/fr/design/gui/frpane/RegFieldPane.java +++ b/designer_base/src/com/fr/design/gui/frpane/RegFieldPane.java @@ -1,5 +1,7 @@ package com.fr.design.gui.frpane; +import com.fr.design.constants.LayoutConstants; +import com.fr.design.designer.IntervalConstants; import com.fr.design.dialog.BasicPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; @@ -31,6 +33,7 @@ public class RegFieldPane extends RegPane { } public void initComponents() { + this.setBorder(BorderFactory.createEmptyBorder(0, 0, IntervalConstants.INTERVAL_L1, 0)); regErrorMsgPane = new RegErrorMsgPane(); final RegChangeListener regChangeListener = new RegChangeListener() { @@ -68,9 +71,11 @@ public class RegFieldPane extends RegPane { public RegErrorMsgPane() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); - this.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0)); + this.setBorder(BorderFactory.createEmptyBorder(IntervalConstants.INTERVAL_L6, IntervalConstants.INTERVAL_L5, 0, 0)); initRegErrorMsgField(); - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{new UILabel(Inter.getLocText("FR-Designer_Widget_Error_Tip")), regErrorMsgField}}, TableLayoutHelper.FILL_LASTCOLUMN, 18, 7); + UILabel tipLabel = new UILabel(Inter.getLocText("FR-Designer_Widget_Error_Tip")); + tipLabel.setPreferredSize(new Dimension(60, 20)); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{tipLabel, regErrorMsgField}}, TableLayoutHelper.FILL_LASTCOLUMN, 10, LayoutConstants.VGAP_MEDIUM); this.add(panel); } diff --git a/designer_base/src/com/fr/design/gui/frpane/RegPane.java b/designer_base/src/com/fr/design/gui/frpane/RegPane.java index 84201cdef..c992147f5 100644 --- a/designer_base/src/com/fr/design/gui/frpane/RegPane.java +++ b/designer_base/src/com/fr/design/gui/frpane/RegPane.java @@ -1,6 +1,7 @@ package com.fr.design.gui.frpane; import com.fr.design.constants.LayoutConstants; +import com.fr.design.designer.IntervalConstants; import com.fr.design.dialog.BasicPane; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.icombobox.UIComboBoxRenderer; @@ -70,7 +71,7 @@ public class RegPane extends BasicPane { private void initComponents(){ this.setLayout(FRGUIPaneFactory.createBorderLayout()); - this.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); + this.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); regComboBox = new UIComboBox(regType); regComboBox.setRenderer(listCellRender); @@ -331,11 +332,13 @@ public class RegPane extends BasicPane { private final String[] dataType = {EMB_REG1, EMB_REG2, EMB_REG3, Inter.getLocText("FR-Designer_Custom")}; DefaultComboBoxModel DefaultComboBoxModel= new DefaultComboBoxModel(dataType); public RegPhonePane() { - this.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 5)); + this.setBorder(BorderFactory.createEmptyBorder(IntervalConstants.INTERVAL_L6, IntervalConstants.INTERVAL_L5, 0, 0)); this.setLayout(FRGUIPaneFactory.createBorderLayout()); dataTypeComboBox = new UIComboBox(DefaultComboBoxModel); JTextField editFiled = (JTextField)(dataTypeComboBox.getEditor().getEditorComponent()); - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{new UILabel(Inter.getLocText("FR-Designer_Data_Type")), dataTypeComboBox}}, TableLayoutHelper.FILL_LASTCOLUMN, 18, 7); + UILabel dataTypeLable = new UILabel(Inter.getLocText("FR-Designer_Data_Type")); + dataTypeLable.setPreferredSize(new Dimension(60, 20)); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{dataTypeLable, dataTypeComboBox}}, TableLayoutHelper.FILL_LASTCOLUMN, 10, 0); this.add(panel); editFiled.setDocument(new LimitedDocument(LIMIT_LENGTH, REG_PATTERN)); dataTypeComboBox.addItemListener(new ItemListener() { @@ -393,20 +396,24 @@ public class RegPane extends BasicPane { public RegLengthPane(){ this.setLayout(FRGUIPaneFactory.createBorderLayout()); - this.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 5)); + this.setBorder(BorderFactory.createEmptyBorder(IntervalConstants.INTERVAL_L6, IntervalConstants.INTERVAL_L5, 0, 0)); this.setPreferredSize(new Dimension(210, 56)); minLenSpinner = new UISpinner(0, Integer.MAX_VALUE, 1, 0); maxLenSpinner = new UISpinner(0, Integer.MAX_VALUE, 1, 0); + UILabel minLabel = new UILabel(Inter.getLocText("FR-Designer_Reg_Min_Length")); + UILabel maxLabel = new UILabel(Inter.getLocText("FR-Designer_Reg_Max_Length")); + minLabel.setPreferredSize(new Dimension(60, 20)); + maxLabel.setPreferredSize(new Dimension(60, 20)); double f = TableLayout.FILL; double p = TableLayout.PREFERRED; Component[][] components = new Component[][]{ - new Component[]{new UILabel(Inter.getLocText("FR-Designer_Reg_Min_Length") + ":"), minLenSpinner }, - new Component[]{new UILabel(Inter.getLocText("FR-Designer_Reg_Max_Length") + ":"), maxLenSpinner}, + new Component[]{minLabel, minLenSpinner }, + new Component[]{maxLabel, maxLenSpinner}, }; double[] rowSize = {p, p}; double[] columnSize = {p,f}; int[][] rowCount = {{1, 1},{1, 1}}; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_SMALL, LayoutConstants.VGAP_MEDIUM); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 10, LayoutConstants.VGAP_MEDIUM); this.add(panel); @@ -446,9 +453,9 @@ public class RegPane extends BasicPane { public CustomRegRexPane(){ this.setLayout(FRGUIPaneFactory.createBorderLayout()); - this.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 5)); + this.setBorder(BorderFactory.createEmptyBorder(IntervalConstants.INTERVAL_L6, IntervalConstants.INTERVAL_L5, 0, 0)); regTextField = new UITextField(); - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{new UILabel(Inter.getLocText("FR-Designer_Reg_Expressions")), regTextField}}, TableLayoutHelper.FILL_LASTCOLUMN, 18, 7); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{new UILabel(Inter.getLocText("FR-Designer_Reg_Expressions")), regTextField}}, TableLayoutHelper.FILL_LASTCOLUMN, 10, LayoutConstants.VGAP_MEDIUM); this.add(panel); } diff --git a/designer_form/src/com/fr/design/mainframe/widget/accessibles/AccessibleImgBackgroundEditor.java b/designer_base/src/com/fr/design/mainframe/widget/accessibles/AccessibleImgBackgroundEditor.java similarity index 97% rename from designer_form/src/com/fr/design/mainframe/widget/accessibles/AccessibleImgBackgroundEditor.java rename to designer_base/src/com/fr/design/mainframe/widget/accessibles/AccessibleImgBackgroundEditor.java index cbead6204..931793aab 100644 --- a/designer_form/src/com/fr/design/mainframe/widget/accessibles/AccessibleImgBackgroundEditor.java +++ b/designer_base/src/com/fr/design/mainframe/widget/accessibles/AccessibleImgBackgroundEditor.java @@ -1,35 +1,35 @@ -package com.fr.design.mainframe.widget.accessibles; - -import java.awt.Dimension; -import javax.swing.SwingUtilities; -import com.fr.base.background.ColorBackground; -import com.fr.design.mainframe.widget.wrappers.BackgroundWrapper; -import com.fr.design.dialog.BasicDialog; -import com.fr.design.dialog.DialogActionAdapter; -import com.fr.design.style.background.BackgroundButtonPane; -import com.fr.general.Background; - -public class AccessibleImgBackgroundEditor extends UneditableAccessibleEditor { - private BackgroundButtonPane choosePane; - - public AccessibleImgBackgroundEditor() { - super(new BackgroundWrapper()); - } - - @Override - protected void showEditorPane() { - choosePane = new BackgroundButtonPane(); - choosePane.setPreferredSize(new Dimension(600, 400)); - BasicDialog dlg = choosePane.showWindow(SwingUtilities.getWindowAncestor(this)); - dlg.addDialogActionListener(new DialogActionAdapter() { - - @Override - public void doOk() { - setValue(choosePane.update()); - fireStateChanged(); - } - }); - choosePane.populate(getValue() instanceof Background ? (Background) getValue() : new ColorBackground()); - dlg.setVisible(true); - } +package com.fr.design.mainframe.widget.accessibles; + +import java.awt.Dimension; +import javax.swing.SwingUtilities; +import com.fr.base.background.ColorBackground; +import com.fr.design.mainframe.widget.wrappers.BackgroundWrapper; +import com.fr.design.dialog.BasicDialog; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.style.background.BackgroundButtonPane; +import com.fr.general.Background; + +public class AccessibleImgBackgroundEditor extends UneditableAccessibleEditor { + private BackgroundButtonPane choosePane; + + public AccessibleImgBackgroundEditor() { + super(new BackgroundWrapper()); + } + + @Override + protected void showEditorPane() { + choosePane = new BackgroundButtonPane(); + choosePane.setPreferredSize(new Dimension(600, 400)); + BasicDialog dlg = choosePane.showWindow(SwingUtilities.getWindowAncestor(this)); + dlg.addDialogActionListener(new DialogActionAdapter() { + + @Override + public void doOk() { + setValue(choosePane.update()); + fireStateChanged(); + } + }); + choosePane.populate(getValue() instanceof Background ? (Background) getValue() : new ColorBackground()); + dlg.setVisible(true); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/widget/btn/ButtonWithHotkeysDetailPane.java b/designer_base/src/com/fr/design/widget/btn/ButtonWithHotkeysDetailPane.java index 3244a962e..763ab5d29 100644 --- a/designer_base/src/com/fr/design/widget/btn/ButtonWithHotkeysDetailPane.java +++ b/designer_base/src/com/fr/design/widget/btn/ButtonWithHotkeysDetailPane.java @@ -4,6 +4,7 @@ import java.awt.*; import javax.swing.*; +import com.fr.design.designer.IntervalConstants; import com.fr.design.foldablepane.UIExpandablePane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; @@ -42,13 +43,13 @@ public abstract class ButtonWithHotkeysDetailPane extends Butt iconPane = new AccessibleIconEditor(); labelPane.add(iconPane); Component[][] n_components = { - {new UILabel(Inter.getLocText("FR-Designer_Button-Type") + ":"), createButtonTypeComboBox()}, - {new UILabel(Inter.getLocText("FR-Designer_Button-Name") + ":"), buttonNameTextField = new UITextField()}, - {new UILabel(Inter.getLocText("FR-Designer_Button-Icon") + ":"), iconPane}, - {new UILabel(Inter.getLocText("FR-Designer_Button-Hotkeys") + ":"), hotkeysTextField = new UITextField()}, + {new UILabel(Inter.getLocText("FR-Designer_Button-Type")), createButtonTypeComboBox()}, + {new UILabel(Inter.getLocText("FR-Designer_Button-Name")), buttonNameTextField = new UITextField()}, + {new UILabel(Inter.getLocText("FR-Designer_Button-Icon")), iconPane}, + {new UILabel(Inter.getLocText("FR-Designer_Button-Hotkeys")), hotkeysTextField = new UITextField()}, }; hotkeysTextField.setToolTipText(StableUtils.join(ButtonConstants.HOTKEYS, ",")); - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(n_components, rowSize, columnSize, 16, 8); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(n_components, rowSize, columnSize, IntervalConstants.INTERVAL_L2, IntervalConstants.INTERVAL_L1); panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); advancePane.add(panel, BorderLayout.NORTH); Component comp = createCenterPane(); diff --git a/designer_base/src/com/fr/design/widget/component/BackgroundCompPane.java b/designer_base/src/com/fr/design/widget/component/BackgroundCompPane.java index 49a931a6b..fef58a2ac 100644 --- a/designer_base/src/com/fr/design/widget/component/BackgroundCompPane.java +++ b/designer_base/src/com/fr/design/widget/component/BackgroundCompPane.java @@ -1,14 +1,16 @@ package com.fr.design.widget.component; +import com.fr.design.designer.IntervalConstants; import com.fr.design.dialog.BasicPane; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ilable.UILabel; 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.AccessibleBackgroundEditor; +import com.fr.design.mainframe.widget.accessibles.AccessibleImgBackgroundEditor; import com.fr.form.ui.Widget; import com.fr.general.Inter; +import com.vividsolutions.jts.index.bintree.Interval; import javax.swing.*; import java.awt.*; @@ -18,9 +20,9 @@ import java.awt.*; */ public abstract class BackgroundCompPane extends BasicPane { protected UIButtonGroup backgroundHead; - protected AccessibleBackgroundEditor initalBackgroundEditor; - protected AccessibleBackgroundEditor overBackgroundEditor; - protected AccessibleBackgroundEditor clickBackgroundEditor; + protected AccessibleImgBackgroundEditor initalBackgroundEditor; + protected AccessibleImgBackgroundEditor overBackgroundEditor; + protected AccessibleImgBackgroundEditor clickBackgroundEditor; private JPanel panel; public BackgroundCompPane() { @@ -29,9 +31,11 @@ public abstract class BackgroundCompPane extends BasicPane { public void initComponent() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); - initalBackgroundEditor = new AccessibleBackgroundEditor(); - overBackgroundEditor = new AccessibleBackgroundEditor(); - clickBackgroundEditor = new AccessibleBackgroundEditor(); + UILabel headLabel = createUILable(); + headLabel.setPreferredSize(new Dimension(50, 20)); + initalBackgroundEditor = new AccessibleImgBackgroundEditor(); + overBackgroundEditor = new AccessibleImgBackgroundEditor(); + clickBackgroundEditor = new AccessibleImgBackgroundEditor(); String [] titles = new String[]{Inter.getLocText("FR-Designer_DEFAULT"), Inter.getLocText("FR-Designer_Custom")}; double f = TableLayout.FILL; @@ -44,14 +48,19 @@ public abstract class BackgroundCompPane extends BasicPane { new Component[]{new UILabel(Inter.getLocText("FR-Designer_Background-Over")), overBackgroundEditor}, new Component[]{new UILabel(Inter.getLocText("FR-Designer_Background-Click")), clickBackgroundEditor}, }; - panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 7, 7); - panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); + panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_L2, IntervalConstants.INTERVAL_L1); + panel.setBorder(BorderFactory.createEmptyBorder(IntervalConstants.INTERVAL_L6, IntervalConstants.INTERVAL_L5, 0, 0)); backgroundHead = new UIButtonGroup(titles); - this.add(backgroundHead, BorderLayout.NORTH); + JPanel headPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{headLabel, backgroundHead}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L2, 7); + + this.add(headPane, BorderLayout.NORTH); this.add(panel, BorderLayout.CENTER); } + protected UILabel createUILable(){ + return new UILabel(Inter.getLocText("FR-Designer_Background")); + } public void update(T e){ } diff --git a/designer/src/com/fr/design/widget/ui/CheckBoxDictPane.java b/designer_base/src/com/fr/design/widget/component/CheckBoxDictPane.java similarity index 59% rename from designer/src/com/fr/design/widget/ui/CheckBoxDictPane.java rename to designer_base/src/com/fr/design/widget/component/CheckBoxDictPane.java index 355cb7508..079ca29c2 100644 --- a/designer/src/com/fr/design/widget/ui/CheckBoxDictPane.java +++ b/designer_base/src/com/fr/design/widget/component/CheckBoxDictPane.java @@ -1,84 +1,87 @@ -package com.fr.design.widget.ui; - -import java.awt.*; - -import com.fr.design.gui.ibutton.UIButtonGroup; -import com.fr.design.gui.ilable.UILabel; -import javax.swing.JPanel; - -import com.fr.design.gui.icombobox.DictionaryComboBox; -import com.fr.design.gui.icombobox.DictionaryConstants; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.layout.TableLayoutHelper; -import com.fr.form.ui.CheckBoxGroup; -import com.fr.form.ui.ComboCheckBox; -import com.fr.general.Inter; - -public class CheckBoxDictPane extends JPanel { - - private DictionaryComboBox delimiterComboBox; - private UIButtonGroup returnTypeComboBox; - private DictionaryComboBox startComboBox; - private DictionaryComboBox endComboBox; - - private JPanel delimiterPane; - private JPanel startPane; - private JPanel endPane; - - public CheckBoxDictPane() { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - JPanel returnTypePane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - delimiterPane =FRGUIPaneFactory.createBorderLayout_S_Pane(); - UILabel label = new UILabel(Inter.getLocText("Form-Delimiter") + ":"); - delimiterPane.add(label, BorderLayout.WEST); - delimiterPane.add(delimiterComboBox = new DictionaryComboBox(DictionaryConstants.delimiters, DictionaryConstants.delimiterDisplays), BorderLayout.CENTER); - delimiterComboBox.setEditable(true); - - startPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - startPane.add(new UILabel(Inter.getLocText("ComboCheckBox-Start_Symbol") + ":"), BorderLayout.WEST); - startPane.add(startComboBox = new DictionaryComboBox(DictionaryConstants.symbols, DictionaryConstants.symbolDisplays), BorderLayout.CENTER); - startComboBox.setEditable(true); - - endPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - endPane.add(new UILabel(Inter.getLocText("ComboCheckBox-End_Symbol") + ":"), BorderLayout.WEST); - endPane.add(endComboBox = new DictionaryComboBox(DictionaryConstants.symbols, DictionaryConstants.symbolDisplays), BorderLayout.CENTER); - endComboBox.setEditable(true); - returnTypeComboBox = new UIButtonGroup(new String[]{Inter.getLocText("Widget-Array"), Inter.getLocText("String")}); - returnTypePane.add(returnTypeComboBox, BorderLayout.CENTER); - JPanel jPanel = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{new UILabel(Inter.getLocText("Widget-Date_Selector_Return_Type") + ":"), returnTypePane}}, TableLayoutHelper.FILL_LASTCOLUMN, 18, 7); - this.add(jPanel); - } - - private void checkVisible(int selectIndex){ - delimiterPane.setVisible(selectIndex == 1); - startPane.setVisible(selectIndex == 1); - endPane.setVisible(selectIndex == 1); - } - - public void populate(ComboCheckBox comboCheckBox) { - this.delimiterComboBox.setSelectedItem(comboCheckBox.getDelimiter()); - this.returnTypeComboBox.setSelectedIndex(comboCheckBox.isReturnString() ? 1 : 0); - this.startComboBox.setSelectedItem(comboCheckBox.getStartSymbol()); - this.endComboBox.setSelectedItem(comboCheckBox.getEndSymbol()); - checkVisible(this.returnTypeComboBox.getSelectedIndex()); - } - public void update(ComboCheckBox comboCheckBox) { - comboCheckBox.setDelimiter((String)this.delimiterComboBox.getSelectedItem()); - comboCheckBox.setReturnString(this.returnTypeComboBox.getSelectedIndex() != 0); - comboCheckBox.setStartSymbol((String)this.startComboBox.getSelectedItem()); - comboCheckBox.setEndSymbol((String)this.endComboBox.getSelectedItem()); - } - public void populate(CheckBoxGroup checkBoxGroup) { - this.delimiterComboBox.setSelectedItem(checkBoxGroup.getDelimiter()); - this.returnTypeComboBox.setSelectedIndex(checkBoxGroup.isReturnString() ? 1 : 0); - this.startComboBox.setSelectedItem(checkBoxGroup.getStartSymbol()); - this.endComboBox.setSelectedItem(checkBoxGroup.getEndSymbol()); - checkVisible(this.returnTypeComboBox.getSelectedIndex()); - } - public void update(CheckBoxGroup checkBoxGroup) { - checkBoxGroup.setDelimiter((String)this.delimiterComboBox.getSelectedItem()); - checkBoxGroup.setReturnString(this.returnTypeComboBox.getSelectedIndex() != 0); - checkBoxGroup.setStartSymbol((String)this.startComboBox.getSelectedItem()); - checkBoxGroup.setEndSymbol((String)this.endComboBox.getSelectedItem()); - } +package com.fr.design.widget.component; + +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import com.fr.design.designer.IntervalConstants; +import com.fr.design.gui.ibutton.UIButtonGroup; +import com.fr.design.gui.ilable.UILabel; +import javax.swing.JPanel; + +import com.fr.design.gui.icombobox.DictionaryComboBox; +import com.fr.design.gui.icombobox.DictionaryConstants; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.form.ui.CheckBoxGroup; +import com.fr.form.ui.ComboCheckBox; +import com.fr.general.Inter; + +public class CheckBoxDictPane extends JPanel { + + private DictionaryComboBox delimiterComboBox; + private UIButtonGroup returnTypeComboBox; + private DictionaryComboBox startComboBox; + private DictionaryComboBox endComboBox; + private JPanel returnStringPane; + + public CheckBoxDictPane() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + delimiterComboBox = new DictionaryComboBox(DictionaryConstants.delimiters, DictionaryConstants.delimiterDisplays); + delimiterComboBox.setEditable(true); + startComboBox = new DictionaryComboBox(DictionaryConstants.symbols, DictionaryConstants.symbolDisplays); + startComboBox.setEditable(true); + endComboBox = new DictionaryComboBox(DictionaryConstants.symbols, DictionaryConstants.symbolDisplays); + endComboBox.setEditable(true); + Component[][] components = new Component[][]{ + new Component[]{new UILabel(Inter.getLocText("Form-Delimiter") + ":"), delimiterComboBox}, + new Component[]{new UILabel(Inter.getLocText("ComboCheckBox-Start_Symbol") + ":"),startComboBox}, + new Component[]{new UILabel(Inter.getLocText("ComboCheckBox-End_Symbol") + ":"),endComboBox} + }; + returnStringPane = TableLayoutHelper.createGapTableLayoutPane(components, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L2, IntervalConstants.INTERVAL_L1); + + returnTypeComboBox = new UIButtonGroup(new String[]{Inter.getLocText("Widget-Array"), Inter.getLocText("String")}); + returnTypeComboBox.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + checkVisible(returnTypeComboBox.getSelectedIndex()); + } + }); + JPanel headPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{new UILabel(Inter.getLocText("Widget-Date_Selector_Return_Type") + ":"), returnTypeComboBox}}, TableLayoutHelper.FILL_LASTCOLUMN, 18, 7); + JPanel jPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); + jPanel.add(headPane, BorderLayout.NORTH); + jPanel.add(returnStringPane, BorderLayout.CENTER); + this.add(jPanel); + } + + public void checkVisible(int selectIndex){ + returnStringPane.setVisible(selectIndex == 1); + } + + public void populate(ComboCheckBox comboCheckBox) { + this.delimiterComboBox.setSelectedItem(comboCheckBox.getDelimiter()); + this.returnTypeComboBox.setSelectedIndex(comboCheckBox.isReturnString() ? 1 : 0); + this.startComboBox.setSelectedItem(comboCheckBox.getStartSymbol()); + this.endComboBox.setSelectedItem(comboCheckBox.getEndSymbol()); + checkVisible(this.returnTypeComboBox.getSelectedIndex()); + } + public void update(ComboCheckBox comboCheckBox) { + comboCheckBox.setDelimiter((String)this.delimiterComboBox.getSelectedItem()); + comboCheckBox.setReturnString(this.returnTypeComboBox.getSelectedIndex() != 0); + comboCheckBox.setStartSymbol((String)this.startComboBox.getSelectedItem()); + comboCheckBox.setEndSymbol((String)this.endComboBox.getSelectedItem()); + } + public void populate(CheckBoxGroup checkBoxGroup) { + this.delimiterComboBox.setSelectedItem(checkBoxGroup.getDelimiter()); + this.returnTypeComboBox.setSelectedIndex(checkBoxGroup.isReturnString() ? 1 : 0); + this.startComboBox.setSelectedItem(checkBoxGroup.getStartSymbol()); + this.endComboBox.setSelectedItem(checkBoxGroup.getEndSymbol()); + checkVisible(this.returnTypeComboBox.getSelectedIndex()); + } + public void update(CheckBoxGroup checkBoxGroup) { + checkBoxGroup.setDelimiter((String)this.delimiterComboBox.getSelectedItem()); + checkBoxGroup.setReturnString(this.returnTypeComboBox.getSelectedIndex() != 0); + checkBoxGroup.setStartSymbol((String)this.startComboBox.getSelectedItem()); + checkBoxGroup.setEndSymbol((String)this.endComboBox.getSelectedItem()); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/widget/component/DateValuePane.java b/designer_base/src/com/fr/design/widget/component/DateValuePane.java index edc11b313..6ea7d056e 100644 --- a/designer_base/src/com/fr/design/widget/component/DateValuePane.java +++ b/designer_base/src/com/fr/design/widget/component/DateValuePane.java @@ -2,18 +2,20 @@ package com.fr.design.widget.component; import com.fr.design.constants.LayoutConstants; import com.fr.design.editor.editor.*; -import com.fr.design.gui.ibutton.UIHeadGroup; +import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import java.awt.*; /** * Created by ibm on 2017/8/8. */ public class DateValuePane extends JPanel { - private UIHeadGroup widgetValueHead; + private UIButtonGroup widgetValueHead; private Editor[] editor; @@ -31,9 +33,11 @@ public class DateValuePane extends JPanel { customPane.add(editor[i], editor[i].getName()); tabTitles[i] = editor[i].getName(); } - widgetValueHead = new UIHeadGroup(tabTitles) { + widgetValueHead = new UIButtonGroup(tabTitles); + widgetValueHead.addChangeListener(new ChangeListener() { @Override - public void tabChanged(int index) { + public void stateChanged(ChangeEvent e) { + int index = widgetValueHead.getSelectedIndex(); if (ComparatorUtils.equals(tabTitles[index], Inter.getLocText("None"))) { customPane.setVisible(false); } else { @@ -41,7 +45,7 @@ public class DateValuePane extends JPanel { } cardLayout.show(customPane, tabTitles[index]); } - }; + }); this.add(widgetValueHead, BorderLayout.NORTH); this.add(customPane, BorderLayout.CENTER); @@ -56,6 +60,9 @@ public class DateValuePane extends JPanel { } public void populate(Object ob) { + if(ob == null){ + setCardValue(0, ob); + } for (int i = 0; i < editor.length; i++) { if (editor[i].accept(ob)) { setCardValue(i, ob); @@ -66,6 +73,7 @@ public class DateValuePane extends JPanel { private void setCardValue(int i, Object object) { widgetValueHead.setSelectedIndex(i); + widgetValueHead.populateBean(); editor[i].setValue(object); // kunsnat: bug7861 所有的Editor值都要跟随改变, 因为populate的editor 从"" // 一定是最后的Editor哦. diff --git a/designer_base/src/com/fr/design/widget/component/NumberEditorValidatePane.java b/designer_base/src/com/fr/design/widget/component/NumberEditorValidatePane.java new file mode 100644 index 000000000..63b297925 --- /dev/null +++ b/designer_base/src/com/fr/design/widget/component/NumberEditorValidatePane.java @@ -0,0 +1,303 @@ +package com.fr.design.widget.component; + +import com.fr.design.designer.IntervalConstants; +import com.fr.design.dialog.BasicPane; +import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.ispinner.UIBasicSpinner; +import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.gui.itextfield.UITextField; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.form.ui.NumberEditor; +import com.fr.general.Inter; + +import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.text.DefaultFormatter; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +/** + * Created by kerry on 2017/9/10. + */ +public class NumberEditorValidatePane extends JPanel { + private UICheckBox allowDecimalsCheckBox; + private UICheckBox allowNegativeCheckBox; + private UICheckBox setMaxValueCheckBox; + private UICheckBox setMinValueCheckBox; + private UIBasicSpinner maxValueSpinner; + private SpinnerNumberModel maxValueModel; + private UIBasicSpinner minValueSpinner; + private SpinnerNumberModel minValueModel; + private UISpinner decimalLength; + private JPanel limitNumberPane; + private UITextField maxValueErrorTextField; + private UITextField minValueErrorTextField; + private JPanel maxValueFieldPane; + private JPanel minValueFieldPane; + + private ActionListener allowDecimalsListener; + + private ActionListener allowNegativeListener; + + public ActionListener setMaxListener; + + private ActionListener setMinListener; + + private ChangeListener maxValueChangeListener; + + private ChangeListener minValueChangeListener; + + public NumberEditorValidatePane() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + initComponent(); + } + + private void initComponent() { + initListeners(); + this.allowDecimalsCheckBox = new UICheckBox(Inter.getLocText("Allow_Decimals")); + allowDecimalsCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); + this.allowDecimalsCheckBox.addActionListener(allowDecimalsListener); + this.decimalLength = new UISpinner(0, Integer.MAX_VALUE, 1, 16); + this.allowNegativeCheckBox = new UICheckBox(Inter.getLocText("Allow_Negative")); + this.allowNegativeCheckBox.addActionListener(allowNegativeListener); + allowNegativeCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); + this.setMaxValueCheckBox = new UICheckBox(Inter.getLocText("Need_Max_Value"), false); + setMaxValueCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); + this.maxValueSpinner = new UIBasicSpinner(maxValueModel = new SpinnerNumberModel(0D, -Double.MAX_VALUE, Double.MAX_VALUE, 1D)); + setNotAllowsInvalid(this.maxValueSpinner); + this.setMaxValueCheckBox.addActionListener(setMaxListener); + this.maxValueSpinner.addChangeListener(maxValueChangeListener); + this.setMinValueCheckBox = new UICheckBox(Inter.getLocText("Need_Min_Value"), false); + this.minValueSpinner = new UIBasicSpinner(minValueModel = new SpinnerNumberModel(0D, -Double.MAX_VALUE, Double.MAX_VALUE, 1D)); + setNotAllowsInvalid(this.minValueSpinner); + minValueSpinner.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); + this.setMinValueCheckBox.addActionListener(setMinListener); + this.minValueSpinner.addChangeListener(minValueChangeListener); + setMinValueCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); + initMaxMinValueFieldPane(); + JPanel maxValueBorderPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + maxValueBorderPane.setBorder(BorderFactory.createEmptyBorder(0, IntervalConstants.INTERVAL_L5, 0, 0)); + maxValueBorderPane.add(maxValueFieldPane, BorderLayout.CENTER); + JPanel minValueBorderPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + minValueBorderPane.setBorder(BorderFactory.createEmptyBorder(0, IntervalConstants.INTERVAL_L5, IntervalConstants.INTERVAL_L1, 0)); + minValueBorderPane.add(minValueFieldPane, BorderLayout.CENTER); + UILabel numberLabel = new UILabel(Inter.getLocText(new String[]{"FR-Designer_Double", "Numbers"})); + limitNumberPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{numberLabel, decimalLength}}, TableLayoutHelper.FILL_LASTCOLUMN, 18, 7); + limitNumberPane.setBorder(BorderFactory.createEmptyBorder(0, IntervalConstants.INTERVAL_L5, 0, 0)); + double f = TableLayout.FILL; + double p = TableLayout.PREFERRED; + Component[][] components = new Component[][]{ + new Component[]{allowDecimalsCheckBox, null}, + new Component[]{limitNumberPane, null}, + new Component[]{allowNegativeCheckBox, null}, + new Component[]{setMaxValueCheckBox, maxValueSpinner}, + new Component[]{maxValueBorderPane, null}, + new Component[]{setMinValueCheckBox, minValueSpinner}, + new Component[]{minValueBorderPane, null}, + }; + double[] rowSize = {p, p, p, p, p, p, p}; + double[] columnSize = {p, f}; + int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}; + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 10, 7); + this.add(panel); + } + + private void initMaxMinValueFieldPane() { + maxValueErrorTextField = new UITextField(); + minValueErrorTextField = new UITextField(); + + maxValueFieldPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{new UILabel(Inter.getLocText("FR-Designer_Widget_Error_Tip")), maxValueErrorTextField}}, TableLayoutHelper.FILL_LASTCOLUMN, 18, 7); + setMaxValueCheckBox.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + maxValueFieldPane.setVisible(setMaxValueCheckBox.isSelected()); + } + }); + + minValueFieldPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{new UILabel(Inter.getLocText("FR-Designer_Widget_Error_Tip")), minValueErrorTextField}}, TableLayoutHelper.FILL_LASTCOLUMN, 18, 7); + setMinValueCheckBox.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + minValueFieldPane.setVisible(setMinValueCheckBox.isSelected()); + } + }); + + } + + + private void initListeners() { + allowDecimalsListener = new ActionListener() { + public void actionPerformed(ActionEvent e) { + if (allowDecimalsCheckBox.isSelected()) { + limitNumberPane.setVisible(true); + limitNumberPane.setPreferredSize(new Dimension(215, 20)); + } else { + limitNumberPane.setVisible(false); + limitNumberPane.setPreferredSize(new Dimension(0, 0)); + } + } + }; + + allowNegativeListener = new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + if (allowNegativeCheckBox.isSelected()) { + minValueModel.setMinimum(-Double.MAX_VALUE); + if (!setMinValueCheckBox.isSelected()) { + maxValueModel.setMinimum(-Double.MAX_VALUE); + } + } else { + minValueModel.setMinimum(0.0); + if (!setMinValueCheckBox.isSelected()) { + maxValueModel.setMinimum(0.0); + } + Double minValue = Double.parseDouble("" + minValueSpinner.getValue()); + Double maxValue = Double.parseDouble("" + maxValueSpinner.getValue()); + if (minValue < 0.0) { + minValueSpinner.setValue(0.0); + } + if (maxValue < 0.0) { + maxValueSpinner.setValue(0.0); + } + } + } + }; + + + setMaxListener = new ActionListener() { + public void actionPerformed(ActionEvent e) { + if (setMaxValueCheckBox.isSelected()) { + maxValueSpinner.setEnabled(true); + Double value = new Double(0); + if (setMinValueCheckBox.isSelected()) { + Double minValue = Double.parseDouble("" + minValueSpinner.getValue()); + if (minValue > value) { + value = minValue; + } + } + maxValueSpinner.setValue(value); + } else { + maxValueSpinner.setEnabled(false); + minValueModel.setMaximum(Double.MAX_VALUE); + } + } + }; + + + setMinListener = new ActionListener() { + public void actionPerformed(ActionEvent e) { + if (setMinValueCheckBox.isSelected()) { + minValueSpinner.setEnabled(true); + Double value = new Double(0); + if (setMaxValueCheckBox.isSelected()) { + Double maxValue = Double.parseDouble("" + maxValueSpinner.getValue()); + if (maxValue < value) { + value = maxValue; + } + } + minValueSpinner.setValue(value); + } else { + minValueSpinner.setEnabled(false); + maxValueModel.setMinimum(allowNegativeCheckBox.isSelected() ? (-Double.MAX_VALUE) : new Double(0)); + } + } + }; + + maxValueChangeListener = new ChangeListener() { + + @Override + public void stateChanged(ChangeEvent e) { + if (setMaxValueCheckBox.isSelected()) { + if (setMinValueCheckBox.isSelected()) { + minValueModel.setMaximum(Double.parseDouble("" + maxValueSpinner.getValue())); + } + } + } + }; + + minValueChangeListener = new ChangeListener() { + + @Override + public void stateChanged(ChangeEvent e) { + if (setMinValueCheckBox.isSelected()) { + if (setMaxValueCheckBox.isSelected()) { + maxValueModel.setMinimum(Double.parseDouble("" + minValueSpinner.getValue())); + } + } + } + }; + } + + private void setNotAllowsInvalid(UIBasicSpinner jspinner) { + JComponent editor = jspinner.getEditor(); + if (editor instanceof UIBasicSpinner.DefaultEditor) { + JFormattedTextField ftf = ((UIBasicSpinner.DefaultEditor) editor).getTextField(); + ftf.setColumns(10); + JFormattedTextField.AbstractFormatter formatter = ftf.getFormatter(); + DefaultFormatter df = (DefaultFormatter) formatter; + df.setAllowsInvalid(false); + } + } + + + public void populate(NumberEditor e) { + allowDecimalsCheckBox.setSelected(e.isAllowDecimals()); + if (e.isAllowDecimals()) { + this.decimalLength.setValue(e.getMaxDecimalLength()); + } else { + this.limitNumberPane.setVisible(false); + } + + allowNegativeCheckBox.setSelected(e.isAllowNegative()); + if (e.getMaxValue() == Double.MAX_VALUE) { + setMaxValueCheckBox.setSelected(false); + maxValueFieldPane.setVisible(false); + maxValueSpinner.setValue(new Double(Double.MAX_VALUE)); + maxValueSpinner.setEnabled(false); + } else { + setMaxValueCheckBox.setSelected(true); + maxValueSpinner.setEnabled(true); + maxValueFieldPane.setVisible(true); + maxValueSpinner.setValue(new Double(e.getMaxValue())); + } + + if (e.getMinValue() == -Double.MAX_VALUE) { + setMinValueCheckBox.setSelected(false); + minValueFieldPane.setVisible(false); + minValueSpinner.setValue(new Double(-Double.MAX_VALUE)); + minValueSpinner.setEnabled(false); + + } else { + setMinValueCheckBox.setSelected(true); + minValueFieldPane.setVisible(true); + minValueSpinner.setEnabled(true); + minValueSpinner.setValue(new Double(e.getMinValue())); + } + } + + public void update(NumberEditor ob) { + ob.setAllowDecimals(allowDecimalsCheckBox.isSelected()); + if (allowDecimalsCheckBox.isSelected()) { + ob.setMaxDecimalLength((int) this.decimalLength.getValue()); + } + + ob.setAllowNegative(allowNegativeCheckBox.isSelected()); + if (setMaxValueCheckBox.isSelected()) { + ob.setMaxValue(Double.parseDouble("" + maxValueSpinner.getValue())); + } else { + ob.setMaxValue(Double.MAX_VALUE); + } + + if (setMinValueCheckBox.isSelected()) { + ob.setMinValue(Double.parseDouble("" + minValueSpinner.getValue())); + } else { + ob.setMinValue(-Double.MAX_VALUE); + } + } +} diff --git a/designer_form/src/com/fr/design/designer/creator/CRPropertyDescriptorPane.java b/designer_form/src/com/fr/design/designer/creator/CRPropertyDescriptorPane.java new file mode 100644 index 000000000..5940291b4 --- /dev/null +++ b/designer_form/src/com/fr/design/designer/creator/CRPropertyDescriptorPane.java @@ -0,0 +1,92 @@ +package com.fr.design.designer.creator; + +import com.fr.base.FRContext; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.xtable.TableUtils; +import com.fr.design.mainframe.widget.editors.ExtendedPropertyEditor; +import com.fr.design.mainframe.widget.editors.StringEditor; +import com.fr.form.ui.Widget; + +import java.awt.*; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.beans.PropertyEditor; +import java.lang.reflect.Method; + +/** + * Created by kerry on 2017/9/6. + */ +public class CRPropertyDescriptorPane { + private CRPropertyDescriptor crPropertyDescriptor; + private XCreator xCreator; + private PropertyEditor propertyEditor; + + public CRPropertyDescriptorPane(CRPropertyDescriptor crPropertyDescriptor, XCreator xCreator) { + this.crPropertyDescriptor = crPropertyDescriptor; + this.xCreator = xCreator; + } + + public Component[] createTableLayoutComponent() { + return new Component[]{new UILabel(crPropertyDescriptor.getDisplayName()), initEditorComponent(crPropertyDescriptor, xCreator)}; + } + + private Component initEditorComponent(CRPropertyDescriptor crPropertyDescriptor, final XCreator xCreator) { + Component component = null; + try { + // 如果已有的编辑器就生成对应的component + Class editorClass = crPropertyDescriptor.getPropertyEditorClass(); + if (editorClass != null) { + propertyEditor = initExtendEditor(crPropertyDescriptor, xCreator); + component = propertyEditor.getCustomEditor(); + } else { + Class propType = crPropertyDescriptor.getPropertyType(); + Class defaultEditorClass = TableUtils.getPropertyEditorClass(propType); + if (defaultEditorClass == null) { + defaultEditorClass = StringEditor.class; + } + propertyEditor = defaultEditorClass.newInstance(); + component = propertyEditor.getCustomEditor(); + } + propertyEditor.addPropertyChangeListener(new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + update(xCreator.toData()); + } + }); + } catch (Exception e) { + FRContext.getLogger().error(e.getMessage()); + } + return component; + } + + private PropertyEditor initExtendEditor(CRPropertyDescriptor crPropertyDescriptor, XCreator xCreator) throws Exception { + ExtendedPropertyEditor editor = (ExtendedPropertyEditor) crPropertyDescriptor.createPropertyEditor(xCreator.toData()); + if (editor == null) { + Class propType = crPropertyDescriptor.getPropertyType(); + editor = TableUtils.getPropertyEditorClass(propType).newInstance(); + } + + return editor; + } + + public void populate(Widget widget) { + try { + Method m = crPropertyDescriptor.getReadMethod(); + Object value = m.invoke(widget); + propertyEditor.setValue(value); + } catch (Exception e) { + + } + + } + + public void update(Widget widget) { + try { + Method m = crPropertyDescriptor.getWriteMethod(); + m.invoke(widget, propertyEditor.getValue()); + } catch (Exception e) { + + } + } + +} diff --git a/designer_form/src/com/fr/design/designer/creator/PropertyGroupPane.java b/designer_form/src/com/fr/design/designer/creator/PropertyGroupPane.java new file mode 100644 index 000000000..903342695 --- /dev/null +++ b/designer_form/src/com/fr/design/designer/creator/PropertyGroupPane.java @@ -0,0 +1,71 @@ +package com.fr.design.designer.creator; + +import com.fr.base.FRContext; +import com.fr.design.designer.IntervalConstants; +import com.fr.design.dialog.BasicPane; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.form.ui.FreeButton; +import com.fr.form.ui.Widget; + +import javax.swing.*; +import java.awt.*; + +/** + * Created by kerry on 2017/9/7. + */ +public class PropertyGroupPane extends BasicPane { + private CRPropertyDescriptor[] crPropertyDescriptors; + private CRPropertyDescriptorPane[] crPropertyDescriptorPanes; + private XCreator xCreator; + + public PropertyGroupPane(CRPropertyDescriptor[] crPropertyDescriptors, XCreator xCreator) { + this.crPropertyDescriptors = crPropertyDescriptors; + this.xCreator = xCreator; + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + initComponent(); + } + + public void initComponent() { + int count = crPropertyDescriptors.length; + crPropertyDescriptorPanes = new CRPropertyDescriptorPane[count]; + Component[][] components = new Component[count][]; + for (int i = 0; i < count; i++) { + crPropertyDescriptorPanes[i] = new CRPropertyDescriptorPane(crPropertyDescriptors[i], xCreator); + components[i] = crPropertyDescriptorPanes[i].createTableLayoutComponent(); + } + + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L2, IntervalConstants.INTERVAL_L1); + panel.setBorder(BorderFactory.createEmptyBorder(5, 0, 10, 0)); + this.add(panel, BorderLayout.CENTER); + } + + public void populate(Widget widget){ + for(int i = 0; i< crPropertyDescriptorPanes.length; i++){ + crPropertyDescriptorPanes[i].populate(widget); + } + } + + @Override + protected String title4PopupWindow() { + return "PropertyGroupPane"; + } + + public static void main(String[] args) { + try{ + XCreator xCreator = new XButton(new FreeButton(),new Dimension(100, 100)); + PropertyGroupPane propertyGroupPane = new PropertyGroupPane(xCreator.supportedDescriptor(), xCreator); + JFrame jf = new JFrame("jFrame"); + jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + JPanel content = (JPanel) jf.getContentPane(); + content.setLayout(new BorderLayout()); + content.add(propertyGroupPane, BorderLayout.CENTER); + jf.setSize(439, 400); + jf.setVisible(true); + }catch (Exception e){ + FRContext.getLogger().error(e.getMessage()); + } + + } + +} 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 1e7058f52..87f3e532e 100644 --- a/designer_form/src/com/fr/design/designer/creator/XCreator.java +++ b/designer_form/src/com/fr/design/designer/creator/XCreator.java @@ -227,7 +227,7 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo } protected String getIconName() { - return ""; + return StringUtils.EMPTY; } public String getIconPath() { @@ -472,11 +472,9 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo selectionModel.selectACreatorAtMouseEvent(e); } - if (editingMouseListener.stopEditing()) { - if (this != designer.getRootComponent()) { - ComponentAdapter adapter = AdapterBus.getComponentAdapter(designer, this); - editingMouseListener.startEditing(this, adapter.getDesignerEditor(), adapter); - } + if (editingMouseListener.stopEditing() && this != designer.getRootComponent()) { + ComponentAdapter adapter = AdapterBus.getComponentAdapter(designer, this); + editingMouseListener.startEditing(this, adapter.getDesignerEditor(), adapter); } } @@ -642,4 +640,12 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo this.data = data; } + /** + * data属性改变触发其他操作 + * + */ + public void firePropertyChange(){ + + } + } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/creator/XDateEditor.java b/designer_form/src/com/fr/design/designer/creator/XDateEditor.java index 2a8f6aedd..769a6adb1 100644 --- a/designer_form/src/com/fr/design/designer/creator/XDateEditor.java +++ b/designer_form/src/com/fr/design/designer/creator/XDateEditor.java @@ -31,94 +31,95 @@ import com.fr.stable.core.PropertyChangeAdapter; * @since 6.5.3 */ public class XDateEditor extends XDirectWriteEditor { - - private UITextField textField; - private LimpidButton btn; + + private UITextField textField; + private LimpidButton btn; public XDateEditor(DateEditor widget, Dimension initSize) { super(widget, initSize); } - + /** * 控件的属性列表 + * * @return 此控件所用的属性列表 * @throws IntrospectionException 异常 */ @Override - public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { - CRPropertyDescriptor [] tempt=(CRPropertyDescriptor[]) ArrayUtils.addAll( - new CRPropertyDescriptor[] { - new CRPropertyDescriptor("widgetValue", this.data.getClass()).setI18NName( - Inter.getLocText(new String[]{"Widget", "Value"})).setEditorClass( - WidgetValueEditor.class).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, - "Advanced").setPropertyChangeListener(new PropertyChangeAdapter() { - - @Override - public void propertyChange() { - initFieldText(); - } - })},super.supportedDescriptor()); - return (CRPropertyDescriptor[]) ArrayUtils.addAll(tempt, - new CRPropertyDescriptor[] { - new CRPropertyDescriptor("formatText", this.data.getClass()).setI18NName( - Inter.getLocText("FR-Engine_Format")).setEditorClass(formatClass()).setRendererClass( - DateCellRenderer.class).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"), - new CRPropertyDescriptor("startDate", this.data.getClass()).setI18NName( - Inter.getLocText("FR-Designer_Start-Date")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, - "Advanced").setEditorClass(DateRangeEditor.class), - new CRPropertyDescriptor("endDate", this.data.getClass()).setI18NName( - Inter.getLocText("FR-Designer_End-Date")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, - "Advanced").setEditorClass(DateRangeEditor.class), - new CRPropertyDescriptor("waterMark", this.data.getClass()).setI18NName( - Inter.getLocText("FR-Designer_WaterMark")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, - "Advanced"), - new CRPropertyDescriptor("returnDate", this.data.getClass()).setI18NName( - Inter.getLocText("FR-Designer_Return-Date")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, - "Advanced") - }); - } - + public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { + CRPropertyDescriptor[] tempt = (CRPropertyDescriptor[]) ArrayUtils.addAll( + new CRPropertyDescriptor[]{ + new CRPropertyDescriptor("widgetValue", this.data.getClass()).setI18NName( + Inter.getLocText(new String[]{"Widget", "Value"})).setEditorClass( + WidgetValueEditor.class).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, + "Advanced").setPropertyChangeListener(new PropertyChangeAdapter() { + + @Override + public void propertyChange() { + initFieldText(); + } + })}, super.supportedDescriptor()); + return (CRPropertyDescriptor[]) ArrayUtils.addAll(tempt, + new CRPropertyDescriptor[]{ + new CRPropertyDescriptor("formatText", this.data.getClass()).setI18NName( + Inter.getLocText("FR-Engine_Format")).setEditorClass(formatClass()).setRendererClass( + DateCellRenderer.class).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"), + new CRPropertyDescriptor("startDate", this.data.getClass()).setI18NName( + Inter.getLocText("FR-Designer_Start-Date")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, + "Advanced").setEditorClass(DateRangeEditor.class), + new CRPropertyDescriptor("endDate", this.data.getClass()).setI18NName( + Inter.getLocText("FR-Designer_End-Date")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, + "Advanced").setEditorClass(DateRangeEditor.class), + new CRPropertyDescriptor("waterMark", this.data.getClass()).setI18NName( + Inter.getLocText("FR-Designer_WaterMark")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, + "Advanced"), + new CRPropertyDescriptor("returnDate", this.data.getClass()).setI18NName( + Inter.getLocText("FR-Designer_Return-Date")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, + "Advanced") + }); + } + protected Class formatClass() { - return DateFormatEditor.class; + return DateFormatEditor.class; + } + + private void initFieldText() { + DateEditor dateEditor = (DateEditor) data; + if (dateEditor.getWidgetValue() != null) { + WidgetValue widgetValue = dateEditor.getWidgetValue(); + //控件值.toString + String valueStr = widgetValue.toString(); + //控件值 + Object value = widgetValue.getValue(); + //格式 + String format = dateEditor.getFormatText(); + + if (value instanceof Date) { + valueStr = DateUtils.getDate2Str(format, (Date) value); + } + + //日期控件默认值 + if (StringUtils.isEmpty(valueStr)) { + valueStr = DateUtils.getDate2Str(format, new Date()); + dateEditor.setWidgetValue(new WidgetValue(new Date())); + } + + textField.setText(valueStr); + } + } + + @Override + protected void initXCreatorProperties() { + super.initXCreatorProperties(); + initFieldText(); } - - private void initFieldText() { - DateEditor dateEditor = (DateEditor) data; - if (dateEditor.getWidgetValue() != null) { - WidgetValue widgetValue = dateEditor.getWidgetValue(); - //控件值.toString - String valueStr = widgetValue.toString(); - //控件值 - Object value = widgetValue.getValue(); - //格式 - String format = dateEditor.getFormatText(); - - if(value instanceof Date){ - valueStr = DateUtils.getDate2Str(format, (Date) value); - } - - //日期控件默认值 - if(StringUtils.isEmpty(valueStr)){ - valueStr = DateUtils.getDate2Str(format, new Date()); - dateEditor.setWidgetValue(new WidgetValue(new Date())); - } - - textField.setText(valueStr); - } - } - - @Override - protected void initXCreatorProperties() { - super.initXCreatorProperties(); - initFieldText(); - } @Override protected JComponent initEditor() { if (editor == null) { editor = FRGUIPaneFactory.createBorderLayout_S_Pane(); editor.add(textField = new UITextField(5), BorderLayout.CENTER); - btn = new LimpidButton("", this.getIconPath(), toData().isVisible() ? FULL_OPACITY : HALF_OPACITY); + btn = new LimpidButton(StringUtils.EMPTY, this.getIconPath(), toData().isVisible() ? FULL_OPACITY : HALF_OPACITY); btn.setPreferredSize(new Dimension(21, 21)); editor.add(btn, BorderLayout.EAST); textField.setOpaque(false); @@ -132,47 +133,46 @@ public class XDateEditor extends XDirectWriteEditor { return "date_16.png"; } - protected void makeVisible(boolean visible) { - btn.makeVisible(visible); - } - - /** - * 获取当前XCreator的一个封装父容器 - * - * @param widgetName 当前组件名 - * - * @return 封装的父容器 - * - * - * @date 2014-11-25-下午4:47:23 - * - */ - protected XLayoutContainer getCreatorWrapper(String widgetName){ - return new XWScaleLayout(); - } - - /** - * 将当前对象添加到父容器中 - * - * @param parentPanel 父容器组件 - * - * - * @date 2014-11-25-下午4:57:55 - * - */ - protected void addToWrapper(XLayoutContainer parentPanel, int width, int minHeight){ - this.setSize(width, minHeight); - parentPanel.add(this); - } - - /** - * 此控件在自适应布局要保持原样高度 - * - * @return 是则返回true - */ - @Override - public boolean shouldScaleCreator() { - return true; - } - + protected void makeVisible(boolean visible) { + btn.makeVisible(visible); + } + + /** + * 获取当前XCreator的一个封装父容器 + * + * @param widgetName 当前组件名 + * @return 封装的父容器 + * @date 2014-11-25-下午4:47:23 + */ + protected XLayoutContainer getCreatorWrapper(String widgetName) { + return new XWScaleLayout(); + } + + /** + * 将当前对象添加到父容器中 + * + * @param parentPanel 父容器组件 + * @date 2014-11-25-下午4:57:55 + */ + protected void addToWrapper(XLayoutContainer parentPanel, int width, int minHeight) { + this.setSize(width, minHeight); + parentPanel.add(this); + } + + /** + * 此控件在自适应布局要保持原样高度 + * + * @return 是则返回true + */ + @Override + public boolean shouldScaleCreator() { + return true; + } + + /** + * data属性改变触发其他操作 + */ + public void firePropertyChange() { + initFieldText(); + } } \ No newline at end of file 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 a23733f9d..c58ba60ef 100644 --- a/designer_form/src/com/fr/design/designer/creator/XElementCase.java +++ b/designer_form/src/com/fr/design/designer/creator/XElementCase.java @@ -104,10 +104,15 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme .setI18NName(Inter.getLocText("Form-EC_toolbar")) .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced") }; - propertyTableEditor = resolveCompatible(propertyTableEditor); + CRPropertyDescriptor[] extraTableEditor = getExtraTableEditor(); + return (CRPropertyDescriptor[]) ArrayUtils.addAll(propertyTableEditor, extraTableEditor); + } + + public CRPropertyDescriptor[] getExtraTableEditor(){ + CRPropertyDescriptor[] extraTableEditor = resolveCompatible(); FormElementCaseEditorProcessor processor = ExtraDesignClassManager.getInstance().getSingle(FormElementCaseEditorProcessor.MARK_STRING); if (processor == null) { - return propertyTableEditor; + return extraTableEditor; } this.designer = WidgetPropertyPane.getInstance().getEditingFormDesigner(); FitProvider wbTpl = (FitProvider) designer.getTarget(); @@ -122,11 +127,12 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme if (editor.getReportFitAttr() == null) { editor.setReportFitInPc(processor.getFitStateInPC(fitAttr)); } - return (CRPropertyDescriptor[]) ArrayUtils.addAll(propertyTableEditor, extraEditor); + return (CRPropertyDescriptor[]) ArrayUtils.addAll(extraTableEditor, extraEditor); } - private CRPropertyDescriptor[] resolveCompatible (CRPropertyDescriptor[] propertyTableEditor) { + private CRPropertyDescriptor[] resolveCompatible() { + CRPropertyDescriptor[] extraProperty = new CRPropertyDescriptor[0]; //这边有个插件兼容问题,之后还是要改回process才行 Set set = ExtraDesignClassManager.getInstance().getArray(AbstractFormElementCaseEditorProvider.MARK_STRING); for (FormElementCaseEditorProvider provider : set) { @@ -137,9 +143,9 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme FormProvider formProvider = designer.getTarget(); ElementCaseEditorProvider elementCaseEditorProvider = this.toData(); PropertyDescriptor[] extraEditor = provider.createPropertyDescriptor(this.data.getClass(), formProvider, elementCaseEditorProvider); - propertyTableEditor = (CRPropertyDescriptor[]) ArrayUtils.addAll(propertyTableEditor, extraEditor); + extraProperty = (CRPropertyDescriptor[]) ArrayUtils.addAll(extraProperty, extraEditor); } - return propertyTableEditor; + return extraProperty; } @Override diff --git a/designer_form/src/com/fr/design/designer/creator/XWScaleLayout.java b/designer_form/src/com/fr/design/designer/creator/XWScaleLayout.java index a8ae49ddc..97a12e80b 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWScaleLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWScaleLayout.java @@ -161,4 +161,13 @@ public class XWScaleLayout extends DedicateLayoutContainer { public boolean supportSetVisibleOrEnable(){ return true; } + + /** + * data属性改变触发其他操作 + * + */ + public void firePropertyChange(){ + XCreator child = getXCreator(INDEX); + child.firePropertyChange(); + } } \ 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 fcf1e503c..42011c306 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 @@ -536,4 +536,22 @@ public class XWTabFitLayout extends XWFitLayout { public WidgetPropertyUIProvider[] getWidgetPropertyUIProviders() { return new WidgetPropertyUIProvider[0]; } + + public void firePropertyChange(){ + checkButonType(); + initialBackground = ((WTabFitLayout) data).getInitialBackground(); + overBackground = ((WTabFitLayout) data).getOverBackground(); + clickBackground = ((WTabFitLayout)data).getClickBackground(); + CardSwitchButton cardSwitchButton = (CardSwitchButton) xCardSwitchButton.toData(); + if(initialBackground != null){ + xCardSwitchButton.setSelectBackground(initialBackground); + cardSwitchButton.setInitialBackground(initialBackground); + } + if(overBackground != null){ + cardSwitchButton.setOverBackground(overBackground); + } + if(clickBackground != null){ + cardSwitchButton.setClickBackground(clickBackground); + } + } } \ No newline at end of file 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 7fdb11e66..60f8cbe05 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 @@ -1,6 +1,7 @@ package com.fr.design.mainframe.widget.ui; import com.fr.design.data.DataCreatorUI; +import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.design.designer.creator.*; import com.fr.design.dialog.BasicScrollPane; import com.fr.design.foldablepane.UIExpandablePane; @@ -19,6 +20,7 @@ import com.fr.form.ui.container.WScaleLayout; import com.fr.form.ui.container.WTitleLayout; import com.fr.form.ui.widget.CRBoundsWidget; import com.fr.general.Inter; +import com.fr.stable.StringUtils; import javax.swing.*; import java.awt.*; @@ -135,6 +137,8 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane { attriCardPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + jPanel.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0)); + jPanel.add(attriCardPane, BorderLayout.CENTER); this.listener = new AttributeChangeListener() { @@ -148,19 +152,12 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane { private void initDefinePane() { currentEditorDefinePane = null; - XCreator creator = xCreator; - if (xCreator.acceptType(XWScaleLayout.class)) { - if (xCreator.getComponentCount() > 0 && ((XCreator) xCreator.getComponent(0)).shouldScaleCreator()) { - creator = (XCreator) xCreator.getComponent(0); - } - } - if(xCreator.acceptType(XWTitleLayout.class)){ - creator = (XCreator) xCreator.getComponent(0); - } + boolean dedicateLayout = xCreator.acceptType(XWScaleLayout.class) && xCreator.getComponentCount() > 0 && ((XCreator) xCreator.getComponent(0)).shouldScaleCreator() || xCreator.acceptType(XWTitleLayout.class); + XCreator creator = dedicateLayout ? (XCreator) xCreator.getComponent(0) : xCreator; FormWidgetDefinePaneFactoryBase.RN rn = FormWidgetDefinePaneFactoryBase.createWidgetDefinePane(creator, creator.toData(), new Operator() { @Override public void did(DataCreatorUI ui, String cardName) { - + //todo } }); DataModify definePane = rn.getDefinePane(); @@ -188,7 +185,7 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane { if (cellWidget.acceptType(WScaleLayout.class)) { Widget crBoundsWidget = ((WScaleLayout) cellWidget).getBoundsWidget(); innerWidget = ((CRBoundsWidget) crBoundsWidget).getWidget(); - } else if(cellWidget.acceptType(WTitleLayout.class)){ + } else if (cellWidget.acceptType(WTitleLayout.class)) { CRBoundsWidget crBoundsWidget = ((WTitleLayout) cellWidget).getBodyBoundsWidget(); innerWidget = crBoundsWidget.getWidget(); } @@ -205,6 +202,8 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane { if (widgetBoundPane != null) { widgetBoundPane.update(); } + xCreator.resetCreatorName(widget.getWidgetName()); + designer.getEditListenerTable().fireCreatorModified(xCreator, DesignerEvent.CREATOR_RENAMED); fireValueChanged(); } @@ -218,12 +217,13 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane { } public void fireValueChanged() { - designer.repaint(); - DesignerContext.getDesignerFrame().getSelectedJTemplate().fireTargetModified(); + xCreator.firePropertyChange(); + designer.fireTargetModified(); + designer.refreshDesignerUI(); } public String getIconPath() { - return ""; + return StringUtils.EMPTY; } diff --git a/designer_form/src/com/fr/design/parameter/RootDesignDefinePane.java b/designer_form/src/com/fr/design/parameter/RootDesignDefinePane.java index 85b84588b..3e454b19e 100644 --- a/designer_form/src/com/fr/design/parameter/RootDesignDefinePane.java +++ b/designer_form/src/com/fr/design/parameter/RootDesignDefinePane.java @@ -2,6 +2,7 @@ package com.fr.design.parameter; import com.fr.base.BaseUtils; import com.fr.design.data.DataCreatorUI; +import com.fr.design.designer.IntervalConstants; import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XWParameterLayout; import com.fr.design.file.HistoryTemplateListPane; @@ -51,7 +52,7 @@ public class RootDesignDefinePane extends AbstractDataModify { UIExpandablePane advanceExpandablePane = new UIExpandablePane(Inter.getLocText("FR-Designer_Advanced"), 280, 20, advancePane); this.add(advanceExpandablePane, BorderLayout.NORTH); JPanel layoutPane = createBoundsPane(); - UIExpandablePane layoutExpandablePane = new UIExpandablePane(Inter.getLocText("Size"), 280, 20, layoutPane); + UIExpandablePane layoutExpandablePane = new UIExpandablePane(Inter.getLocText("FR-Designer_Size"), 280, 20, layoutPane); this.add(layoutExpandablePane, BorderLayout.CENTER); } @@ -65,7 +66,7 @@ public class RootDesignDefinePane extends AbstractDataModify { Component[][] components = new Component[][]{ new Component[]{new UILabel(Inter.getLocText("Form-Desin_Width")), designerWidth}, }; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 20, 10); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_L2, IntervalConstants.INTERVAL_L1); JPanel jPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); jPanel.add(panel); @@ -97,8 +98,8 @@ public class RootDesignDefinePane extends AbstractDataModify { new Component[]{useParamsTemplate, null}, new Component[]{new UILabel(Inter.getLocText("FR-Designer_WidgetDisplyPosition")), hAlignmentPane} }; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 20, 10); - panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_L2, IntervalConstants.INTERVAL_L1); + panel.setBorder(BorderFactory.createEmptyBorder(IntervalConstants.INTERVAL_L1, 0, IntervalConstants.INTERVAL_L1, 0)); jPanel.add(panel); return jPanel; } @@ -115,7 +116,7 @@ public class RootDesignDefinePane extends AbstractDataModify { displayReport.setSelected(ob.isDelayDisplayContent()); useParamsTemplate.setSelected(ob.isUseParamsTemplate()); designerWidth.setValue(ob.getDesignWidth()); - hAlignmentPane.setSelectedIndex(ob.getPosition()); + hAlignmentPane.setSelectedItem(ob.getPosition()); } @@ -129,7 +130,7 @@ public class RootDesignDefinePane extends AbstractDataModify { JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); jTemplate.needAddTemplateId(useParamsTemplate.isSelected()); wParameterLayout.setBackground((Background) background.getValue()); - wParameterLayout.setPosition(hAlignmentPane.getSelectedIndex()); + wParameterLayout.setPosition((int)hAlignmentPane.getSelectedItem()); return wParameterLayout; } diff --git a/designer_form/src/com/fr/design/widget/ui/designer/ButtonDefinePane.java b/designer_form/src/com/fr/design/widget/ui/designer/ButtonDefinePane.java index ede1d7d29..5d5d093b1 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/ButtonDefinePane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/ButtonDefinePane.java @@ -44,12 +44,12 @@ public abstract class ButtonDefinePane extends AbstractDataMod UILabel backgroundLabel = new UILabel(Inter.getLocText("FR-Designer_Background")); backgroundLabel.setVerticalAlignment(SwingConstants.TOP); Component[][] n_components = { - {new UILabel(Inter.getLocText("FR-Designer_Button-Name") + ":"), buttonNameTextField}, + {new UILabel(Inter.getLocText("FR-Designer_Button-Name")), buttonNameTextField}, {new UILabel(Inter.getLocText("FR-Designer_Label_Name")), labelNameTextField}, backgroundCompPane, frFont, - {new UILabel(Inter.getLocText("FR-Designer_Icon") + ":"), iconPane}, - {new UILabel(Inter.getLocText("FR-Designer_Button-Hotkeys") + ":"), hotkeysTextField} + {new UILabel(Inter.getLocText("FR-Designer_Icon")), iconPane}, + {new UILabel(Inter.getLocText("FR-Designer_Button-Hotkeys")), hotkeysTextField} }; hotkeysTextField.setToolTipText(StableUtils.join(ButtonConstants.HOTKEYS, ",")); JPanel panel = TableLayoutHelper.createGapTableLayoutPane(n_components, rowSize, columnSize, rowCount, 10, 10); diff --git a/designer_form/src/com/fr/design/widget/ui/designer/CheckBoxDictPane.java b/designer_form/src/com/fr/design/widget/ui/designer/CheckBoxDictPane.java deleted file mode 100644 index 7ee87b1bf..000000000 --- a/designer_form/src/com/fr/design/widget/ui/designer/CheckBoxDictPane.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.fr.design.widget.ui.designer; - -import com.fr.design.gui.icombobox.DictionaryComboBox; -import com.fr.design.gui.icombobox.DictionaryConstants; -import com.fr.design.gui.icombobox.UIComboBox; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.form.ui.CheckBoxGroup; -import com.fr.form.ui.ComboCheckBox; -import com.fr.general.Inter; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -public class CheckBoxDictPane extends JPanel { - - private DictionaryComboBox delimiterComboBox; - private UIComboBox returnTypeComboBox; - private DictionaryComboBox startComboBox; - private DictionaryComboBox endComboBox; - - private JPanel delimiterPane; - private JPanel startPane; - private JPanel endPane; - - public CheckBoxDictPane() { - JPanel returnTypePane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); - returnTypePane.add(new UILabel(Inter.getLocText("Widget-Date_Selector_Return_Type") + ":"), BorderLayout.WEST); - returnTypeComboBox = new UIComboBox(new String[]{Inter.getLocText("Widget-Array"), Inter.getLocText("String")}); - returnTypePane.add(returnTypeComboBox, BorderLayout.CENTER); - this.add(returnTypePane); - - delimiterPane =FRGUIPaneFactory.createBorderLayout_S_Pane(); - UILabel label = new UILabel(Inter.getLocText("Form-Delimiter") + ":"); - delimiterPane.add(label, BorderLayout.WEST); - delimiterPane.add(delimiterComboBox = new DictionaryComboBox(DictionaryConstants.delimiters, DictionaryConstants.delimiterDisplays), BorderLayout.CENTER); - delimiterComboBox.setEditable(true); - this.add(delimiterPane); - - startPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - startPane.add(new UILabel(Inter.getLocText("ComboCheckBox-Start_Symbol") + ":"), BorderLayout.WEST); - startPane.add(startComboBox = new DictionaryComboBox(DictionaryConstants.symbols, DictionaryConstants.symbolDisplays), BorderLayout.CENTER); - startComboBox.setEditable(true); - this.add(startPane); - - endPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - endPane.add(new UILabel(Inter.getLocText("ComboCheckBox-End_Symbol") + ":"), BorderLayout.WEST); - endPane.add(endComboBox = new DictionaryComboBox(DictionaryConstants.symbols, DictionaryConstants.symbolDisplays), BorderLayout.CENTER); - endComboBox.setEditable(true); - this.add(endPane); - - returnTypeComboBox.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e) { - checkVisible(); - } - }); - } - - private void checkVisible(){ - delimiterPane.setVisible(returnTypeComboBox.getSelectedIndex() == 1); - startPane.setVisible(returnTypeComboBox.getSelectedIndex() == 1); - endPane.setVisible(returnTypeComboBox.getSelectedIndex() == 1); - } - - public void populate(ComboCheckBox comboCheckBox) { - this.delimiterComboBox.setSelectedItem(comboCheckBox.getDelimiter()); - this.returnTypeComboBox.setSelectedIndex(comboCheckBox.isReturnString() ? 1 : 0); - this.startComboBox.setSelectedItem(comboCheckBox.getStartSymbol()); - this.endComboBox.setSelectedItem(comboCheckBox.getEndSymbol()); - checkVisible(); - } - public void update(ComboCheckBox comboCheckBox) { - comboCheckBox.setDelimiter((String)this.delimiterComboBox.getSelectedItem()); - comboCheckBox.setReturnString(this.returnTypeComboBox.getSelectedIndex() != 0); - comboCheckBox.setStartSymbol((String)this.startComboBox.getSelectedItem()); - comboCheckBox.setEndSymbol((String)this.endComboBox.getSelectedItem()); - } - public void populate(CheckBoxGroup checkBoxGroup) { - this.delimiterComboBox.setSelectedItem(checkBoxGroup.getDelimiter()); - this.returnTypeComboBox.setSelectedIndex(checkBoxGroup.isReturnString() ? 1 : 0); - this.startComboBox.setSelectedItem(checkBoxGroup.getStartSymbol()); - this.endComboBox.setSelectedItem(checkBoxGroup.getEndSymbol()); - checkVisible(); - } - public void update(CheckBoxGroup checkBoxGroup) { - checkBoxGroup.setDelimiter((String)this.delimiterComboBox.getSelectedItem()); - checkBoxGroup.setReturnString(this.returnTypeComboBox.getSelectedIndex() != 0); - checkBoxGroup.setStartSymbol((String)this.startComboBox.getSelectedItem()); - checkBoxGroup.setEndSymbol((String)this.endComboBox.getSelectedItem()); - } -} \ No newline at end of file diff --git a/designer_form/src/com/fr/design/widget/ui/designer/DateEditorDefinePane.java b/designer_form/src/com/fr/design/widget/ui/designer/DateEditorDefinePane.java index 5cbaafdf9..f6954e1db 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/DateEditorDefinePane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/DateEditorDefinePane.java @@ -5,10 +5,8 @@ import com.fr.base.Formula; import com.fr.data.core.FormatField; import com.fr.design.designer.creator.XCreator; import com.fr.design.gui.ibutton.UIButtonGroup; -import com.fr.design.gui.ibutton.UIHeadGroup; import com.fr.design.gui.icombobox.UIComboBox; 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.TableLayout; import com.fr.design.layout.TableLayoutHelper; @@ -22,6 +20,8 @@ import com.fr.stable.ArrayUtils; import com.fr.stable.UtilEvalError; import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -34,10 +34,9 @@ public class DateEditorDefinePane extends DirectWriteEditorDefinePane(new String[] {Inter.getLocText("Date") , Inter.getLocText("String")}); @@ -125,8 +123,11 @@ public class DateEditorDefinePane extends DirectWriteEditorDefinePane extends Abstr protected void addValidatePane() { initErrorMsgPane(); validatePane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - final UILabel uiLabel = new UILabel(Inter.getLocText("FR-Designer_Widget_Error_Tip")); + JPanel borderPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + final JPanel errorTipPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{uiLabel, errorMsgTextField}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L1, LayoutConstants.VGAP_MEDIUM); + errorTipPane.setBorder(BorderFactory.createEmptyBorder(0, IntervalConstants.INTERVAL_L5, 0, 0)); + borderPane.add(errorTipPane, BorderLayout.CENTER); allowBlankCheckBox.addItemListener(new ItemListener() { - @Override public void itemStateChanged(ItemEvent e) { boolean isSelected = allowBlankCheckBox.isSelected(); - uiLabel.setVisible(!isSelected); - errorMsgTextField.setVisible(!isSelected); - if (isSelected) { - uiLabel.setPreferredSize(new Dimension(0, 0)); - errorMsgTextField.setPreferredSize(new Dimension(0, 0)); - } else { - uiLabel.setPreferredSize(new Dimension(66, 20)); - errorMsgTextField.setPreferredSize(new Dimension(150, 20)); - } + errorTipPane.setVisible(!isSelected); } }); - - double f = TableLayout.FILL; - double p = TableLayout.PREFERRED; Component[][] components = new Component[][]{ - new Component[]{allowBlankCheckBox, null}, - new Component[]{uiLabel, errorMsgTextField}, + new Component[]{allowBlankCheckBox}, + new Component[]{borderPane}, }; - double[] rowSize = {p, p}; - double[] columnSize = {p, f}; - int[][] rowCount = {{1, 1}, {1, 1}}; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 5, 5); - panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L6, IntervalConstants.INTERVAL_L6); + panel.setBorder(BorderFactory.createEmptyBorder(IntervalConstants.INTERVAL_L1, 0, IntervalConstants.INTERVAL_L1, 0)); validatePane.add(panel, BorderLayout.NORTH); JPanel contentPane = this.setValidatePane(); if (contentPane != null) { diff --git a/designer_form/src/com/fr/design/widget/ui/designer/FreeButtonDefinePane.java b/designer_form/src/com/fr/design/widget/ui/designer/FreeButtonDefinePane.java index db6635453..1c470394d 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/FreeButtonDefinePane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/FreeButtonDefinePane.java @@ -3,6 +3,7 @@ package com.fr.design.widget.ui.designer; import com.fr.design.designer.creator.XCreator; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.style.FRFontPane; +import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.widget.component.ButtonBackgroundPane; import com.fr.form.ui.FreeButton; import com.fr.general.FRFont; @@ -17,6 +18,7 @@ import java.awt.*; public class FreeButtonDefinePane extends ButtonDefinePane { private ButtonBackgroundPane backgroundCompPane; private FRFontPane frFontPane; + private UILabel fontLabel; public FreeButtonDefinePane(XCreator xcreator) { super(xcreator); @@ -24,29 +26,41 @@ public class FreeButtonDefinePane extends ButtonDefinePane { public Component[] createBackgroundComp() { backgroundCompPane = new ButtonBackgroundPane(); - return new Component[]{new UILabel(Inter.getLocText("FR-Designer_Background") + ":"), backgroundCompPane}; + return new Component[]{backgroundCompPane,null}; } public Component[] createFontPane() { - UILabel fontLabel = new UILabel(Inter.getLocText("FR-Designer_Font")); + JPanel fontLabelPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); + fontLabel = new UILabel(Inter.getLocText("FR-Designer_Font")); + fontLabelPanel.add(fontLabel, BorderLayout.CENTER); fontLabel.setVerticalAlignment(SwingConstants.TOP); frFontPane = new FRFontPane(); - return new Component[]{fontLabel, frFontPane}; + JPanel fontPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); + fontPanel.add(frFontPane, BorderLayout.CENTER); + return new Component[]{fontLabelPanel, fontPanel}; } public void populateSubButtonPane(FreeButton e) { backgroundCompPane.populate(e); - FRFont frFont = e.getFont(); - if (frFont != null) { - frFontPane.populateBean(e.getFont()); + frFontPane.setVisible(e.isCustomStyle()); + fontLabel.setVisible(e.isCustomStyle()); + if(e.isCustomStyle()){ + FRFont frFont = e.getFont(); + if (frFont != null) { + frFontPane.populateBean(e.getFont()); + } } } public FreeButton updateSubButtonPane() { FreeButton freeButton = (FreeButton) creator.toData(); backgroundCompPane.update(freeButton); - FRFont frFont = freeButton.getFont() == null ? FRFont.getInstance() : freeButton.getFont(); - freeButton.setFont(frFontPane.update(frFont)); + frFontPane.setVisible(freeButton.isCustomStyle()); + fontLabel.setVisible(freeButton.isCustomStyle()); + if(freeButton.isCustomStyle()){ + FRFont frFont = freeButton.getFont() == null ? FRFont.getInstance() : freeButton.getFont(); + freeButton.setFont(frFontPane.update(frFont)); + } return freeButton; } } diff --git a/designer_form/src/com/fr/design/widget/ui/designer/LabelDefinePane.java b/designer_form/src/com/fr/design/widget/ui/designer/LabelDefinePane.java index 50c8c15b6..cb988f24f 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/LabelDefinePane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/LabelDefinePane.java @@ -84,7 +84,7 @@ public class LabelDefinePane extends AbstractDataModify