diff --git a/designer/src/com/fr/design/mainframe/CellWidgetPropertyPane.java b/designer/src/com/fr/design/mainframe/CellWidgetPropertyPane.java index 4cf88436c2..eeb6657c42 100644 --- a/designer/src/com/fr/design/mainframe/CellWidgetPropertyPane.java +++ b/designer/src/com/fr/design/mainframe/CellWidgetPropertyPane.java @@ -87,8 +87,8 @@ public class CellWidgetPropertyPane extends BasicPane { public void populate(ElementCasePane ePane) { - cellEditorDefPane = new WidgetPane(ePane); + this.removeAll(); this.add(cellEditorDefPane, BorderLayout.CENTER); CellSelection cs = (CellSelection) ePane.getSelection(); diff --git a/designer/src/com/fr/design/mainframe/JWorkBook.java b/designer/src/com/fr/design/mainframe/JWorkBook.java index a9ecc8e504..16fa43c77a 100644 --- a/designer/src/com/fr/design/mainframe/JWorkBook.java +++ b/designer/src/com/fr/design/mainframe/JWorkBook.java @@ -64,6 +64,7 @@ import com.fr.privilege.finegrain.WorkSheetPrivilegeControl; import com.fr.report.ReportHelper; import com.fr.report.elementcase.ElementCase; import com.fr.report.elementcase.TemplateElementCase; +import com.fr.report.poly.PolyWorkSheet; import com.fr.report.worksheet.WorkSheet; import com.fr.stable.ArrayUtils; import com.fr.stable.StableUtils; @@ -109,9 +110,17 @@ public class JWorkBook extends JTemplate { @Override public void refreshEastPropertiesPane() { - EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.REPORT); - EastRegionContainerPane.getInstance().replaceCellElementPane(getEastUpPane()); - EastRegionContainerPane.getInstance().replaceCellAttrPane(getEastDownPane()); + if (isEditingPolySheet()) { + EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.POLY); + } else { + EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.REPORT); + EastRegionContainerPane.getInstance().replaceCellElementPane(getEastUpPane()); + EastRegionContainerPane.getInstance().replaceCellAttrPane(getEastDownPane()); + } + } + + private boolean isEditingPolySheet() { + return template.getReport(getEditingReportIndex()) instanceof PolyWorkSheet; } @Override diff --git a/designer/src/com/fr/design/mainframe/SheetNameTabPane.java b/designer/src/com/fr/design/mainframe/SheetNameTabPane.java index 6a1997053e..173bd9cd4f 100644 --- a/designer/src/com/fr/design/mainframe/SheetNameTabPane.java +++ b/designer/src/com/fr/design/mainframe/SheetNameTabPane.java @@ -23,6 +23,7 @@ import com.fr.base.BaseUtils; import com.fr.base.GraphHelper; import com.fr.design.actions.UpdateAction; import com.fr.design.constants.UIConstants; +import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.menu.MenuDef; import com.fr.design.menu.SeparatorDef; @@ -553,6 +554,9 @@ public class SheetNameTabPane extends JComponent implements MouseListener, Mouse for (int i = scrollIndex; i <= lastOneIndex; i++) { int textWidth = widthArray[i]; if (evtX >= textX && evtX < textX + textWidth) { + if (getSelectedIndex() != i) { + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().refreshEastPropertiesPane(); + } setSelectedIndex(i); isBlank = false; reportComposite.setComposite(); diff --git a/designer/src/com/fr/design/widget/CellWidgetCardPane.java b/designer/src/com/fr/design/widget/CellWidgetCardPane.java index ec47be2045..778e76790b 100644 --- a/designer/src/com/fr/design/widget/CellWidgetCardPane.java +++ b/designer/src/com/fr/design/widget/CellWidgetCardPane.java @@ -52,16 +52,10 @@ public class CellWidgetCardPane extends BasicPane { public CellWidgetCardPane(ElementCasePane pane) { this.pane = pane; -// this.initComponents(pane); } - public BasicWidgetPropertySettingPane initBasicWidgetPropertyPane(){ - return new BasicWidgetPropertySettingPane(); - } - - private void initComponents(ElementCasePane pane) { - + this.removeAll(); this.setLayout(FRGUIPaneFactory.createBorderLayout()); //k tabbedPane = new CardLayout(); diff --git a/designer/src/com/fr/poly/PolyDesigner.java b/designer/src/com/fr/poly/PolyDesigner.java index 35f196f0fb..aa416fc86f 100644 --- a/designer/src/com/fr/poly/PolyDesigner.java +++ b/designer/src/com/fr/poly/PolyDesigner.java @@ -72,8 +72,8 @@ public class PolyDesigner extends ReportComponent { + + void populateBean(T ob); + + T updateBean(); + + void checkValid() throws Exception; + + DataCreatorUI dataUI(); + + JComponent toSwingComponent(); +} \ No newline at end of file diff --git a/designer_base/src/com/fr/design/widget/Operator.java b/designer_base/src/com/fr/design/widget/Operator.java new file mode 100644 index 0000000000..f8aad788e8 --- /dev/null +++ b/designer_base/src/com/fr/design/widget/Operator.java @@ -0,0 +1,11 @@ +package com.fr.design.widget; + +import com.fr.design.data.DataCreatorUI; + +/** + * Created by richie on 15/11/16. + */ +public interface Operator { + + void did(DataCreatorUI ui, String cardName); +} \ 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 9efdb92622..18ae3a5c43 100644 --- a/designer_base/src/com/fr/design/widget/btn/ButtonWithHotkeysDetailPane.java +++ b/designer_base/src/com/fr/design/widget/btn/ButtonWithHotkeysDetailPane.java @@ -1,9 +1,7 @@ package com.fr.design.widget.btn; -import java.awt.*; - -import javax.swing.*; - +import com.fr.design.foldablepane.UIExpandablePane; +import com.fr.design.gui.frpane.AttributeChangeListener; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.FRGUIPaneFactory; @@ -14,6 +12,11 @@ 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 @@ -25,43 +28,66 @@ public abstract class ButtonWithHotkeysDetailPane extends Butt private UITextField hotkeysTextField; private UITextField buttonNameTextField; private IconDefinePane iconPane; + private AttributeChangeListener listener; + public ButtonWithHotkeysDetailPane() { initComponents(); } - private void initComponents() { + private void initComponents() { +// creator. this.setLayout(FRGUIPaneFactory.createBorderLayout()); - JPanel advancedPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Advanced")); - advancedPane.setPreferredSize(new Dimension(600, 341)); +// JPanel advancedPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Advanced")); + JPanel jPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); +// 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 rowSize[] = {p, p, p, p}; - double columnSize[] = {p, p}; - JPanel labelPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); - iconPane = new IconDefinePane(); + 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}}; + 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(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)} + 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()} }; - hotkeysTextField.setToolTipText(StableUtils.join(ButtonConstants.HOTKEYS, ",")); - 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); - } - } + 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; + } + protected abstract Component createCenterPane(); - @Override - public void populate(Button button) { + @Override + public void populate(Button button) { if (button == null) { return; } @@ -71,11 +97,18 @@ public abstract class ButtonWithHotkeysDetailPane extends Butt } @Override - public T update() { + public T update() { T button = createButton(); button.setIconName(iconPane.update()); button.setText(buttonNameTextField.getText()); 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/XBorderStyleWidgetCreator.java b/designer_form/src/com/fr/design/designer/creator/XBorderStyleWidgetCreator.java index 5fb559fc4d..e2b01a6460 100644 --- a/designer_form/src/com/fr/design/designer/creator/XBorderStyleWidgetCreator.java +++ b/designer_form/src/com/fr/design/designer/creator/XBorderStyleWidgetCreator.java @@ -144,5 +144,9 @@ public class XBorderStyleWidgetCreator extends XWidgetCreator{ } return new Insets(padding.getTop(), padding.getLeft(), padding.getBottom(), padding.getRight()); } + + public boolean supportSetVisibleOrEnable(){ + return false; + } } \ No newline at end of file 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 4788bc8f3c..1e7058f529 100644 --- a/designer_form/src/com/fr/design/designer/creator/XCreator.java +++ b/designer_form/src/com/fr/design/designer/creator/XCreator.java @@ -626,4 +626,20 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo return; } + /** + * 是否支持设置可见和可用 + * return boolean + */ + public boolean supportSetVisibleOrEnable(){ + return true; + } + + /** + * 重新设置data + * + */ + public void resetData(Widget data){ + this.data = data; + } + } \ No newline at end of file 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 a2e5d07aed..a8ae49ddce 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWScaleLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWScaleLayout.java @@ -156,5 +156,9 @@ public class XWScaleLayout extends DedicateLayoutContainer { XCreator child = getXCreator(INDEX); child.setSize(getWidth(), minHeight); } - + + + public boolean supportSetVisibleOrEnable(){ + return true; + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/form/parameter/FormParaDesigner.java b/designer_form/src/com/fr/design/form/parameter/FormParaDesigner.java index 73ca39f2e7..280a12067d 100644 --- a/designer_form/src/com/fr/design/form/parameter/FormParaDesigner.java +++ b/designer_form/src/com/fr/design/form/parameter/FormParaDesigner.java @@ -113,8 +113,10 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP EastRegionContainerPane.getInstance().replaceWidgetLibPane( FormWidgetDetailPane.getInstance(this)); if (!BaseUtils.isAuthorityEditing()) { - EastRegionContainerPane.getInstance().addParameterPane(ParameterPropertyPane.getInstance(this)); - EastRegionContainerPane.getInstance().setParameterHeight(ParameterPropertyPane.getInstance(this).getPreferredSize().height); + ParameterPropertyPane parameterPropertyPane = ParameterPropertyPane.getInstance(this); + parameterPropertyPane.setAddParaPaneVisible(true); + EastRegionContainerPane.getInstance().addParameterPane(parameterPropertyPane); + EastRegionContainerPane.getInstance().setParameterHeight(parameterPropertyPane.getPreferredSize().height); EastRegionContainerPane.getInstance().replaceWidgetSettingsPane( WidgetPropertyPane.getInstance(this)); } else { diff --git a/designer_form/src/com/fr/design/mainframe/FormHierarchyTreePane.java b/designer_form/src/com/fr/design/mainframe/FormHierarchyTreePane.java index 5bfbfa6304..d1ec34f393 100644 --- a/designer_form/src/com/fr/design/mainframe/FormHierarchyTreePane.java +++ b/designer_form/src/com/fr/design/mainframe/FormHierarchyTreePane.java @@ -1,12 +1,24 @@ package com.fr.design.mainframe; import java.awt.*; +import java.awt.event.ActionEvent; +import java.util.ArrayList; -import javax.swing.BorderFactory; -import javax.swing.Icon; +import javax.swing.*; + +import com.fr.design.actions.UndoableAction; +import com.fr.design.actions.UpdateAction; +import com.fr.design.designer.beans.actions.ChangeNameAction; +import com.fr.design.designer.beans.actions.FormUndoableAction; import com.fr.design.designer.creator.XWAbsoluteBodyLayout; +import com.fr.design.gui.controlpane.ShortCut4JControlPane; +import com.fr.design.gui.controlpane.UIListControlPane; +import com.fr.design.gui.itoolbar.UIToolBarUI; +import com.fr.design.gui.itoolbar.UIToolbar; import com.fr.design.mainframe.widget.UITreeComboBox; +import com.fr.design.menu.ShortCut; +import com.fr.design.menu.ToolBarDef; import com.fr.design.parameter.HierarchyTreePane; import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XWParameterLayout; @@ -14,11 +26,6 @@ import com.fr.design.designer.treeview.ComponentTreeModel; import com.fr.design.gui.ilable.UILabel; -import javax.swing.JPanel; -import javax.swing.JScrollPane; - - -import javax.swing.SwingConstants; import com.fr.base.BaseUtils; import com.fr.general.Inter; @@ -34,11 +41,10 @@ public class FormHierarchyTreePane extends FormDockView implements HierarchyTree public static final int PARA = 0; public static final int BODY = 1; + private ShortCut4JControlPane[] shorts; private ComponentTree componentTree; private UITreeComboBox treeComboBox; - // richer:搜寻树节点的的文本框 -// private UITextField searchTextField; -// private SearchResultPane searchResult; + private ChangeNameAction changeVarNameAction; public static FormHierarchyTreePane getInstance() { return HOLDER.singleton; @@ -77,9 +83,6 @@ public class FormHierarchyTreePane extends FormDockView implements HierarchyTree */ public void clearDockingView() { this.componentTree = null; -// this.searchTextField = null; -// this.searchResult = null; -// add(new JScrollPane(), BorderLayout.CENTER); } @Override @@ -108,51 +111,60 @@ public class FormHierarchyTreePane extends FormDockView implements HierarchyTree if(childCount == NODE_LENGTH){ adjustPosition(treeModel, formDesigner); } + + add(getWidgetPane(), BorderLayout.CENTER); + } + + private JPanel getWidgetPane() { + shorts = createShortcuts(); + JPanel widgetPane = new JPanel(); widgetPane.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0)); widgetPane.setLayout(FRGUIPaneFactory.createBorderLayout()); - add(widgetPane, BorderLayout.NORTH); - widgetPane.add(new UILabel(Inter.getLocText("FR-Designer-Selected_Widget") + " ", + + JPanel headPane = new JPanel(new BorderLayout()); + headPane.add(new UILabel(Inter.getLocText("FR-Designer-Selected_Widget") + " ", SwingConstants.HORIZONTAL), BorderLayout.WEST); + headPane.add(getToolBarPane(), BorderLayout.EAST); + + widgetPane.add(headPane, BorderLayout.CENTER); treeComboBox = new UITreeComboBox(componentTree); - widgetPane.add(treeComboBox, BorderLayout.CENTER); - add(widgetPane, BorderLayout.CENTER); - - -// UIScrollPane scrollPane = new UIScrollPane(componentTree); -// scrollPane.setBorder(null); -// add(scrollPane, BorderLayout.CENTER); -// JPanel searchPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); -// add(searchPane, BorderLayout.NORTH); -// searchPane.add(new UILabel(Inter.getLocText("FR-Designer_Search") + ":", -// SwingConstants.HORIZONTAL), BorderLayout.WEST); -// searchTextField = new UITextField(); -// searchPane.add(searchTextField, BorderLayout.CENTER); -// searchTextField.getDocument().addDocumentListener(new DocumentListener() { -// @Override -// public void insertUpdate(DocumentEvent e) { -// search(); -// } -// -// @Override -// public void removeUpdate(DocumentEvent e) { -// search(); -// } -// -// @Override -// public void changedUpdate(DocumentEvent e) { -// search(); -// } -// -// private void search() { -// String text = searchTextField.getText(); -// if (StringUtils.isEmpty(text)) { -// removeSearchResult(); -// } else { -// populate(componentTree.search(text)); -// } -// } -// }); + widgetPane.add(treeComboBox, BorderLayout.SOUTH); + return widgetPane; + } + + private JPanel getToolBarPane() { + ToolBarDef toolbarDef = new ToolBarDef(); + for (ShortCut4JControlPane sj : shorts) { + toolbarDef.addShortCut(sj.getShortCut()); + } + UIToolbar toolBar = ToolBarDef.createJToolBar(); + toolBar.setUI(new UIToolBarUI(){ + @Override + public void paint(Graphics g, JComponent c) { + Graphics2D g2 = (Graphics2D) g; + g2.setColor(new Color(245, 245, 247)); + g2.fillRect(0, 0, c.getWidth(), c.getHeight()); + } + }); + toolbarDef.updateToolBar(toolBar); + JPanel toolBarPane = new JPanel(new BorderLayout()); + toolBarPane.add(toolBar, BorderLayout.CENTER); + return toolBarPane; + } + + protected ShortCut4JControlPane[] createShortcuts() { + ArrayList shortCutList = new ArrayList<>(); + FormDesigner designer = getEditingFormDesigner(); + if (changeVarNameAction == null) { + changeVarNameAction = new ChangeNameAction(designer); + } + shortCutList.add(new WidgetEnableShortCut(changeVarNameAction)); + for (Action action : designer.getActions()) { + shortCutList.add(new WidgetEnableShortCut((UndoableAction)action)); + } + + return shortCutList.toArray(new ShortCut4JControlPane[shortCutList.size()]); } /** @@ -188,113 +200,6 @@ public class FormHierarchyTreePane extends FormDockView implements HierarchyTree componentTree.refreshTreeRoot(); } - /** - * 删除搜索结果 - */ -// public void removeSearchResult() { -// componentTree.setSelectionPath(null); -// if (searchResult != null) { -// this.remove(searchResult); -// } -// } -// -// public void populate(TreePath[] treepath) { -// if (this.searchResult == null) { -// searchResult = new SearchResultPane(); -// } -// if (((BorderLayout) getLayout()).getLayoutComponent(BorderLayout.SOUTH) == null) { -// add(searchResult, BorderLayout.SOUTH); -// } -// searchResult.populate(treepath); -// } - -// private class SearchResultPane extends JPanel { -// private UILabel resultLabel = new UILabel(); -// private BackAction backAction = new BackAction(); -// private ForWardAction forwardAction = new ForWardAction(); -// private TreePath[] tree; -// private int number = 0; -// -// SearchResultPane() { -// this.setLayout(FRGUIPaneFactory.createBorderLayout()); -// JPanel actionJPanel = FRGUIPaneFactory.createCenterFlowInnerContainer_S_Pane(); -// addButtonToJPanel(actionJPanel, backAction.createToolBarComponent()); -// addButtonToJPanel(actionJPanel, forwardAction.createToolBarComponent()); -// -// this.add(actionJPanel, BorderLayout.EAST); -// this.add(resultLabel, BorderLayout.WEST); -// } -// -// private void addButtonToJPanel(JPanel actionLabel, -// JComponent toolBarComponent) { -// actionLabel.add(toolBarComponent); -// if (toolBarComponent instanceof UIButton) { -// toolBarComponent.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); -// } -// } -// -// public void populate(TreePath[] search) { -// tree = search; -// resultLabel.setText(Inter.getLocText("FR-Designer_Total") + ":" + tree.length); -// number = 0; -// check(); -// } -// -// public void next() { -// if (number < tree.length - 1) { -// componentTree.setAndScrollSelectionPath(tree[++number]); -// } -// check(); -// } -// -// public void last() { -// if (number > 0) { -// componentTree.setAndScrollSelectionPath(tree[--number]); -// } -// check(); -// } -// -// public void check() { -// if (tree.length < 1) { -// backAction.setEnabled(false); -// forwardAction.setEnabled(false); -// } else { -// backAction.setEnabled(number > 0); -// forwardAction.setEnabled(number < tree.length - 1); -// } -// -// } - - //} - -// private class BackAction extends UpdateAction { -// -// public BackAction() { -// this.setName(Inter.getLocText("Form-Hierarchy_Tree_Last")); -// this.setSmallIcon(BaseUtils -// .readIcon("com/fr/design/images/m_help/back.png")); -// this.setEnabled(false); -// } -// -// public void actionPerformed(ActionEvent e) { -// searchResult.last(); -// } -// } -// -// private class ForWardAction extends UpdateAction { -// -// public ForWardAction() { -// this.setName(Inter.getLocText("Form-Hierarchy_Tree_Next")); -// this.setSmallIcon(BaseUtils -// .readIcon("com/fr/design/images/m_help/forward.png")); -// this.setEnabled(false); -// } -// -// public void actionPerformed(ActionEvent e) { -// searchResult.next(); -// } -// } - @Override /** * 位置 @@ -304,4 +209,18 @@ public class FormHierarchyTreePane extends FormDockView implements HierarchyTree public Location preferredLocation() { return Location.WEST_BELOW; } + + private class WidgetEnableShortCut extends ShortCut4JControlPane { + public WidgetEnableShortCut(ShortCut shortCut) { + this.shortCut = shortCut; + } + + /** + * 检查是否可用 + */ + @Override + public void checkEnable() { + this.shortCut.setEnabled(false); + } + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java index c33e1b113b..43c3cf4e05 100644 --- a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java +++ b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java @@ -4,11 +4,13 @@ import com.fr.base.BaseUtils; import com.fr.base.FRContext; import com.fr.design.gui.frpane.UITabbedPane; import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.ibutton.UIHeadGroup; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.imenu.UIMenuItem; import com.fr.design.gui.imenu.UIPopupMenu; +import com.fr.design.icon.IconPathConstants; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.form.share.ShareLoader; @@ -40,7 +42,7 @@ import java.net.URISyntaxException; */ public class FormWidgetDetailPane extends FormDockView{ - private UITabbedPane tabbedPane; + private JPanel tabbedPane; private UIScrollPane downPane; private JPanel reuWidgetPanel; private UIComboBox comboBox; @@ -50,11 +52,16 @@ public class FormWidgetDetailPane extends FormDockView{ private JPanel editPanel; private JPanel resetPanel; private JPanel menutPanel; + private JPanel menutPanelNorthPane; private static final int OFFSET_X = 140; private static final int OFFSET_Y = 26; private SwingWorker sw; //组件面板是否可以编辑 private boolean isEdit; + private CardLayout card; + + private static final String REPORT_TAB = Inter.getLocText("FR-Engine_Report"); + private static final String CHART_TAB = Inter.getLocText("FR-Designer-Form-ToolBar_Chart"); public static FormWidgetDetailPane getInstance() { if (HOLDER.singleton == null) { @@ -115,12 +122,21 @@ public class FormWidgetDetailPane extends FormDockView{ } initReuWidgetPanel(); initMenuPanel(); - tabbedPane = new UITabbedPane(); - tabbedPane.setOpaque(true); - tabbedPane.setBorder(null); - tabbedPane.setTabPlacement(SwingConstants.BOTTOM); - tabbedPane.addTab(Inter.getLocText("FR-Engine_Report"), reuWidgetPanel); - tabbedPane.addTab(Inter.getLocText("FR-Designer-Form-ToolBar_Chart"), new JPanel()); + + card = new CardLayout(); + tabbedPane = new JPanel(); + tabbedPane.setLayout(card); + tabbedPane.add(REPORT_TAB, reuWidgetPanel); + tabbedPane.add(CHART_TAB, new JPanel()); + UIHeadGroup tabsHeaderIconPane = new UIHeadGroup(new String[] {REPORT_TAB, CHART_TAB}) { + @Override + public void tabChanged(int index) { + card.show(tabbedPane, labelButtonList.get(index).getText()); + } + }; + tabsHeaderIconPane.setNeedLeftRightOutLine(false); + + add(tabsHeaderIconPane, BorderLayout.NORTH); add(tabbedPane, BorderLayout.CENTER); } @@ -140,17 +156,20 @@ public class FormWidgetDetailPane extends FormDockView{ private void initMenuPanel() { menutPanel = new JPanel(); menutPanel.setLayout(FRGUIPaneFactory.createBorderLayout()); - menutPanel.setBorder(BorderFactory.createEmptyBorder(3, 8, 3, 3)); - menutPanel.setPreferredSize(new Dimension(240, 48)); - menutPanel.add(new UILabel(Inter.getLocText("FR-Designer_LocalWidget"), + menutPanel.setBorder(BorderFactory.createEmptyBorder(3, 10, 10, 15)); +// menutPanel.setPreferredSize(new Dimension(240, 48)); + + menutPanelNorthPane = new JPanel(new BorderLayout()); + menutPanelNorthPane.add(new UILabel(Inter.getLocText("FR-Designer_LocalWidget"), SwingConstants.HORIZONTAL), BorderLayout.WEST); + menutPanelNorthPane.add(initEditButtonPane(), BorderLayout.EAST); + menutPanelNorthPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 5, 0)); - menutPanel.add(initEditButtonPane(), BorderLayout.EAST); - menutPanel.add(new JPanel(), BorderLayout.CENTER); + menutPanel.add(menutPanelNorthPane, BorderLayout.NORTH); comboBox = new UIComboBox(getFormCategories()); - comboBox.setPreferredSize(new Dimension(240, 30)); + comboBox.setPreferredSize(new Dimension(240, comboBox.getPreferredSize().height)); initComboBoxSelectedListener(); - menutPanel.add(comboBox, BorderLayout.SOUTH); + menutPanel.add(comboBox, BorderLayout.CENTER); reuWidgetPanel.add(menutPanel, BorderLayout.NORTH); } @@ -159,10 +178,13 @@ public class FormWidgetDetailPane extends FormDockView{ * 创建菜单栏按钮面板 */ private JPanel initEditButtonPane() { - editPanel = new JPanel(); - editPanel.setLayout(FRGUIPaneFactory.createBorderLayout()); - editPanel.add(createRefreshButton(), BorderLayout.WEST); - editPanel.add(createDownloadButton(), BorderLayout.EAST); + editPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 0, 0)); + + editPanel.add(createRefreshButton()); + editPanel.add(createDownloadButton()); + editPanel.add(createInstallButton()); + editPanel.add(createDeleteButton()); + return editPanel; } @@ -185,8 +207,38 @@ public class FormWidgetDetailPane extends FormDockView{ reuWidgetPanel.remove(deleteButton); } }); + + deleteButton = new UIButton(Inter.getLocText("FR-Designer_Remove_Item")); + deleteButton.set4ToolbarButton(); + deleteButton.setOpaque(true); + deleteButton.setBackground(Color.red); + deleteButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (ShareLoader.getLoader().removeModulesFromList()) { + refreshShareMoudule(); + reuWidgetPanel.remove(deleteButton); + elCaseBindInfoList = ShareLoader.getLoader().getAllBindInfoList(); + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_Removed_Successful")); + refreshDownPanel(false); + replaceButtonPanel(false); + refreshComboxData(); + } else { + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_Removed_Failed")); + } + + } + }); + JPanel deletePane = new JPanel(new BorderLayout()); + deletePane.add(deleteButton, BorderLayout.CENTER); + deletePane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5)); + resetPanel.setLayout(FRGUIPaneFactory.createBorderLayout()); resetPanel.add(resetButton, BorderLayout.CENTER); + resetPanel.add(deletePane, BorderLayout.WEST); + + refreshDownPanel(true); + return resetPanel; } @@ -210,35 +262,46 @@ public class FormWidgetDetailPane extends FormDockView{ }); } + /** + * 创建工具条按钮 + */ + private UIButton createToolButton(Icon icon, String toolTip, ActionListener actionListener) { + UIButton toolButton = new UIButton(); + toolButton.setIcon(icon); + toolButton.setToolTipText(toolTip); + toolButton.set4ToolbarButton(); + toolButton.addActionListener(actionListener); + return toolButton; + + } + /** * 创建刷新按钮 */ private UIButton createRefreshButton() { - UIButton refreshButton = new UIButton(); - refreshButton.setIcon(BaseUtils.readIcon("/com/fr/design/form/images/refresh.png")); - refreshButton.setToolTipText(Inter.getLocText("FR-Designer_Refresh")); - refreshButton.set4ToolbarButton(); - refreshButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - if (sw != null) { - sw.cancel(true); - } - sw = new SwingWorker() { + return createToolButton( + BaseUtils.readIcon("/com/fr/design/form/images/refresh.png"), + Inter.getLocText("FR-Designer_Refresh"), + new ActionListener() { @Override - protected Object doInBackground() throws Exception { - ShareLoader.getLoader().refreshModule(); - elCaseBindInfoList = ShareLoader.getLoader().getAllBindInfoList(); - refreshComboxData(); - refreshDownPanel(false); - return null; + public void actionPerformed(ActionEvent e) { + if (sw != null) { + sw.cancel(true); + } + sw = new SwingWorker() { + @Override + protected Object doInBackground() throws Exception { + ShareLoader.getLoader().refreshModule(); + elCaseBindInfoList = ShareLoader.getLoader().getAllBindInfoList(); + refreshComboxData(); + refreshDownPanel(false); + return null; + } + }; + sw.execute(); } - }; - sw.execute(); - } - }); - return refreshButton; - + } + ); } private void refreshComboxData() { @@ -251,30 +314,10 @@ public class FormWidgetDetailPane extends FormDockView{ */ private UIButton createDownloadButton() { UIButton downloadButton = new UIButton(); - downloadButton.setIcon(BaseUtils.readIcon("/com/fr/design/form/images/showmenu.png")); + downloadButton.setIcon(BaseUtils.readIcon("/com/fr/design/form/images/download icon.png")); downloadButton.set4ToolbarButton(); downloadButton.setToolTipText(Inter.getLocText("FR-Designer_Download_Template")); downloadButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - initPopMenu(); - } - }); - return downloadButton; - } - - /** - * 初始化下拉面板 - */ - private void initPopMenu() { - UIPopupMenu menu = new UIPopupMenu(); - UIMenuItem downloadItem = new UIMenuItem(Inter.getLocText("FR-Designer_Download_Template"), BaseUtils.readIcon("/com/fr/design/form/images/download icon.png")); - UIMenuItem installItem = new UIMenuItem(Inter.getLocText("FR-Designer_Install_Template"), BaseUtils.readIcon("/com/fr/design/form/images/install icon.png")); - UIMenuItem deleteItem = new UIMenuItem(Inter.getLocText("FR-Designer_Delete_Template"), BaseUtils.readIcon("/com/fr/design/form/images/delete icon.png")); - menu.add(downloadItem); - menu.add(installItem); - menu.add(deleteItem); - downloadItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String url = SiteCenter.getInstance().acquireUrlByKind("reuse.url"); @@ -295,68 +338,58 @@ public class FormWidgetDetailPane extends FormDockView{ } } }); - installItem.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - JFileChooser fileChooser = new JFileChooser(); - fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); - fileChooser.setFileFilter(new FileNameExtensionFilter(".reu", "reu")); - int returnValue = fileChooser.showDialog(new UILabel(), Inter.getLocText("FR-Designer_Select")); - if (returnValue == JFileChooser.APPROVE_OPTION) { - final File chosenFile = fileChooser.getSelectedFile(); - installFromDiskZipFile(chosenFile); - } - } - }); - deleteItem.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - replaceButtonPanel(true); - deleteFromDiskZipFile(); - } - }); - GUICoreUtils.showPopupMenu(menu, tabbedPane, tabbedPane.getX() + OFFSET_X, OFFSET_Y); + return downloadButton; } - private void deleteFromDiskZipFile() { - deleteButton = new UIButton(Inter.getLocText("FR-Designer-CommitTab_Remove")); - deleteButton.setBackground(Color.red); - deleteButton.repaint(); - deleteButton.setPreferredSize(new Dimension(240, 40)); - reuWidgetPanel.add(deleteButton, BorderLayout.SOUTH); - deleteButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - if (ShareLoader.getLoader().removeModulesFromList()) { - refreshShareMoudule(); - reuWidgetPanel.remove(deleteButton); - elCaseBindInfoList = ShareLoader.getLoader().getAllBindInfoList(); - JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_Removed_Successful")); - refreshDownPanel(false); - replaceButtonPanel(false); - refreshComboxData(); - } else { - JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_Removed_Failed")); + /** + * 创建安装模板的按钮 + */ + private UIButton createInstallButton() { + return createToolButton( + BaseUtils.readIcon("/com/fr/design/form/images/install icon.png"), + Inter.getLocText("FR-Designer_Install_Template"), + new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + JFileChooser fileChooser = new JFileChooser(); + fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); + fileChooser.setFileFilter(new FileNameExtensionFilter(".reu", "reu")); + int returnValue = fileChooser.showDialog(new UILabel(), Inter.getLocText("FR-Designer_Select")); + if (returnValue == JFileChooser.APPROVE_OPTION) { + final File chosenFile = fileChooser.getSelectedFile(); + installFromDiskZipFile(chosenFile); + } + } } + ); + } - } - }); - refreshDownPanel(true); - + /** + * 创建删除模板的按钮 + */ + private UIButton createDeleteButton() { + return createToolButton( + BaseUtils.readIcon("/com/fr/design/form/images/delete icon.png"), + Inter.getLocText("FR-Designer_Delete_Template"), + new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + replaceButtonPanel(true); + } + } + ); } private void replaceButtonPanel(boolean isEdit) { this.isEdit = isEdit; if (isEdit) { - menutPanel.remove(editPanel); - menutPanel.add(initResetButtonPane(), BorderLayout.EAST); + menutPanelNorthPane.remove(editPanel); + menutPanelNorthPane.add(initResetButtonPane(), BorderLayout.EAST); } else { - menutPanel.remove(resetPanel); - menutPanel.add(initEditButtonPane(), BorderLayout.EAST); + menutPanelNorthPane.remove(resetPanel); + menutPanelNorthPane.add(initEditButtonPane(), BorderLayout.EAST); ShareLoader.getLoader().resetRemovedModuleList(); } - - } private void installFromDiskZipFile(File chosenFile) { @@ -393,8 +426,6 @@ public class FormWidgetDetailPane extends FormDockView{ return ArrayUtils.addAll(new String[] {Inter.getLocText("FR-Designer_AllCategories")}, ShareLoader.getLoader().getModuleCategory()); } - - public void refreshDownPanel(boolean isEdit) { reuWidgetPanel.remove(downPane); downPane = new UIScrollPane(new ShareWidgetPane(elCaseBindInfoList, isEdit)); @@ -409,12 +440,6 @@ public class FormWidgetDetailPane extends FormDockView{ revalidate(); } - - public void setSelectedIndex(int index){ - tabbedPane.setSelectedIndex(index); - } - - /** * 清除数据 */ diff --git a/designer_form/src/com/fr/design/mainframe/JForm.java b/designer_form/src/com/fr/design/mainframe/JForm.java index bf31f71c8d..c84f572fd3 100644 --- a/designer_form/src/com/fr/design/mainframe/JForm.java +++ b/designer_form/src/com/fr/design/mainframe/JForm.java @@ -300,8 +300,10 @@ public class JForm extends JTemplate implements BaseJForm { private void setPropertyPaneChange(XComponent comp) { if (comp == null) { + ParameterPropertyPane.getInstance().setAddParaPaneVisible(false); return; } + ParameterPropertyPane.getInstance().setAddParaPaneVisible(comp instanceof XWParameterLayout); editingComponent = comp.createToolPane(this, formDesign); EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.FORM); if (BaseUtils.isAuthorityEditing()) { @@ -677,8 +679,11 @@ public class JForm extends JTemplate implements BaseJForm { EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.FORM); EastRegionContainerPane.getInstance().replaceWidgetSettingsPane(WidgetPropertyPane.getInstance(formDesign)); - EastRegionContainerPane.getInstance().addParameterPane(ParameterPropertyPane.getInstance(formDesign)); - EastRegionContainerPane.getInstance().setParameterHeight(ParameterPropertyPane.getInstance(formDesign).getPreferredSize().height); + ParameterPropertyPane parameterPropertyPane = ParameterPropertyPane.getInstance(formDesign); + parameterPropertyPane.setAddParaPaneVisible(false); + EastRegionContainerPane.getInstance().addParameterPane(parameterPropertyPane); + EastRegionContainerPane.getInstance().setParameterHeight(parameterPropertyPane.getPreferredSize().height); + if (EastRegionContainerPane.getInstance().getWidgetLibPane() == null) { new Thread() { public void run() { diff --git a/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java b/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java index 8b959deec9..1eb778257e 100644 --- a/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java +++ b/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java @@ -6,12 +6,12 @@ import com.fr.design.designer.beans.events.DesignerEditListener; import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.design.designer.creator.*; import com.fr.design.designer.properties.EventPropertyTable; -import com.fr.design.designer.properties.WidgetPropertyTable; import com.fr.design.fun.WidgetPropertyUIProvider; -import com.fr.design.gui.frpane.UITabbedPane; +import com.fr.design.gui.ibutton.UIHeadGroup; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.itable.AbstractPropertyTable; import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.mainframe.widget.ui.FormWidgetCardPane; import com.fr.form.ui.Widget; import com.fr.general.Inter; import com.fr.stable.ArrayUtils; @@ -28,11 +28,11 @@ import java.util.Set; * 控件属性表绘制 * Modified by fanglei */ -public class WidgetPropertyPane extends FormDockView implements BaseWidgetPropertyPane { +public class WidgetPropertyPane extends FormDockView implements BaseWidgetPropertyPane { private static final String PARA = "para"; private static final String BODY = "body"; - private WidgetPropertyTable propertyTable; // 控件的属性表 + private FormWidgetCardPane formWidgetCardPane; // 控件的属性表 private EventPropertyTable eventTable; // 控件的事件表 private List widgetPropertyTables; // 这个变量应该是保存控件拓展的属性tab private FormDesigner designer; // 当前designer @@ -45,6 +45,8 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper private JPanel centerPane; // 此centerPane采用的是cardLayout布局,装载着mobileWidgetTable和mobileBodyWidgetTable private CardLayout cardLayout; // 卡片布局,选中参数面板时显示mobileWidgetTable,选中body时显示mobileBodyWidgetTable private JTableHeader header;//把表头单独get出来作为一个组件 + private UIHeadGroup tabsHeaderIconPane; + public static WidgetPropertyPane getInstance() { if (HOLDER.singleton == null) { @@ -67,6 +69,12 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper setLayout(FRGUIPaneFactory.createBorderLayout()); } + @Override + protected String title4PopupWindow() { + return Inter.getLocText("FR-Designer-Widget_Settings"); + } + + @Override public String getViewTitle() { return Inter.getLocText("Form-Widget_Property_Table"); @@ -103,7 +111,7 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper * 初始化属性表,事件表,移动端拓展的属性表 */ private void initTables() { - propertyTable.initPropertyGroups(null); + formWidgetCardPane.populate(); eventTable.refresh(); for (AbstractPropertyTable propertyTable : widgetPropertyTables) { propertyTable.initPropertyGroups(designer); @@ -114,10 +122,11 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper * 创建属性表table */ private void createPropertyTable() { - propertyTable = new WidgetPropertyTable(designer); - designer.addDesignerEditListener(new WidgetPropertyDesignerAdapter(propertyTable)); - propertyTable.setBorder(null); - psp = new UIScrollPane(propertyTable); // 用来装载属性表table + formWidgetCardPane = new FormWidgetCardPane(designer); + + designer.addDesignerEditListener(new WidgetPropertyDesignerAdapter(formWidgetCardPane)); + + psp = new UIScrollPane(formWidgetCardPane); // 用来装载属性表table psp.setBorder(null); } @@ -170,9 +179,7 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper * 将属性表,事件表,移动端控件列表整合到TabPane里面去 */ private void createTabPane() { - UITabbedPane tabbedPane = new UITabbedPane(); // tab选项卡容器 - initTabPane(tabbedPane); - add(tabbedPane, BorderLayout.CENTER); + initTabPane(); } /** @@ -206,7 +213,8 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper for (WidgetPropertyUIProvider widgetAttrProvider : widgetAttrProviders) { AbstractPropertyTable propertyTable = widgetAttrProvider.createWidgetAttrTable(); widgetPropertyTables.add(propertyTable); - designer.addDesignerEditListener(new WidgetPropertyDesignerAdapter(propertyTable)); + designer.addDesignerEditListener(new WidgetPropertyDesignerAdapter(formWidgetCardPane)); + UIScrollPane uiScrollPane = new UIScrollPane(getExtraBodyTable(propertyTable)); wsp.add(uiScrollPane); } @@ -231,13 +239,27 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper return abstractPropertyTable; } - private void initTabPane(UITabbedPane tabbedPane) { - tabbedPane.setOpaque(true); - tabbedPane.setBorder(null); - tabbedPane.setTabPlacement(SwingConstants.BOTTOM); - tabbedPane.addTab(Inter.getLocText("FR-Designer_Properties"), psp); - tabbedPane.addTab(Inter.getLocText("FR-Designer_Event"), eventTable); - tabbedPane.addTab(Inter.getLocText("FR-Widget_Mobile_Terminal"), wsp); + private void initTabPane() { + final String[] tabTitles = new String[]{ + Inter.getLocText("FR-Designer_Properties"), + Inter.getLocText("FR-Designer_Event"), + Inter.getLocText("FR-Widget_Mobile_Terminal") + }; + final CardLayout tabbedPane = new CardLayout(); + final JPanel center = new JPanel(tabbedPane); + center.add(formWidgetCardPane, Inter.getLocText("FR-Designer_Properties")); + center.add(eventTable, Inter.getLocText("FR-Designer_Event")); + center.add(wsp, Inter.getLocText("FR-Widget_Mobile_Terminal")); + this.add(center, BorderLayout.CENTER); + + tabsHeaderIconPane = new UIHeadGroup(tabTitles) { + @Override + public void tabChanged(int index) { + tabbedPane.show(center, tabTitles[index]); + } + }; + tabsHeaderIconPane.setNeedLeftRightOutLine(false); + this.add(tabsHeaderIconPane, BorderLayout.NORTH); } @@ -266,7 +288,7 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper } private void clearDockingView() { - propertyTable = null; + formWidgetCardPane = null; eventTable = null; if (widgetPropertyTables != null) { widgetPropertyTables.clear(); @@ -280,26 +302,25 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper * 属性表监听界面事件(编辑,删除,选中,改变大小) */ private class WidgetPropertyDesignerAdapter implements DesignerEditListener { - AbstractPropertyTable propertyTable; + FormWidgetCardPane formWidgetCardPane; - WidgetPropertyDesignerAdapter(AbstractPropertyTable propertyTable) { - this.propertyTable = propertyTable; + WidgetPropertyDesignerAdapter(FormWidgetCardPane formWidgetCardPane) { + this.formWidgetCardPane = formWidgetCardPane; } @Override public void fireCreatorModified(DesignerEvent evt) { if (evt.getCreatorEventID() == DesignerEvent.CREATOR_EDITED || evt.getCreatorEventID() == DesignerEvent.CREATOR_DELETED - || evt.getCreatorEventID() == DesignerEvent.CREATOR_SELECTED) { - propertyTable.initPropertyGroups(designer); - } else if (evt.getCreatorEventID() == DesignerEvent.CREATOR_RESIZED) { - repaint(); + || evt.getCreatorEventID() == DesignerEvent.CREATOR_SELECTED + || evt.getCreatorEventID() == DesignerEvent.CREATOR_RESIZED) { + formWidgetCardPane.populate(); } } @Override public boolean equals(Object o) { - return o instanceof WidgetPropertyDesignerAdapter && ((WidgetPropertyDesignerAdapter) o).propertyTable == this.propertyTable; + return o instanceof WidgetPropertyDesignerAdapter && ((WidgetPropertyDesignerAdapter) o).formWidgetCardPane == this.formWidgetCardPane; } } 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 62c9aa0678..3428923845 100644 --- a/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java +++ b/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java @@ -80,6 +80,19 @@ public class UITreeComboBox extends JComboBox{ setUI(cui); } + private void refreshShortCuts() { + TreePath path = this.getTree().getSelectionPath(); + if (path == null) { + return; + } + Component component = (Component) path.getLastPathComponent(); + if (!(component instanceof XCreator)) { + return; + } + com.fr.design.designer.beans.ComponentAdapter adapter = AdapterBus.getComponentAdapter(this.getTree().getDesigner(), (XCreator) component); + adapter.getContextPopupMenu(null); + } + // UI Inner classes -- one for each supported Look and Feel class MetalJTreeComboBoxUI extends MetalComboBoxUI{ protected ComboPopup createPopup() { @@ -152,7 +165,7 @@ public class UITreeComboBox extends JComboBox{ tree.refreshUI(); repaint(); } - + refreshShortCuts(); } @Override 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 new file mode 100644 index 0000000000..22cbd0eb9f --- /dev/null +++ b/designer_form/src/com/fr/design/mainframe/widget/ui/FormBasicPropertyPane.java @@ -0,0 +1,56 @@ +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.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 void populate(Widget widget) { + widgetName.setText(widget.getWidgetName()); + } + + public void update(Widget widget) { + widget.setWidgetName(widgetName.getText()); + } + +} diff --git a/designer_form/src/com/fr/design/mainframe/widget/ui/FormBasicWidgetPropertyPane.java b/designer_form/src/com/fr/design/mainframe/widget/ui/FormBasicWidgetPropertyPane.java new file mode 100644 index 0000000000..74d421a6e8 --- /dev/null +++ b/designer_form/src/com/fr/design/mainframe/widget/ui/FormBasicWidgetPropertyPane.java @@ -0,0 +1,48 @@ +package com.fr.design.mainframe.widget.ui; + +import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.form.ui.Widget; +import com.fr.general.Inter; + +import javax.swing.*; +import java.awt.*; + +/** + * Created by ibm on 2017/7/26. + */ +public class FormBasicWidgetPropertyPane extends FormBasicPropertyPane { + private UICheckBox enableCheckBox; + private UICheckBox visibleCheckBox; + + public FormBasicWidgetPropertyPane (){ + initOtherPane(); + } + + protected void initOtherPane() { + JPanel pane2 = FRGUIPaneFactory.createY_AXISBoxInnerContainer_M_Pane(); + enableCheckBox = new UICheckBox(Inter.getLocText("Enabled"), true); + pane2.add(enableCheckBox); + visibleCheckBox = new UICheckBox(Inter.getLocText("Widget-Visible"), true); + pane2.add(visibleCheckBox); + this.add(pane2, BorderLayout.CENTER); + } + + @Override + public String title4PopupWindow() { + return "basicProperty"; + } + + public void populate(Widget widget) { + super.populate(widget); + enableCheckBox.setSelected(widget.isEnabled()); + visibleCheckBox.setSelected(widget.isVisible()); + } + + public void update(Widget widget) { + super.update(widget); + widget.setEnabled(enableCheckBox.isSelected()); + widget.setEnabled(visibleCheckBox.isSelected()); + } + +} 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 new file mode 100644 index 0000000000..35c74553d0 --- /dev/null +++ b/designer_form/src/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java @@ -0,0 +1,214 @@ +package com.fr.design.mainframe.widget.ui; + +import com.fr.design.data.DataCreatorUI; +import com.fr.design.designer.creator.*; +import com.fr.design.foldablepane.UIExpandablePane; +import com.fr.design.gui.frpane.AbstractAttrNoScrollPane; +import com.fr.design.gui.frpane.AttributeChangeListener; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.mainframe.FormDesigner; +import com.fr.design.widget.DataModify; +import com.fr.design.widget.Operator; +import com.fr.design.widget.FormWidgetDefinePaneFactoryBase; +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.widget.CRBoundsWidget; + +import javax.swing.*; +import java.awt.*; + +/** + * Created by ibm on 2017/7/25. + */ +public class FormWidgetCardPane extends AbstractAttrNoScrollPane { + private AttributeChangeListener listener2; + private FormDesigner designer; + //当前的编辑器属性定义面板 + private DataModify currentEditorDefinePane; + private FormBasicPropertyPane widgetPropertyPane; + private JPanel attriCardPane; + + private XCreator xCreator; + private WidgetBoundPane widgetBoundPane; + + + public FormWidgetCardPane(FormDesigner designer) { + super(); + this.xCreator = findXcreator(designer); + this.designer = designer; + initComponents(); + initDefinePane(); + widgetBoundPane = createWidgetBoundPane(xCreator); + if (widgetBoundPane != null) { + attriCardPane.add(widgetBoundPane, BorderLayout.CENTER); + } + + } + + public XLayoutContainer getParent(XCreator source) { + XLayoutContainer container = XCreatorUtils.getParentXLayoutContainer(source); + if (source.acceptType(XWFitLayout.class) || source.acceptType(XWParameterLayout.class)) { + container = null; + } + return container; + } + + public WidgetBoundPane createWidgetBoundPane(XCreator xCreator) { + XLayoutContainer xLayoutContainer = getParent(xCreator); + if (xLayoutContainer == null || xCreator instanceof XWParameterLayout || xCreator instanceof XWAbsoluteLayout) { + return null; + } else if (xLayoutContainer instanceof XWAbsoluteLayout) { + return new WidgetAbsoluteBoundPane(xCreator); + } + return new WidgetBoundPane(xCreator); + } + + protected JPanel createContentPane() { + return null; + } + + public XCreator findXcreator(FormDesigner designer) { + int size = designer.getSelectionModel().getSelection().size(); + if (size == 0 || size == 1) { + XCreator creator = size == 0 ? designer.getRootComponent() : designer.getSelectionModel().getSelection() + .getSelectedCreator(); + return creator; + } else { + return null; + } + + } + + /** + * 后台初始化所有事件. + */ + public void initAllListeners() { + + } + + /** + * 后台初始化所有事件. + */ + public void reinitAllListeners() { + initListener(this); + } + + + protected void initContentPane() { + } + + private void initComponents() { + + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + this.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); + if (xCreator.supportSetVisibleOrEnable()) { + widgetPropertyPane = new FormBasicWidgetPropertyPane(); + } else { + widgetPropertyPane = new FormBasicPropertyPane(); + } + + UIExpandablePane uiExpandablePane = new UIExpandablePane("基本", 280, 20, widgetPropertyPane); + + this.add(uiExpandablePane, BorderLayout.NORTH); + + attriCardPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + + this.add(attriCardPane, BorderLayout.CENTER); + + this.listener2 = new AttributeChangeListener() { + @Override + public void attributeChange() { + updateCreator(); + } + }; + + } + + 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); + } + } + } + FormWidgetDefinePaneFactoryBase.RN rn = FormWidgetDefinePaneFactoryBase.createWidgetDefinePane(creator, creator.toData(), new Operator() { + @Override + public void did(DataCreatorUI ui, String cardName) { + + } + }); + DataModify definePane = rn.getDefinePane(); + + JComponent jComponent = definePane.toSwingComponent(); + + attriCardPane.add(jComponent, BorderLayout.NORTH); + currentEditorDefinePane = definePane; + } + + + @Override + public String title4PopupWindow() { + return "Widget"; + } + + public void populate() { + //populate之前先移除所有的监听 + removeAttributeChangeListener(); + Widget cellWidget = xCreator.toData(); + if (widgetBoundPane != null) { + widgetBoundPane.populate(); + } + if (cellWidget instanceof WScaleLayout) { + Widget crBoundsWidget = ((WScaleLayout) cellWidget).getBoundsWidget(); + currentEditorDefinePane.populateBean(((CRBoundsWidget) crBoundsWidget).getWidget()); + } else { + currentEditorDefinePane.populateBean(cellWidget); + } + widgetPropertyPane.populate(cellWidget); + reinitAllListeners(); + this.addAttributeChangeListener(listener2); + } + + + public void updateCreator() { + Widget widget = currentEditorDefinePane.updateBean(); + widgetPropertyPane.update(widget); + if (widgetBoundPane != null) { + widgetBoundPane.update(); + } + fireValueChanged(); + + if (xCreator instanceof XWScaleLayout) { + XCreator xCreator1 = xCreator.getEditingChildCreator(); + xCreator1.resetData(widget); + xCreator.removeAll(); + xCreator.add(xCreator1); + } else { + xCreator.resetData(widget); + } + } + + + @Override + /** + *检查 + */ + public void checkValid() throws Exception { + currentEditorDefinePane.checkValid(); + } + + public void fireValueChanged() { + designer.repaint(); + } + + public String getIconPath() { + return ""; + } + + +} diff --git a/designer_form/src/com/fr/design/parameter/ParameterPropertyPane.java b/designer_form/src/com/fr/design/parameter/ParameterPropertyPane.java index 01302299ea..28c912c368 100644 --- a/designer_form/src/com/fr/design/parameter/ParameterPropertyPane.java +++ b/designer_form/src/com/fr/design/parameter/ParameterPropertyPane.java @@ -1,5 +1,6 @@ package com.fr.design.parameter; +import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicScrollPane; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.mainframe.FormDesigner; @@ -14,11 +15,14 @@ import java.awt.event.MouseEvent; public class ParameterPropertyPane extends JPanel{ private ParameterToolBarPane toolbarPane; - private BasicScrollPane basicScrollPane; private ParaDefinitePane paraPane; + private JPanel formHierarchyTreePaneWrapper; // 封装一层,加边框 + private JPanel addParaPane; - public static ParameterPropertyPane THIS; + + private static ParameterPropertyPane THIS; private boolean isEditing = false; + private static final int HIDE_HEIGHT = 40; public static final ParameterPropertyPane getInstance() { if(THIS == null) { @@ -43,7 +47,7 @@ public class ParameterPropertyPane extends JPanel{ public ParameterPropertyPane() { toolbarPane = new ParameterToolBarPane(); - basicScrollPane = new BasicScrollPane() { + BasicScrollPane basicScrollPane = new BasicScrollPane() { @Override protected JPanel createContentPane() { return toolbarPane; @@ -59,15 +63,42 @@ public class ParameterPropertyPane extends JPanel{ return null; } }; - initParameterListener(); + JPanel scrollPaneWrapperInner = new JPanel(new BorderLayout()); + scrollPaneWrapperInner.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 5)); + scrollPaneWrapperInner.add(basicScrollPane, BorderLayout.CENTER); + addParaPane = new JPanel(new BorderLayout()); + addParaPane.add(scrollPaneWrapperInner, BorderLayout.CENTER); + addParaPane.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, UIConstants.SPLIT_LINE)); + + + initParameterListener(); this.setLayout(new BorderLayout(0, 6)); - this.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0)); - this.add(basicScrollPane, BorderLayout.CENTER); + this.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); + this.add(addParaPane, BorderLayout.CENTER); } + + public void setAddParaPaneVisible(boolean isVisible) { + if (isVisible == addParaPane.isVisible()) { + return; + } + if (isVisible && toolbarPane.hasSelectedLabelItem()) { + addParaPane.setVisible(true); + this.setPreferredSize(null); + } else { + addParaPane.setVisible(false); + this.setPreferredSize(new Dimension(getWidth(), formHierarchyTreePaneWrapper.getPreferredSize().height + UIConstants.GAP_NORMAL)); + } + repaintContainer(); + } private void setEditor(FormDesigner editor) { - this.remove(FormHierarchyTreePane.getInstance()); - this.add(FormHierarchyTreePane.getInstance(editor), BorderLayout.NORTH); + if (formHierarchyTreePaneWrapper == null) { + formHierarchyTreePaneWrapper = new JPanel(new BorderLayout()); + formHierarchyTreePaneWrapper.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15)); + this.add(formHierarchyTreePaneWrapper, BorderLayout.SOUTH); + } + formHierarchyTreePaneWrapper.remove(FormHierarchyTreePane.getInstance()); + formHierarchyTreePaneWrapper.add(FormHierarchyTreePane.getInstance(editor), BorderLayout.CENTER); } private void initParameterListener() { diff --git a/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java b/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java index cfae55b853..daac4c2db8 100644 --- a/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java +++ b/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java @@ -57,6 +57,10 @@ public class ParameterToolBarPane extends BasicBeanPane { } + public boolean hasSelectedLabelItem() { + return !parameterSelectedLabellist.isEmpty(); + } + @Override protected String title4PopupWindow() { return null; diff --git a/designer_form/src/com/fr/design/parameter/RootDesignDefinePane.java b/designer_form/src/com/fr/design/parameter/RootDesignDefinePane.java new file mode 100644 index 0000000000..18d24dcedd --- /dev/null +++ b/designer_form/src/com/fr/design/parameter/RootDesignDefinePane.java @@ -0,0 +1,117 @@ +package com.fr.design.parameter; + +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.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.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 javax.swing.*; +import java.awt.*; + +/** + * Created by ibm on 2017/8/2. + */ +public class RootDesignDefinePane extends AbstractDataModify { + private XWParameterLayout root; + private UISpinner designerWidth; + private UICheckBox displayReport; + private UITextField background; + private UITextField displayPosition; + + public RootDesignDefinePane(XCreator xCreator) { + super(xCreator); + this.root = (XWParameterLayout) xCreator; + initComponent(); + } + + + public void initComponent() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + designerWidth = new UISpinner(1, 1000, 1); + JPanel advancePane = createAdvancePane(); + 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(){ + 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-Desin_Width")), designerWidth}, + }; + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 20, 7); + panel.setBorder(BorderFactory.createEmptyBorder(5, 5,5,5)); + return panel; + } + + public JPanel createAdvancePane(){ + displayReport = new UICheckBox(Inter.getLocText("FR-Designer_DisplayNothingBeforeQuery")); + background = new UITextField(); + displayPosition = new UITextField(); + double f = TableLayout.FILL; + double p = TableLayout.PREFERRED; + 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} + }; + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 20, 7); + panel.setBorder(BorderFactory.createEmptyBorder(5, 5,5,5)); + return panel; + } + + @Override + public String title4PopupWindow() { + return "parameter"; + } + + @Override + public void populateBean(WParameterLayout ob) { + displayReport.setSelected(ob.isDelayDisplayContent()); + designerWidth.setValue(ob.getDesignWidth()); + } + + + @Override + public WParameterLayout updateBean() { + WParameterLayout wParameterLayout = (WParameterLayout) creator.toData(); + wParameterLayout.setDesignWidth((int) designerWidth.getValue()); + wParameterLayout.setDelayDisplayContent(displayReport.isSelected()); + return wParameterLayout; + } + + @Override + public DataCreatorUI dataUI() { + return null; + } + +} \ No newline at end of file diff --git a/designer_form/src/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java b/designer_form/src/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java new file mode 100644 index 0000000000..36f4719def --- /dev/null +++ b/designer_form/src/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java @@ -0,0 +1,106 @@ +package com.fr.design.widget; + +import com.fr.base.FRContext; +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.designer.creator.XCreator; +import com.fr.design.gui.core.WidgetConstants; +import com.fr.design.parameter.RootDesignDefinePane; +import com.fr.design.widget.ui.designer.*; +import com.fr.design.widget.ui.designer.layout.*; +import com.fr.form.ui.*; +import com.fr.form.ui.container.*; +import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; +import com.fr.form.ui.container.cardlayout.WTabFitLayout; +import com.fr.general.Inter; +import com.fr.stable.bridge.BridgeMark; +import com.fr.stable.bridge.StableFactory; + +import java.lang.reflect.Constructor; +import java.util.HashMap; +import java.util.Map; + +/** + * Created by IntelliJ IDEA. + * Author : Richer + * Version: 6.5.6 + * Date : 11-11-14 + * Time : 上午11:17 + */ +public class FormWidgetDefinePaneFactoryBase { + private static Map, Appearance> defineMap = new HashMap, Appearance>(); + + static { + defineMap.put(NumberEditor.class, new Appearance(NumberEditorDefinePane.class, WidgetConstants.NUMBER + "")); + defineMap.put(DateEditor.class, new Appearance(DateEditorDefinePane.class, WidgetConstants.DATE + "")); + defineMap.put(ComboCheckBox.class, new Appearance(ComboCheckBoxDefinePane.class, WidgetConstants.COMBOCHECKBOX + "")); + defineMap.put(Radio.class, new Appearance(RadioDefinePane.class, WidgetConstants.RADIO + "")); + defineMap.put(CheckBox.class, new Appearance(CheckBoxDefinePane.class, WidgetConstants.CHECKBOX + "")); + defineMap.put(TreeComboBoxEditor.class, new Appearance(TreeComboBoxEditorDefinePane.class, WidgetConstants.TREECOMBOBOX + "")); + defineMap.put(TreeEditor.class, new Appearance(TreeEditorDefinePane.class, WidgetConstants.TREE + "")); + defineMap.put(MultiFileEditor.class, new Appearance(MultiFileEditorPane.class, WidgetConstants.MULTI_FILE + "")); + defineMap.put(TextArea.class, new Appearance(TextAreaDefinePane.class, WidgetConstants.TEXTAREA + "")); + defineMap.put(Password.class, new Appearance(PasswordDefinePane.class, WidgetConstants.PASSWORD + "")); + defineMap.put(IframeEditor.class, new Appearance(IframeEditorDefinePane.class, WidgetConstants.IFRAME + "")); + 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(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 + "")); + } + + defineMap.put(WAbsoluteLayout.class, new Appearance(FRAbsoluteLayoutDefinePane.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(Label.class, new Appearance(LabelDefinePane.class, "label")); + defineMap.put(WTabFitLayout.class, new Appearance(WTabFitLayoutDefinePane.class, "label")); + defineMap.putAll(ExtraDesignClassManager.getInstance().getCellWidgetOptionsMap()); + } + + private FormWidgetDefinePaneFactoryBase() { + + } + + public static RN createWidgetDefinePane(XCreator creator, Widget widget, Operator operator) { + Appearance dn = defineMap.get(widget.getClass()); + DataModify definePane = null; + try { + Constructor con = dn.getDefineClass().getConstructor(XCreator.class); + definePane = (DataModify)con.newInstance(creator); + operator.did(definePane.dataUI(), dn.getDisplayName()); + } catch (Exception e) { + FRContext.getLogger().error(e.getMessage(), e); + } + return new RN(definePane, dn.getDisplayName()); + } + + public static class RN { + private DataModify definePane; + private String cardName; + + public RN(DataModify definePane, String cardName) { + this.definePane = definePane; + this.cardName = cardName; + } + + public DataModify getDefinePane() { + return definePane; + } + + public String getCardName() { + return cardName; + } + } + +} \ No newline at end of file diff --git a/designer_form/src/com/fr/design/widget/ui/designer/AbstractDataModify.java b/designer_form/src/com/fr/design/widget/ui/designer/AbstractDataModify.java new file mode 100644 index 0000000000..c4f97fee29 --- /dev/null +++ b/designer_form/src/com/fr/design/widget/ui/designer/AbstractDataModify.java @@ -0,0 +1,34 @@ +package com.fr.design.widget.ui.designer; + +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.data.DataCreatorUI; +import com.fr.design.designer.creator.XCreator; +import com.fr.design.widget.DataModify; + +import javax.swing.*; + +/** + * Created by kerry on 17/07/28. + */ +public abstract class AbstractDataModify extends BasicBeanPane implements DataModify { + protected XCreator creator; + + public AbstractDataModify(){ + + } + public AbstractDataModify(XCreator xCreator){ + this.creator = xCreator; + } + + @Override + public DataCreatorUI dataUI() { + return null; + } + + @Override + public JComponent toSwingComponent() { + return this; + } + + +} \ No newline at end of file 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 new file mode 100644 index 0000000000..84df22ac98 --- /dev/null +++ b/designer_form/src/com/fr/design/widget/ui/designer/ButtonDefinePane.java @@ -0,0 +1,60 @@ +package com.fr.design.widget.ui.designer; + +import com.fr.design.designer.creator.XCreator; +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.form.ui.Button; +import com.fr.form.ui.FreeButton; + +import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import java.awt.*; + +public class ButtonDefinePane extends AbstractDataModify