diff --git a/designer/src/com/fr/design/mainframe/CellWidgetPropertyPane.java b/designer/src/com/fr/design/mainframe/CellWidgetPropertyPane.java index eeb6657c42..df2cbca539 100644 --- a/designer/src/com/fr/design/mainframe/CellWidgetPropertyPane.java +++ b/designer/src/com/fr/design/mainframe/CellWidgetPropertyPane.java @@ -12,6 +12,7 @@ import com.fr.form.ui.Widget; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.grid.selection.CellSelection; +import com.fr.grid.selection.FloatSelection; import com.fr.grid.selection.Selection; import com.fr.privilege.finegrain.WidgetPrivilegeControl; import com.fr.report.cell.DefaultTemplateCellElement; @@ -85,8 +86,7 @@ public class CellWidgetPropertyPane extends BasicPane { } - public void populate(ElementCasePane ePane) { - + public void reInit(ElementCasePane ePane){ cellEditorDefPane = new WidgetPane(ePane); this.removeAll(); this.add(cellEditorDefPane, BorderLayout.CENTER); @@ -102,6 +102,11 @@ public class CellWidgetPropertyPane extends BasicPane { this.populate(editCellElement); } + public void populate(ElementCasePane ePane) { + Selection editingSelection = ePane.getSelection(); + editingSelection.populateWidgetPropertyPane(ePane); + } + public void update() { if (cellElement == null) {// 利用默认的CellElement. return; diff --git a/designer/src/com/fr/grid/selection/CellSelection.java b/designer/src/com/fr/grid/selection/CellSelection.java index a5b139af5d..d3778d72a0 100644 --- a/designer/src/com/fr/grid/selection/CellSelection.java +++ b/designer/src/com/fr/grid/selection/CellSelection.java @@ -18,12 +18,14 @@ import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.gui.imenu.UIMenu; import com.fr.design.gui.imenu.UIPopupMenu; import com.fr.design.mainframe.CellElementPropertyPane; +import com.fr.design.mainframe.CellWidgetPropertyPane; import com.fr.design.mainframe.ElementCasePane; import com.fr.design.mainframe.ElementCasePane.Clear; import com.fr.design.mainframe.JTemplate; import com.fr.design.menu.KeySetUtils; import com.fr.design.report.RowColumnPane; import com.fr.design.selection.QuickEditor; +import com.fr.form.ui.CellWidget; import com.fr.general.Inter; import com.fr.grid.GridUtils; import com.fr.report.cell.CellElement; @@ -687,4 +689,9 @@ public class CellSelection extends Selection { public void populatePropertyPane(ElementCasePane ePane) { CellElementPropertyPane.getInstance().reInit(ePane); } + + public void populateWidgetPropertyPane(ElementCasePane ePane){ + CellWidgetPropertyPane.getInstance().reInit(ePane); + } + } \ No newline at end of file diff --git a/designer/src/com/fr/grid/selection/FloatSelection.java b/designer/src/com/fr/grid/selection/FloatSelection.java index adc6b01f1d..214e82e09f 100644 --- a/designer/src/com/fr/grid/selection/FloatSelection.java +++ b/designer/src/com/fr/grid/selection/FloatSelection.java @@ -234,4 +234,9 @@ public class FloatSelection extends Selection { public void populatePropertyPane(ElementCasePane ePane) { CellElementPropertyPane.getInstance().removeAll(); } + + public void populateWidgetPropertyPane(ElementCasePane ePane){ + return; + } + } \ No newline at end of file diff --git a/designer/src/com/fr/grid/selection/Selection.java b/designer/src/com/fr/grid/selection/Selection.java index c12dda83bc..6787e36a5c 100644 --- a/designer/src/com/fr/grid/selection/Selection.java +++ b/designer/src/com/fr/grid/selection/Selection.java @@ -89,6 +89,8 @@ public abstract class Selection implements FCloneable, Serializable , Selectable public abstract boolean containsColumnRow(ColumnRow cr); public abstract void populatePropertyPane(ElementCasePane ePane); + + public abstract void populateWidgetPropertyPane(ElementCasePane ePane); @Override diff --git a/designer/src/com/fr/poly/PolyBlockProperTable.java b/designer/src/com/fr/poly/PolyBlockProperTable.java index 9b352f56e4..647427c64a 100644 --- a/designer/src/com/fr/poly/PolyBlockProperTable.java +++ b/designer/src/com/fr/poly/PolyBlockProperTable.java @@ -1,17 +1,66 @@ package com.fr.poly; -import java.util.ArrayList; - -import javax.swing.table.TableModel; - -import com.fr.design.gui.itable.AbstractPropertyTable; -import com.fr.design.gui.itable.PropertyGroup; +import com.fr.design.event.UIObserver; +import com.fr.design.event.UIObserverListener; +import com.fr.design.foldablepane.UIExpandablePane; +import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.mainframe.widget.BasicPropertyPane; +import com.fr.design.widget.WidgetBoundsPaneFactory; +import com.fr.general.Inter; import com.fr.poly.group.PolyBoundsGroup; -import com.fr.poly.group.PolyNameGroup; import com.fr.report.poly.TemplateBlock; -public class PolyBlockProperTable extends AbstractPropertyTable { +import javax.swing.*; +import java.awt.*; + +public class PolyBlockProperTable extends JPanel { private PolyDesigner designer; + private UISpinner x; + private UISpinner y; + private UISpinner width; + private UISpinner height; + private BasicPropertyPane blockPropertyPane; + private boolean isPopulating = false; + + private static final int MAX_SPINNER_VALUE = 10000; + + public PolyBlockProperTable() { + initPropertyPane(); + initListener(this); + } + + private void initPropertyPane() { + this.setLayout(new BorderLayout()); + + blockPropertyPane = new BasicPropertyPane(); + UIExpandablePane basicPane = new UIExpandablePane(Inter.getLocText("FR-Designer_Basic"), 280, 24, blockPropertyPane); + this.add(basicPane, BorderLayout.NORTH); + + x = new UISpinner(0, MAX_SPINNER_VALUE, 1); + y = new UISpinner(0, MAX_SPINNER_VALUE, 1); + width = new UISpinner(0, MAX_SPINNER_VALUE, 1); + height = new UISpinner(0, MAX_SPINNER_VALUE, 1); + UIExpandablePane boundsPane = WidgetBoundsPaneFactory.createAbsoluteBoundsPane(x, y, width, height); + this.add(boundsPane, BorderLayout.CENTER); + } + + private void initListener(Container parentComponent) { + for (int i = 0; i < parentComponent.getComponentCount(); i++) { + Component tmpComp = parentComponent.getComponent(i); + + if (tmpComp instanceof Container) { + initListener((Container) tmpComp); + } + if (tmpComp instanceof UIObserver) { + ((UIObserver) tmpComp).registerChangeListener(new UIObserverListener() { + @Override + public void doChange() { + update(); + } + }); + } + } + } /** * 初始化属性表 @@ -20,16 +69,16 @@ public class PolyBlockProperTable extends AbstractPropertyTable { * */ public void initPropertyGroups(Object source) { - groups = new ArrayList(); if (source instanceof TemplateBlock) { TemplateBlock block = (TemplateBlock) source; - PolyNameGroup namegroup = new PolyNameGroup(block); - groups.add(new PropertyGroup(namegroup)); - PolyBoundsGroup boundsgroup = new PolyBoundsGroup(block, designer.getTarget()); - groups.add(new PropertyGroup(boundsgroup)); + blockPropertyPane.getWidgetNameField().setText(block.getBlockName()); + final PolyBoundsGroup boundsgroup = new PolyBoundsGroup(block, designer.getTarget()); + + x.setValue((int)boundsgroup.getValue(0, 1)); + y.setValue((int)boundsgroup.getValue(1, 1)); + width.setValue((int)boundsgroup.getValue(2, 1)); + height.setValue((int)boundsgroup.getValue(3, 1)); } - TableModel model = new BeanTableModel(); - setModel(model); this.repaint(); } @@ -42,8 +91,23 @@ public class PolyBlockProperTable extends AbstractPropertyTable { } public void populate(PolyDesigner designer) { + isPopulating = true; this.designer = designer; initPropertyGroups(this.designer.getEditingTarget()); + isPopulating = false; } + public void update() { + TemplateBlock block = this.designer.getEditingTarget(); + if (isPopulating || block == null) { + return; + } + block.setBlockName(blockPropertyPane.getWidgetNameField().getText()); + PolyBoundsGroup boundsgroup = new PolyBoundsGroup(block, designer.getTarget()); + boundsgroup.setValue(x.getValue(), 0, 1); + boundsgroup.setValue(y.getValue(), 1, 1); + boundsgroup.setValue(width.getValue(), 2, 1); + boundsgroup.setValue(height.getValue(), 3, 1); + firePropertyEdit(); + } } \ No newline at end of file diff --git a/designer/src/com/fr/poly/creator/ECBlockEditor.java b/designer/src/com/fr/poly/creator/ECBlockEditor.java index eff054dfb7..84911ccf52 100644 --- a/designer/src/com/fr/poly/creator/ECBlockEditor.java +++ b/designer/src/com/fr/poly/creator/ECBlockEditor.java @@ -143,6 +143,7 @@ public class ECBlockEditor extends BlockEditor { } QuickEditorRegion.getInstance().populate(editComponent.getCurrentEditor()); CellElementPropertyPane.getInstance().populate(editComponent); + CellWidgetPropertyPane.getInstance().populate(editComponent); Selection Selection = ((JWorkBook) (HistoryTemplateListPane.getInstance().getCurrentEditingTemplate())).getEditingElementCasePane().getSelection(); if (Selection instanceof FloatSelection) { EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.REPORT_FLOAT); @@ -155,6 +156,7 @@ public class ECBlockEditor extends BlockEditor { EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.REPORT); EastRegionContainerPane.getInstance().replaceCellAttrPane(CellElementPropertyPane.getInstance()); EastRegionContainerPane.getInstance().replaceCellElementPane(QuickEditorRegion.getInstance()); + EastRegionContainerPane.getInstance().replaceWidgetSettingsPane(CellWidgetPropertyPane.getInstance()); } EastRegionContainerPane.getInstance().replaceCellAttrPane(CellElementPropertyPane.getInstance()); diff --git a/designer_base/src/com/fr/design/constants/UIConstants.java b/designer_base/src/com/fr/design/constants/UIConstants.java index 3945e756fb..46a883ab17 100644 --- a/designer_base/src/com/fr/design/constants/UIConstants.java +++ b/designer_base/src/com/fr/design/constants/UIConstants.java @@ -86,7 +86,8 @@ public interface UIConstants { public static final Color AUTHORITY_SHEET_DARK = new Color(86, 120, 143); public static final Color AUTHORITY_SHEET_LIGHT = new Color(156, 204, 238); public static final Color AUTHORITY_SHEET_UNSELECTED = new Color(146, 192, 225); - public static final Color ATTRIBUTE_PRESS = new Color(0xD8F2FD); + public static final Color ATTRIBUTE_PRESS = new Color(0x419BF9); + public static final Color NORMAL_BLUE = new Color(0x419BF9); public static final Color ATTRIBUTE_NORMAL = new Color(0xDADADD); public static final Color ATTRIBUTE_HOVER = new Color(0xC9C9CD); public static final Color CHECKBOX_HOVER_SELECTED = new Color(0x3394f0); diff --git a/designer_base/src/com/fr/design/data/datapane/TableDataTree.java b/designer_base/src/com/fr/design/data/datapane/TableDataTree.java index bb8553d308..8082d8c1ea 100644 --- a/designer_base/src/com/fr/design/data/datapane/TableDataTree.java +++ b/designer_base/src/com/fr/design/data/datapane/TableDataTree.java @@ -74,7 +74,7 @@ public class TableDataTree extends UserObjectRefreshJTree { dim.height += 2; this.setSize(dim); this.setPreferredSize(dim); - this.setBackgroundNonSelectionColor(UIConstants.NORMAL_BACKGROUND); + this.setBackgroundNonSelectionColor(UIConstants.TREE_BACKGROUND); this.setForeground(UIConstants.FONT_COLOR); this.setBackgroundSelectionColor(UIConstants.FLESH_BLUE); return this; 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 69df97135d..4edfe68079 100644 --- a/designer_base/src/com/fr/design/gui/frpane/RegPane.java +++ b/designer_base/src/com/fr/design/gui/frpane/RegPane.java @@ -16,6 +16,8 @@ import com.fr.general.Inter; import com.fr.stable.StringUtils; import javax.swing.*; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -53,9 +55,10 @@ public class RegPane extends BasicPane { private RegPhonePane regPhonePane; private DefaultRegPane defaultRegPane; private CustomRegRexPane customRegRexPane; + protected RegErrorMsgPane regErrorMsgPane; - public UIComboBox getRegComboBox() { + public UIComboBox getRegComboBox(){ return regComboBox; } @@ -68,25 +71,20 @@ public class RegPane extends BasicPane { this.initComponents(); } - private void initComponents() { - this.setLayout(new BorderLayout()); - + private void initComponents(){ + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + JPanel contentPane = FRGUIPaneFactory.createBoxFlowInnerContainer_S_Pane(); + this.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); + this.add(contentPane, BorderLayout.NORTH); + contentPane.add(new UILabel(Inter.getLocText("FR-Designer_Input_Rule"))); regComboBox = new UIComboBox(regType); + regComboBox.setPreferredSize(new Dimension(140, 20)); regComboBox.setRenderer(listCellRender); - - double f = TableLayout.FILL; - double p = TableLayout.PREFERRED; - - Component[][] components = new Component[][]{ - new Component[]{new UILabel(Inter.getLocText("FR-Designer_Input_Rule") + " "), regComboBox}, - }; - double[] rowSize = {p}; - double[] columnSize = {p, f}; - int[][] rowCount = {{1, 1}}; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_LARGE, LayoutConstants.VGAP_LARGE); - panel.setBorder(BorderFactory.createEmptyBorder(8, 0, 0, 0)); - this.add(panel, BorderLayout.NORTH); - + UILabel uiLabel = new UILabel(); + uiLabel.setPreferredSize(new Dimension(20, 20)); + contentPane.add(uiLabel); + contentPane.add(regComboBox); + regErrorMsgPane = new RegErrorMsgPane(); final JPanel cardPane = FRGUIPaneFactory.createCardLayout_S_Pane(); detailedCardLayout = new CardLayout(); cardPane.setLayout(detailedCardLayout); @@ -94,26 +92,35 @@ public class RegPane extends BasicPane { cardPane.add((regLengthPane = new RegLengthPane()), "Length"); cardPane.add((regPhonePane = new RegPhonePane()), "Phone"); cardPane.add((customRegRexPane = new CustomRegRexPane()), "Custom"); - cardPane.setBorder(BorderFactory.createEmptyBorder(8, 12, 0, 0)); this.add(cardPane, BorderLayout.CENTER); - regComboBox.addActionListener(new ActionListener() { + this.add(regErrorMsgPane, BorderLayout.SOUTH); + regComboBox.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { - RegExp regExp = (RegExp) regComboBox.getSelectedItem(); - if (regExp instanceof PhoneReg) { + RegExp regExp = (RegExp)regComboBox.getSelectedItem(); + if(regExp instanceof PhoneReg) { + cardPane.setPreferredSize(new Dimension(220, 30)); Object selectItem = regPhonePane.dataTypeComboBox.getSelectedItem(); String regString = selectItem == null ? StringUtils.EMPTY : selectItem.toString(); firePhoneRegAction(regString); detailedCardLayout.show(cardPane, "Phone"); } else { - if (regExp instanceof LengthReg) { + if (regExp instanceof LengthReg){ + cardPane.setPreferredSize(new Dimension(220, 60)); detailedCardLayout.show(cardPane, "Length"); - } else if (regExp instanceof CustomReg) { + } else if (regExp instanceof CustomReg){ + cardPane.setPreferredSize(new Dimension(220, 30)); detailedCardLayout.show(cardPane, "Custom"); } else { + cardPane.setPreferredSize(new Dimension(0,0 )); detailedCardLayout.show(cardPane, "Default"); } fireRegChangeAction(); } + if(regExp instanceof NoneReg){ + regErrorMsgPane.setVisible(false); + return; + } + regErrorMsgPane.setVisible(true); } }); } @@ -146,19 +153,21 @@ public class RegPane extends BasicPane { } else { defaultRegPane.populate(regex); } + regErrorMsgPane.populate(regex); } - public RegExp update() { - RegExp regExp = (RegExp) regComboBox.getSelectedItem(); - - if (regExp instanceof LengthReg) { + public RegExp update(){ + RegExp regExp = (RegExp)regComboBox.getSelectedItem(); + regErrorMsgPane.update(); + if (regExp instanceof LengthReg){ return regLengthPane.update(); - } else if (regExp instanceof PhoneReg) { + } else if(regExp instanceof PhoneReg) { return regPhonePane.update(); - } else if (regExp instanceof NoneReg || regExp instanceof MailReg || regExp instanceof IDCardReg + } else if(regExp instanceof NoneReg || regExp instanceof MailReg || regExp instanceof IDCardReg || regExp instanceof PostCardReg || regExp instanceof PhoneReg || regExp instanceof MobileReg) { return regExp; - } else if (regExp instanceof CustomReg) { + } + else if (regExp instanceof CustomReg){ if (customRegRexPane.isEmpty()) { return new NoneReg(); } @@ -177,7 +186,7 @@ public class RegPane extends BasicPane { private static class DefaultRegPane extends DisplayPane { public RegExp regRex; - public DefaultRegPane() { + public DefaultRegPane(){ } @@ -203,7 +212,10 @@ public class RegPane extends BasicPane { * 添加电话规则监听器 * * @param listener 监听器 + * + * * @date 2014-12-3-下午7:30:55 + * */ public void addPhoneRegListener(PhoneRegListener listener) { this.listenerList.add(PhoneRegListener.class, listener); @@ -213,7 +225,10 @@ public class RegPane extends BasicPane { * 移除电话规则监听器 * * @param listener 监听器 + * + * * @date 2014-12-3-下午7:30:55 + * */ public void removePhoneRegListener(PhoneRegListener listener) { this.listenerList.remove(PhoneRegListener.class, listener); @@ -223,7 +238,10 @@ public class RegPane extends BasicPane { * 添加正则监听器 * * @param listener 监听器 + * + * * @date 2014-12-3-下午7:29:48 + * */ public void addRegChangeListener(RegChangeListener listener) { this.listenerList.add(RegChangeListener.class, listener); @@ -233,7 +251,10 @@ public class RegPane extends BasicPane { * 移除正则监听器 * * @param listener 监听器 + * + * * @date 2014-12-3-下午7:29:48 + * */ public void removeRegChangeListener(RegChangeListener listener) { this.listenerList.remove(RegChangeListener.class, listener); @@ -241,45 +262,41 @@ public class RegPane extends BasicPane { public class PhoneRegEvent extends EventObject { private String phoneRegString; - public PhoneRegEvent(Object source, String phoneRegString) { super(source); this.setPhoneRegString(phoneRegString); } - public void setPhoneRegString(String phoneRegString) { this.phoneRegString = phoneRegString; } - public String getPhoneRegString() { return phoneRegString; } } - public class RegChangeEvent extends EventObject { private String regString; - public RegChangeEvent(Object source, String regString) { super(source); this.setRegString(regString); } - public void setRegString(String regString) { this.regString = regString; } - public String getRegString() { return regString; } } - public interface PhoneRegListener extends EventListener { + public interface PhoneRegListener extends EventListener{ /** * 电话规则变化监听 * * @param e 变化事件 + * + * * @date 2014-12-3-下午7:29:01 + * */ void phoneRegChangeAction(PhoneRegEvent e); @@ -290,29 +307,28 @@ public class RegPane extends BasicPane { /** * 正则表达规则变化监听 * + * * @date 2014-12-3-下午7:29:01 + * */ void regChangeAction(); } - protected void firePhoneRegAction(String phoneReg) { Object[] listeners = listenerList.getListenerList(); - for (int i = listeners.length - 2; i >= 0; i -= 2) { - if (listeners[i] == PhoneRegListener.class) { - ((PhoneRegListener) listeners[i + 1]).phoneRegChangeAction(new PhoneRegEvent(this, phoneReg)); + for (int i = listeners.length-2; i>=0; i-=2) { + if (listeners[i]==PhoneRegListener.class) { + ((PhoneRegListener)listeners[i+1]).phoneRegChangeAction(new PhoneRegEvent(this , phoneReg)); } } } - protected void fireRegChangeAction() { Object[] listeners = listenerList.getListenerList(); - for (int i = listeners.length - 2; i >= 0; i -= 2) { - if (listeners[i] == RegChangeListener.class) { - ((RegChangeListener) listeners[i + 1]).regChangeAction(); + for (int i = listeners.length-2; i>=0; i-=2) { + if (listeners[i]==RegChangeListener.class) { + ((RegChangeListener)listeners[i+1]).regChangeAction(); } } } - private class RegPhonePane extends DisplayPane { private static final String EMB_REG1 = "025-85679591"; private static final String EMB_REG2 = "02585679591"; @@ -322,19 +338,20 @@ public class RegPane extends BasicPane { private UIComboBox dataTypeComboBox; private final String[] dataType = {EMB_REG1, EMB_REG2, EMB_REG3, Inter.getLocText("FR-Designer_Custom")}; - DefaultComboBoxModel DefaultComboBoxModel = new DefaultComboBoxModel(dataType); - + DefaultComboBoxModel DefaultComboBoxModel= new DefaultComboBoxModel(dataType); public RegPhonePane() { - this.setLayout(FRGUIPaneFactory.createLabelFlowLayout()); - this.add(new UILabel(Inter.getLocText("FR-Designer_Data_Type") + ":")); + this.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 5)); + this.setLayout(FRGUIPaneFactory.createBorderLayout()); dataTypeComboBox = new UIComboBox(DefaultComboBoxModel); - JTextField editFiled = (JTextField) (dataTypeComboBox.getEditor().getEditorComponent()); + 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); + this.add(panel); editFiled.setDocument(new LimitedDocument(LIMIT_LENGTH, REG_PATTERN)); dataTypeComboBox.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { - if (e.getStateChange() == ItemEvent.SELECTED) { - if (ComparatorUtils.equals(e.getItem(), dataType[3])) { + if(e.getStateChange() == ItemEvent.SELECTED) { + if(ComparatorUtils.equals(e.getItem(), dataType[3])) { dataTypeComboBox.setSelectedItem(null); dataTypeComboBox.setEditable(true); firePhoneRegAction(EMB_REG1); @@ -347,9 +364,7 @@ public class RegPane extends BasicPane { }); dataTypeComboBox.setSelectedIndex(0); firePhoneRegAction(dataTypeComboBox.getSelectedItem().toString()); - this.add(dataTypeComboBox); } - @Override protected String title4PopupWindow() { return "PHONE"; @@ -357,17 +372,17 @@ public class RegPane extends BasicPane { @Override public void populate(RegExp regRex) { - if (!(regRex instanceof PhoneReg)) { - return; + if(!(regRex instanceof PhoneReg)) { + return ; } - String regstr = ((PhoneReg) regRex).getRegString(); - if (checkEmbedded(regstr)) { + String regstr = ((PhoneReg)regRex).getRegString(); + if (checkEmbedded(regstr)){ DefaultComboBoxModel.addElement(regstr); } - dataTypeComboBox.setSelectedItem(((PhoneReg) regRex).getRegString()); + dataTypeComboBox.setSelectedItem(((PhoneReg)regRex).getRegString()); } - private boolean checkEmbedded(String regstr) { + private boolean checkEmbedded(String regstr){ return !ComparatorUtils.equals(EMB_REG1, regstr) && !ComparatorUtils.equals(EMB_REG2, regstr) && !ComparatorUtils.equals(EMB_REG3, regstr); @@ -376,7 +391,7 @@ public class RegPane extends BasicPane { @Override public RegExp update() { PhoneReg regRex = new PhoneReg(); - regRex.setRegString((String) (dataTypeComboBox.getSelectedItem())); + regRex.setRegString((String)(dataTypeComboBox.getSelectedItem())); return regRex; } } @@ -385,22 +400,25 @@ public class RegPane extends BasicPane { private UISpinner minLenSpinner; private UISpinner maxLenSpinner; - public RegLengthPane() { - this.setLayout(new BorderLayout()); + public RegLengthPane(){ + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + this.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 5)); + this.setPreferredSize(new Dimension(210, 56)); minLenSpinner = new UISpinner(0, Integer.MAX_VALUE, 1, 0); maxLenSpinner = new UISpinner(0, Integer.MAX_VALUE, 1, 0); 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[]{new UILabel(Inter.getLocText("FR-Designer_Reg_Min_Length") + ":"), minLenSpinner }, + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Reg_Max_Length") + ":"), maxLenSpinner}, }; double[] rowSize = {p, p}; - double[] columnSize = {p, f}; - int[][] rowCount = {{1, 1}, {1, 1}}; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 8, 5); + double[] columnSize = {p,f}; + int[][] rowCount = {{1, 1},{1, 1}}; + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_SMALL, LayoutConstants.VGAP_MEDIUM); + this.add(panel); + - this.add(panel, BorderLayout.CENTER); } @Override @@ -410,20 +428,20 @@ public class RegPane extends BasicPane { @Override public void populate(RegExp regRex) { - if (!(regRex instanceof LengthReg)) { + if (!(regRex instanceof LengthReg)){ return; } - int minLength = ((LengthReg) regRex).getMinLen(); - int maxLength = ((LengthReg) regRex).getMaxLen(); + int minLength = ((LengthReg)regRex).getMinLen(); + int maxLength = ((LengthReg)regRex).getMaxLen(); minLenSpinner.setValue(minLength); maxLenSpinner.setValue(maxLength); } @Override public RegExp update() { - int startLength = ((Number) minLenSpinner.getValue()).intValue(); - int endLength = ((Number) maxLenSpinner.getValue()).intValue(); + int startLength = ((Number)minLenSpinner.getValue()).intValue(); + int endLength = ((Number)maxLenSpinner.getValue()).intValue(); LengthReg regRex = new LengthReg(); regRex.setMinLen(startLength); regRex.setMaxLen(endLength); @@ -432,22 +450,14 @@ public class RegPane extends BasicPane { } } - private static class CustomRegRexPane extends DisplayPane { + private static class CustomRegRexPane extends DisplayPane{ private UITextField regTextField; - public CustomRegRexPane() { - this.setLayout(new BorderLayout()); - regTextField = new UITextField(12); - - double f = TableLayout.FILL; - double p = TableLayout.PREFERRED; - Component[][] components = new Component[][]{ - new Component[]{new UILabel(Inter.getLocText("FR-Designer_Reg_Expressions")), regTextField}, - }; - double[] rowSize = {p}; - double[] columnSize = {p, f}; - int[][] rowCount = {{1, 1}}; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 2, 1); + public CustomRegRexPane(){ + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + this.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 5)); + 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); this.add(panel); } @@ -458,7 +468,7 @@ public class RegPane extends BasicPane { @Override public void populate(RegExp regRex) { - if (!(regRex instanceof CustomReg)) { + if (!(regRex instanceof CustomReg)){ return; } regTextField.setText(regRex.toRegText()); @@ -474,26 +484,77 @@ public class RegPane extends BasicPane { } } - ListCellRenderer listCellRender = new UIComboBoxRenderer() { + private static class RegErrorMsgPane extends DisplayPane{ + private UITextField regErrorMsgField; + + public RegErrorMsgPane(){ + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + this.setBorder(BorderFactory.createEmptyBorder(5,0,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); + this.add(panel); + } + + private void initRegErrorMsgField(){ + regErrorMsgField = new UITextField(); + regErrorMsgField.getDocument().addDocumentListener(new DocumentListener() { + public void changedUpdate(DocumentEvent e) { + regErrorMsgField.setToolTipText(regErrorMsgField.getText()); + } + + public void insertUpdate(DocumentEvent e) { + regErrorMsgField.setToolTipText(regErrorMsgField.getText()); + } + + public void removeUpdate(DocumentEvent e) { + regErrorMsgField.setToolTipText(regErrorMsgField.getText()); + } + }); + } + + @Override + protected String title4PopupWindow() { + return "CUSTOM"; + } + + @Override + public void populate(RegExp regRex) { + if (!(regRex instanceof CustomReg)){ + return; + } + regErrorMsgField.setText(regRex.toRegText()); + } + + @Override + public RegExp update() { + return new CustomReg(regErrorMsgField.getText()); + } + + public boolean isEmpty() { + return StringUtils.isEmpty(regErrorMsgField.getText()); + } + } + + ListCellRenderer listCellRender = new UIComboBoxRenderer(){ @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); - if (value instanceof NoneReg) { + if (value instanceof NoneReg){ this.setText(Inter.getLocText("FR-Designer_None")); - } else if (value instanceof LengthReg) { + } else if (value instanceof LengthReg){ this.setText(Inter.getLocText("FR-Designer_Length")); - } else if (value instanceof MailReg) { + } else if (value instanceof MailReg){ this.setText(Inter.getLocText("FR-Designer_Email")); - } else if (value instanceof PhoneReg) { + } else if (value instanceof PhoneReg){ this.setText(Inter.getLocText("FR-Designer_Phone")); } else if (value instanceof MobileReg) { this.setText(Inter.getLocText("FR-Designer_MobilePhone")); - } else if (value instanceof IDCardReg) { + } else if (value instanceof IDCardReg){ this.setText(Inter.getLocText("FR-Designer_IDCard")); - } else if (value instanceof PostCardReg) { + } else if (value instanceof PostCardReg){ this.setText(Inter.getLocText("FR-Designer_PostCode")); - } else if (value instanceof CustomReg) { + } else if (value instanceof CustomReg){ this.setText(Inter.getLocText("FR-Designer_Custom")); } return this; diff --git a/designer_base/src/com/fr/design/gui/frpane/UITabbedPaneUI.java b/designer_base/src/com/fr/design/gui/frpane/UITabbedPaneUI.java index c1b8433555..342fc6e46c 100644 --- a/designer_base/src/com/fr/design/gui/frpane/UITabbedPaneUI.java +++ b/designer_base/src/com/fr/design/gui/frpane/UITabbedPaneUI.java @@ -30,7 +30,7 @@ public class UITabbedPaneUI extends BasicTabbedPaneUI { private int addY = -1; private int rollover = -1; private Color tabBorderColor = new Color(143, 160, 183); - private Color[] tabSelectedColor = {new Color(255, 199, 59), new Color(187, 142, 33), new Color(214, 191, 137)}; + private Color[] tabSelectedColor = {UIConstants.NORMAL_BLUE, new Color(187, 142, 33), new Color(214, 191, 137)}; /** * 创建UI对象 diff --git a/designer_base/src/com/fr/design/gui/ibutton/UIRadioButton.java b/designer_base/src/com/fr/design/gui/ibutton/UIRadioButton.java index 40a0b8e8a2..8c93e76f4f 100644 --- a/designer_base/src/com/fr/design/gui/ibutton/UIRadioButton.java +++ b/designer_base/src/com/fr/design/gui/ibutton/UIRadioButton.java @@ -43,6 +43,4 @@ public class UIRadioButton extends JRadioButton { public UIRadioButton(String text, Icon icon, boolean selected) { super(text, icon, selected); } - - } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index d6f90cadbf..3e146ad18e 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -2116,3 +2116,5 @@ FR-Designer_Widget_Error_Tip=error tip FR-Designer_Widget_Return_Leaf=return leaf FR-Designer_Widget_Return_Path=return path FR-Designer_Widget_Display_Position=Display Position +FR-Designer_Widget_Name=Widget Name +FR-Designer_Coords_And_Size=Coords & Size diff --git a/designer_base/src/com/fr/design/locale/designer_en_US.properties b/designer_base/src/com/fr/design/locale/designer_en_US.properties index 0d44c30364..1009ae9c54 100644 --- a/designer_base/src/com/fr/design/locale/designer_en_US.properties +++ b/designer_base/src/com/fr/design/locale/designer_en_US.properties @@ -2111,4 +2111,6 @@ FR-Designer_Widget_No_Repeat=no repeat FR-Designer_Widget_Error_Tip=error tip FR-Designer_Widget_Return_Leaf=return leaf FR-Designer_Widget_Return_Path=return path -FR-Designer_Widget_Display_Position=Display Position \ No newline at end of file +FR-Designer_Widget_Display_Position=Display Position +FR-Designer_Widget_Name=Widget Name +FR-Designer_Coords_And_Size=Coords & Size \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index f456a229b3..2d51d39b03 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -2115,3 +2115,5 @@ FR-Designer_Widget_Error_Tip= FR-Designer_Widget_Return_Leaf= FR-Designer_Widget_Return_Path= FR-Designer_Widget_Display_Position= +FR-Designer_Widget_Name= +FR-Designer_Coords_And_Size= diff --git a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties index 444d548249..25c8d5561a 100644 --- a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties +++ b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties @@ -2115,3 +2115,5 @@ FR-Designer_Widget_Error_Tip= FR-Designer_Widget_Return_Leaf= FR-Designer_Widget_Return_Path= FR-Designer_Widget_Display_Position= +FR-Designer_Widget_Name= +FR-Designer_Coords_And_Size= diff --git a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties index 0ec66bd021..7e6e315fa2 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties @@ -2123,3 +2123,5 @@ FR-Designer_Widget_Error_Tip=\u9519\u8BEF\u63D0\u793A FR-Designer_Widget_Return_Leaf=\u7ED3\u679C\u8FD4\u56DE\u53F6\u5B50\u8282\u70B9 FR-Designer_Widget_Return_Path=\u7ED3\u679C\u8FD4\u56DE\u5B8C\u6574\u5C42\u6B21\u8DEF\u5F84 FR-Designer_Widget_Display_Position=\u663E\u793A\u4F4D\u7F6E +FR-Designer_Widget_Name=\u63A7\u4EF6\u540D\u79F0 +FR-Designer_Coords_And_Size=\u5750\u6807\u00B7\u5C3A\u5BF8 diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties index 23af4dafab..b659521c39 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties @@ -2114,4 +2114,6 @@ FR-Designer_Widget_No_Repeat= FR-Designer_Widget_Error_Tip= FR-Designer_Widget_Return_Leaf= FR-Designer_Widget_Return_Path= -FR-Designer_Widget_Display_Position= \ No newline at end of file +FR-Designer_Widget_Display_Position= +FR-Designer_Widget_Name= +FR-Designer_Coords_And_Size= \ No newline at end of file diff --git a/designer_base/src/com/fr/design/mainframe/widget/BasicPropertyPane.java b/designer_base/src/com/fr/design/mainframe/widget/BasicPropertyPane.java new file mode 100644 index 0000000000..1c5c9009ca --- /dev/null +++ b/designer_base/src/com/fr/design/mainframe/widget/BasicPropertyPane.java @@ -0,0 +1,50 @@ +package com.fr.design.mainframe.widget; + +import com.fr.design.dialog.BasicPane; +import com.fr.design.gui.ilable.UILabel; +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.general.Inter; + +import javax.swing.*; +import java.awt.*; + +/** + * Created by plough on 2017/8/7. + */ +public class BasicPropertyPane extends BasicPane { + protected UITextField widgetName; + + public BasicPropertyPane(){ + initContentPane(); + } + + protected void initContentPane() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + widgetName = new UITextField(); + + double f = TableLayout.FILL; + double p = TableLayout.PREFERRED; + double[] rowSize = {p}; + double[] columnSize = {p, f}; + int[][] rowCount = {{1, 1}}; + Component[][] components = new Component[][]{ + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Widget_Name")), widgetName}, + }; + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 20, 7); + panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 15)); + this.add(panel, BorderLayout.NORTH); + } + + public UITextField getWidgetNameField() { + return widgetName; + } + + + @Override + public String title4PopupWindow() { + return "basicProperty"; + } +} diff --git a/designer_base/src/com/fr/design/mainframe/widget/editors/DataBindingEditor.java b/designer_base/src/com/fr/design/mainframe/widget/editors/DataBindingEditor.java index 08f1b8b690..aae321a5f4 100644 --- a/designer_base/src/com/fr/design/mainframe/widget/editors/DataBindingEditor.java +++ b/designer_base/src/com/fr/design/mainframe/widget/editors/DataBindingEditor.java @@ -27,6 +27,8 @@ import com.fr.general.Inter; * @since 2012-3-29下午5:26:28 */ public class DataBindingEditor extends Editor { + private final static int HORI_GAP = 1; + private final static int VER_GAP = 7; private TableDataComboBox tableDataComboBox; private LazyComboBox columnNameComboBox; @@ -61,7 +63,7 @@ public class DataBindingEditor extends Editor { private void initCompontents() { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); + this.setLayout(new BorderLayout(HORI_GAP, VER_GAP)); tableDataComboBox = new TableDataComboBox(getTableDataSource()); tableDataComboBox.setPreferredSize(new Dimension(55, 20)); tableDataComboBox.addItemListener(tableDataComboBoxListener); @@ -86,7 +88,7 @@ public class DataBindingEditor extends Editor { } }); columnNameComboBox.setEditable(true); - this.add(tableDataComboBox, BorderLayout.WEST); + this.add(tableDataComboBox, BorderLayout.NORTH); this.add(columnNameComboBox, BorderLayout.CENTER); columnNameComboBox.addItemListener(columnNameComboboxListener); } diff --git a/designer_base/src/com/fr/design/widget/WidgetBoundsPaneFactory.java b/designer_base/src/com/fr/design/widget/WidgetBoundsPaneFactory.java new file mode 100644 index 0000000000..4c5cc59072 --- /dev/null +++ b/designer_base/src/com/fr/design/widget/WidgetBoundsPaneFactory.java @@ -0,0 +1,52 @@ +package com.fr.design.widget; + +import com.fr.design.foldablepane.UIExpandablePane; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.general.Inter; + +import javax.swing.*; +import java.awt.*; + +/** + * Created by plough on 2017/8/7. + */ +public class WidgetBoundsPaneFactory { + + public static UIExpandablePane createBoundsPane(UISpinner width, UISpinner height) { + double f = TableLayout.FILL; + double p = TableLayout.PREFERRED; + Component[][] components = new Component[][]{ + new Component[]{new UILabel(Inter.getLocText("FR-Designer-Widget_Size")), width, height}, + new Component[]{null, new UILabel(Inter.getLocText("FR-Designer-Tree_Width"), SwingConstants.CENTER), new UILabel(Inter.getLocText("FR-Designer-Tree_Height"), SwingConstants.CENTER)}, + }; + double[] rowSize = {p, p}; + double[] columnSize = {p, f, f}; + int[][] rowCount = {{1, 1, 1}, {1, 1, 1}}; + final JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 8, 5); + panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 15)); + + return new UIExpandablePane(Inter.getLocText("FR-Designer_Coords_And_Size"), 280, 24, panel); + } + + public static UIExpandablePane createAbsoluteBoundsPane(UISpinner x, UISpinner y, UISpinner width, UISpinner height) { + double f = TableLayout.FILL; + double p = TableLayout.PREFERRED; + + Component[][] components = new Component[][]{ + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Widget_Position")), x, y}, + new Component[]{null, new UILabel(Inter.getLocText("FR-Designer_X_Coordinate"), SwingConstants.CENTER), new UILabel(Inter.getLocText("FR-Designer_Y_Coordinate"), SwingConstants.CENTER)}, + new Component[]{new UILabel(Inter.getLocText("FR-Designer-Widget_Size")), width, height}, + new Component[]{null, new UILabel(Inter.getLocText("FR-Designer-Tree_Width"), SwingConstants.CENTER), new UILabel(Inter.getLocText("FR-Designer-Tree_Height"), SwingConstants.CENTER)}, + }; + double[] rowSize = {p, p, p, p}; + double[] columnSize = {p, f, f}; + int[][] rowCount = {{1, 1, 1}, {1, 1, 1}, {1, 1, 1}, {1, 1, 1}}; + final JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 8, 5); + panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 15)); + + return new UIExpandablePane(Inter.getLocText("FR-Designer_Coords_And_Size"), 230, 24, panel); + } +} 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 18ae3a5c43..faae19220d 100644 --- a/designer_base/src/com/fr/design/widget/btn/ButtonWithHotkeysDetailPane.java +++ b/designer_base/src/com/fr/design/widget/btn/ButtonWithHotkeysDetailPane.java @@ -1,7 +1,9 @@ package com.fr.design.widget.btn; -import com.fr.design.foldablepane.UIExpandablePane; -import com.fr.design.gui.frpane.AttributeChangeListener; +import java.awt.*; + +import javax.swing.*; + import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.FRGUIPaneFactory; @@ -12,11 +14,6 @@ import com.fr.form.ui.Button; import com.fr.general.Inter; import com.fr.stable.StableUtils; -import javax.swing.*; -import java.awt.*; -import java.awt.event.FocusEvent; -import java.awt.event.FocusListener; - /** * Created by IntelliJ IDEA. * Author : Richer @@ -28,62 +25,39 @@ public abstract class ButtonWithHotkeysDetailPane extends Butt private UITextField hotkeysTextField; private UITextField buttonNameTextField; private IconDefinePane iconPane; - private AttributeChangeListener listener; - public ButtonWithHotkeysDetailPane() { initComponents(); } private void initComponents() { -// creator. this.setLayout(FRGUIPaneFactory.createBorderLayout()); -// JPanel advancedPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Advanced")); - JPanel jPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); -// advancedPane.setPreferredSize(new Dimension(600, 341)); + JPanel advancedPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Advanced")); + advancedPane.setPreferredSize(new Dimension(600, 341)); JPanel attrPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); attrPane.setBorder(BorderFactory.createEmptyBorder(0, 4, 0, 4)); + this.add(advancedPane); double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - double rowSize[] = {p, p, p, p, p, p, p}; - double columnSize[] = {p, f}; - int[][] rowCount = {{1, 1}, {1, 1}, {1, 3}, {1, 1}, {1, 1}}; + double rowSize[] = {p, p, p, p}; + double columnSize[] = {p, p}; JPanel labelPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); iconPane = new IconDefinePane(); labelPane.add(iconPane); Component[][] n_components = { - {new UILabel(Inter.getLocText("FR-Designer_Button-Name") + ":"), buttonNameTextField = new UITextField()}, - {new UILabel("背景" + ":"), new UITextField()}, - {new UILabel("字体" + ":"), new UITextField()}, - {new UILabel("图标" + ":"), new UITextField()}, - {new UILabel(Inter.getLocText("FR-Designer_Button-Hotkeys") + ":"), hotkeysTextField = new UITextField()} + {new UILabel(Inter.getLocText("FR-Designer_Button-Name") + ":"), buttonNameTextField = new UITextField(16)}, + {new UILabel(Inter.getLocText("FR-Designer_Button-Icon") + ":"), labelPane}, + {new UILabel(Inter.getLocText("FR-Designer_Button-Type") + ":"), createButtonTypeComboBox()}, + {new UILabel(Inter.getLocText("FR-Designer_Button-Hotkeys") + ":"), hotkeysTextField = new UITextField(16)} }; - buttonNameTextField.addFocusListener(new FocusListener() { - @Override - public void focusGained(FocusEvent e) { - - } - - @Override - public void focusLost(FocusEvent e) { -// creator.getWidget().set - - } - }); hotkeysTextField.setToolTipText(StableUtils.join(ButtonConstants.HOTKEYS, ",")); - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(n_components, rowSize, columnSize, rowCount, 10, 8); - panel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); - jPanel.add(panel, BorderLayout.CENTER); - UIExpandablePane advancedPane = new UIExpandablePane("高级", 280, 20, jPanel); - this.add(advancedPane); - } - - //add By kerry - public void addAttributeChangeListener(AttributeChangeListener listener) { - this.listener = listener; + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(n_components, rowSize, columnSize, 0, 8); + advancedPane.add(panel,BorderLayout.NORTH); + Component comp = createCenterPane(); + if(comp != null ) { + advancedPane.add(comp,BorderLayout.CENTER); + } } - protected abstract Component createCenterPane(); @Override @@ -104,11 +78,4 @@ public abstract class ButtonWithHotkeysDetailPane extends Butt button.setHotkeys(hotkeysTextField.getText()); return button; } - - - public void updateBean(Button ob) { - ob.setIconName(iconPane.update()); - ob.setText(buttonNameTextField.getText()); - ob.setHotkeys(hotkeysTextField.getText()); - } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/creator/XWTitleLayout.java b/designer_form/src/com/fr/design/designer/creator/XWTitleLayout.java index 296a617f98..6860fc3453 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWTitleLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWTitleLayout.java @@ -29,6 +29,8 @@ public class XWTitleLayout extends DedicateLayoutContainer { */ private static final long serialVersionUID = 5274572473978467325L; + private static final int INDEX = 0; + public XWTitleLayout() { super(new WTitleLayout("titlePane"), new Dimension()); } @@ -59,6 +61,10 @@ public class XWTitleLayout extends DedicateLayoutContainer { return new FRTitleLayoutAdapter(this); } + public XCreator getEditingChildCreator(){ + return getXCreator(INDEX); + } + /** * 返回容器对应的wlayout * diff --git a/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java b/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java index 3428923845..7979e7ae34 100644 --- a/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java +++ b/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java @@ -11,6 +11,7 @@ import javax.swing.plaf.basic.*; import javax.swing.plaf.metal.*; import javax.swing.tree.*; +import com.fr.design.constants.UIConstants; import com.fr.design.designer.beans.*; import com.fr.design.designer.beans.events.DesignerEditListener; import com.fr.design.designer.beans.events.DesignerEvent; @@ -221,7 +222,7 @@ class TreePopup extends JPopupMenu implements ComboPopup{ JTree tree = this.comboBox.getTree(); if(tree != null){ scrollPane = new UIScrollPane(tree); - scrollPane.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 0)); + scrollPane.setBorder(null); add(scrollPane, BorderLayout.CENTER); } } @@ -230,6 +231,8 @@ class TreePopup extends JPopupMenu implements ComboPopup{ updatePopup(); show(comboBox, 0, comboBox.getHeight()); comboBox.getTree().requestFocus(); + comboBox.getTree().setBackground(UIConstants.TREE_BACKGROUND); + comboBox.getTree().setOpaque(true); } public void hide(){ diff --git a/designer_form/src/com/fr/design/mainframe/widget/ui/FormBasicPropertyPane.java b/designer_form/src/com/fr/design/mainframe/widget/ui/FormBasicPropertyPane.java index 22cbd0eb9f..42d3984162 100644 --- a/designer_form/src/com/fr/design/mainframe/widget/ui/FormBasicPropertyPane.java +++ b/designer_form/src/com/fr/design/mainframe/widget/ui/FormBasicPropertyPane.java @@ -1,49 +1,12 @@ package com.fr.design.mainframe.widget.ui; -import com.fr.design.dialog.BasicPane; -import com.fr.design.gui.ilable.UILabel; -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.design.mainframe.widget.BasicPropertyPane; import com.fr.form.ui.Widget; -import com.fr.general.Inter; - -import javax.swing.*; -import java.awt.*; /** * Created by ibm on 2017/8/4. */ -public class FormBasicPropertyPane extends BasicPane { - private UITextField widgetName; - - public FormBasicPropertyPane(){ - initContentPane(); - } - - protected void initContentPane() { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - widgetName = new UITextField(); - - double f = TableLayout.FILL; - double p = TableLayout.PREFERRED; - double[] rowSize = {p}; - double[] columnSize = {p, f}; - int[][] rowCount = {{1, 1}}; - Component[][] components = new Component[][]{ - new Component[]{new UILabel(Inter.getLocText("Form-Widget_Name") + ":"), widgetName}, - }; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 20, 7); - panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); - this.add(panel, BorderLayout.NORTH); - } - - - @Override - public String title4PopupWindow() { - return "basicProperty"; - } +public class FormBasicPropertyPane extends BasicPropertyPane { public void populate(Widget widget) { widgetName.setText(widget.getWidgetName()); 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 35c74553d0..49c5c68a03 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 @@ -14,6 +14,7 @@ import com.fr.design.widget.ui.designer.component.WidgetAbsoluteBoundPane; import com.fr.design.widget.ui.designer.component.WidgetBoundPane; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WScaleLayout; +import com.fr.form.ui.container.WTitleLayout; import com.fr.form.ui.widget.CRBoundsWidget; import javax.swing.*; @@ -129,13 +130,14 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane { private void initDefinePane() { currentEditorDefinePane = null; XCreator creator = xCreator; - if (xCreator instanceof XWScaleLayout) { - if (xCreator.acceptType(XWScaleLayout.class)) { - if (xCreator.getComponentCount() > 0 && ((XCreator) xCreator.getComponent(0)).shouldScaleCreator()) { - creator = (XCreator) xCreator.getComponent(0); - } + 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); + } FormWidgetDefinePaneFactoryBase.RN rn = FormWidgetDefinePaneFactoryBase.createWidgetDefinePane(creator, creator.toData(), new Operator() { @Override public void did(DataCreatorUI ui, String cardName) { @@ -166,7 +168,10 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane { if (cellWidget instanceof WScaleLayout) { Widget crBoundsWidget = ((WScaleLayout) cellWidget).getBoundsWidget(); currentEditorDefinePane.populateBean(((CRBoundsWidget) crBoundsWidget).getWidget()); - } else { + } else if(cellWidget instanceof WTitleLayout){ + CRBoundsWidget crBoundsWidget = ((WTitleLayout) cellWidget).getBodyBoundsWidget(); + currentEditorDefinePane.populateBean(crBoundsWidget.getWidget()); + }else{ currentEditorDefinePane.populateBean(cellWidget); } widgetPropertyPane.populate(cellWidget); @@ -188,6 +193,11 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane { xCreator1.resetData(widget); xCreator.removeAll(); xCreator.add(xCreator1); + }else if(xCreator instanceof XWTitleLayout){ + XCreator xCreator1 = ((XWTitleLayout) xCreator).getXCreator(0); + xCreator1.resetData(widget); + xCreator.removeAll(); + xCreator.add(xCreator1); } else { xCreator.resetData(widget); } diff --git a/designer_form/src/com/fr/design/parameter/RootDesignDefinePane.java b/designer_form/src/com/fr/design/parameter/RootDesignDefinePane.java index 18d24dcedd..9c614f99bc 100644 --- a/designer_form/src/com/fr/design/parameter/RootDesignDefinePane.java +++ b/designer_form/src/com/fr/design/parameter/RootDesignDefinePane.java @@ -1,27 +1,22 @@ package com.fr.design.parameter; +import com.fr.base.BaseUtils; import com.fr.design.data.DataCreatorUI; import com.fr.design.designer.creator.XCreator; -import com.fr.design.designer.creator.XWAbsoluteBodyLayout; import com.fr.design.designer.creator.XWParameterLayout; -import com.fr.design.designer.properties.items.FRLayoutTypeItems; -import com.fr.design.designer.properties.items.Item; -import com.fr.design.designer.properties.items.ItemProvider; import com.fr.design.foldablepane.UIExpandablePane; +import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.icheckbox.UICheckBox; -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.gui.itextfield.UITextField; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; -import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.design.mainframe.widget.accessibles.AccessibleBackgroundEditor; import com.fr.design.widget.ui.designer.AbstractDataModify; -import com.fr.form.ui.container.WAbsoluteBodyLayout; -import com.fr.form.ui.container.WBodyLayoutType; import com.fr.form.ui.container.WParameterLayout; import com.fr.general.Inter; +import com.fr.stable.Constants; import javax.swing.*; import java.awt.*; @@ -33,8 +28,8 @@ public class RootDesignDefinePane extends AbstractDataModify { private XWParameterLayout root; private UISpinner designerWidth; private UICheckBox displayReport; - private UITextField background; - private UITextField displayPosition; + private AccessibleBackgroundEditor background; + private UIButtonGroup hAlignmentPane; public RootDesignDefinePane(XCreator xCreator) { super(xCreator); @@ -50,13 +45,12 @@ 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(); -// layoutPane.setLayout(FRGUIPaneFactory.createBorderLayout()); -// layoutPane.add(GUICoreUtils.createFlowPane(new JComponent[]{new UILabel("设计宽度"), designerWidth}, FlowLayout.LEFT, 4)); UIExpandablePane layoutExpandablePane = new UIExpandablePane(Inter.getLocText("Size"), 280, 20, layoutPane); this.add(layoutExpandablePane, BorderLayout.CENTER); + } - public JPanel createBoundsPane(){ + public JPanel createBoundsPane() { double f = TableLayout.FILL; double p = TableLayout.PREFERRED; double[] rowSize = {p}; @@ -66,26 +60,32 @@ public class RootDesignDefinePane extends AbstractDataModify { new Component[]{new UILabel(Inter.getLocText("Form-Desin_Width")), designerWidth}, }; JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 20, 7); - panel.setBorder(BorderFactory.createEmptyBorder(5, 5,5,5)); + panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); return panel; } - public JPanel createAdvancePane(){ + public JPanel createAdvancePane() { displayReport = new UICheckBox(Inter.getLocText("FR-Designer_DisplayNothingBeforeQuery")); - background = new UITextField(); - displayPosition = new UITextField(); + background = new AccessibleBackgroundEditor(); + Icon[] hAlignmentIconArray = {BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/h_left_normal.png"), + BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/h_center_normal.png"), + BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/h_right_normal.png"),}; + Integer[] hAlignment = new Integer[]{Constants.LEFT, Constants.CENTER, Constants.RIGHT}; + hAlignmentPane = new UIButtonGroup(hAlignmentIconArray, hAlignment); + hAlignmentPane.setAllToolTips(new String[]{Inter.getLocText("FR-Designer-StyleAlignment_Left") + , Inter.getLocText("FR-Designer-StyleAlignment_Center"), Inter.getLocText("FR-Designer-StyleAlignment_Right")}); double f = TableLayout.FILL; double p = TableLayout.PREFERRED; - double[] rowSize = {p,p, p}; + double[] rowSize = {p, p, p}; double[] columnSize = {p, f}; int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}}; Component[][] components = new Component[][]{ new Component[]{new UILabel(Inter.getLocText("FR-Designer_Background")), background}, - new Component[]{displayReport, null }, - new Component[]{new UILabel(Inter.getLocText("FR-Designer_WidgetDisplyPosition")), displayPosition} + new Component[]{displayReport, null}, + new Component[]{new UILabel(Inter.getLocText("FR-Designer_WidgetDisplyPosition")), hAlignmentPane} }; JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 20, 7); - panel.setBorder(BorderFactory.createEmptyBorder(5, 5,5,5)); + panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); return panel; } @@ -96,8 +96,10 @@ public class RootDesignDefinePane extends AbstractDataModify { @Override public void populateBean(WParameterLayout ob) { + background.setValue(ob.getBackground()); displayReport.setSelected(ob.isDelayDisplayContent()); designerWidth.setValue(ob.getDesignWidth()); + hAlignmentPane.setSelectedIndex(ob.getPosition()); } @@ -106,6 +108,8 @@ public class RootDesignDefinePane extends AbstractDataModify { WParameterLayout wParameterLayout = (WParameterLayout) creator.toData(); wParameterLayout.setDesignWidth((int) designerWidth.getValue()); wParameterLayout.setDelayDisplayContent(displayReport.isSelected()); + wParameterLayout.setBackground(wParameterLayout.getBackground()); + wParameterLayout.setPosition(hAlignmentPane.getSelectedIndex()); return wParameterLayout; } diff --git a/designer_form/src/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java b/designer_form/src/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java index 36f4719def..4da3a9be2a 100644 --- a/designer_form/src/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java +++ b/designer_form/src/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java @@ -44,25 +44,25 @@ public class FormWidgetDefinePaneFactoryBase { defineMap.put(TextEditor.class, new Appearance(TextFieldEditorDefinePane.class, WidgetConstants.TEXT + "")); defineMap.put(NameWidget.class, new Appearance(UserEditorDefinePane.class, "UserDefine")); defineMap.put(ComboCheckBox.class, new Appearance(ComboCheckBoxDefinePane.class, WidgetConstants.COMBOCHECKBOX + "")); - defineMap.put(ListEditor.class, new Appearance(ListEditorDefinePane.class, WidgetConstants.LIST + "")); defineMap.put(ComboBox.class, new Appearance(ComboBoxDefinePane.class, WidgetConstants.COMBOBOX + "")); defineMap.put(RadioGroup.class, new Appearance(RadioGroupDefinePane.class, WidgetConstants.RADIOGROUP + "")); defineMap.put(CheckBoxGroup.class, new Appearance(CheckBoxGroupDefinePane.class, WidgetConstants.CHECKBOXGROUP + "")); defineMap.put(NoneWidget.class, new Appearance(NoneWidgetDefinePane.class, WidgetConstants.NONE + "")); - defineMap.put(Button.class, new Appearance(ButtonDefinePane.class, WidgetConstants.BUTTON + "")); - defineMap.put(FreeButton.class, new Appearance(ButtonDefinePane.class, WidgetConstants.BUTTON + "")); + defineMap.put(Button.class, new Appearance(FreeButtonDefinePane.class, WidgetConstants.BUTTON + "")); + defineMap.put(FreeButton.class, new Appearance(FreeButtonDefinePane.class, WidgetConstants.BUTTON + "")); defineMap.put(WFitLayout.class, new Appearance(FRFitLayoutDefinePane.class, Inter.getLocText("FR-Designer-Layout_Adaptive_Layout"))); defineMap.put(WCardMainBorderLayout.class, new Appearance(WCardMainLayoutDefinePane.class, Inter.getLocText("WLayout-Card-ToolTips"))); - if (StableFactory.getMarkedClass(BridgeMark.SUBMIT_BUTTON, Widget.class) != null) { - defineMap.put(StableFactory.getMarkedClass(BridgeMark.SUBMIT_BUTTON, Widget.class), new Appearance(ButtonDefinePane.class, WidgetConstants.BUTTON + "")); - } +// if (StableFactory.getMarkedClass(BridgeMark.SUBMIT_BUTTON, Widget.class) != null) { +// defineMap.put(StableFactory.getMarkedClass(BridgeMark.SUBMIT_BUTTON, Widget.class), new Appearance(ButtonDefinePane.class, WidgetConstants.BUTTON + "")); +// } defineMap.put(WAbsoluteLayout.class, new Appearance(FRAbsoluteLayoutDefinePane.class, Inter.getLocText("FR-Designer_AbsoluteLayout"))); + defineMap.put(ElementCaseEditor.class, new Appearance(ElementEditorDefinePane.class, Inter.getLocText("FR-Designer_AbsoluteLayout"))); defineMap.put(WAbsoluteBodyLayout.class, new Appearance(FRAbsoluteBodyLayoutDefinePane.class, Inter.getLocText("FR-Designer-Layout_Adaptive_Layout"))); defineMap.put(WParameterLayout.class, new Appearance(RootDesignDefinePane.class, Inter.getLocText("FR-Designer_Para-Body"))); defineMap.put(WCardMainBorderLayout.class, new Appearance(WCardMainLayoutDefinePane.class, "tab")); - defineMap.put(WTitleLayout.class, new Appearance(WTitleLayoutDefinePane.class, "tab")); + defineMap.put(WCardLayout.class, new Appearance(WCardLayoutDefinePane.class, "tablayout")); defineMap.put(Label.class, new Appearance(LabelDefinePane.class, "label")); defineMap.put(WTabFitLayout.class, new Appearance(WTabFitLayoutDefinePane.class, "label")); defineMap.putAll(ExtraDesignClassManager.getInstance().getCellWidgetOptionsMap()); 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 84df22ac98..92f41a6273 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 @@ -1,19 +1,26 @@ package com.fr.design.widget.ui.designer; import com.fr.design.designer.creator.XCreator; +import com.fr.design.foldablepane.UIExpandablePane; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.widget.btn.ButtonDetailPane; -import com.fr.design.widget.ui.designer.btn.ButtonDetailPaneFactory; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.mainframe.widget.accessibles.AccessibleIconEditor; +import com.fr.design.widget.btn.ButtonConstants; import com.fr.form.ui.Button; -import com.fr.form.ui.FreeButton; +import com.fr.general.Inter; +import com.fr.stable.StableUtils; import javax.swing.*; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; import java.awt.*; -public class ButtonDefinePane extends AbstractDataModify