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/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 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/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/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;