diff --git a/designer/src/com/fr/design/actions/ButtonGroupAction.java b/designer/src/com/fr/design/actions/ButtonGroupAction.java index ad461c1f0d..e3f20f70bf 100644 --- a/designer/src/com/fr/design/actions/ButtonGroupAction.java +++ b/designer/src/com/fr/design/actions/ButtonGroupAction.java @@ -36,7 +36,7 @@ public abstract class ButtonGroupAction extends ElementCaseAction{ break; } } - if(value == -1 && createToolBarComponent().hasClick()) { + if(createToolBarComponent().hasClick()) { index = getSelectedIndex(); createToolBarComponent().setClickState(false); } diff --git a/designer/src/com/fr/design/actions/cell/CellWidgetAttrAction.java b/designer/src/com/fr/design/actions/cell/CellWidgetAttrAction.java index 2a231a21f6..7c4ee70875 100644 --- a/designer/src/com/fr/design/actions/cell/CellWidgetAttrAction.java +++ b/designer/src/com/fr/design/actions/cell/CellWidgetAttrAction.java @@ -22,5 +22,6 @@ public class CellWidgetAttrAction extends UpdateAction { @Override public void actionPerformed(ActionEvent e) { EastRegionContainerPane.getInstance().switchTabTo(EastRegionContainerPane.KEY_WIDGET_SETTINGS); + EastRegionContainerPane.getInstance().setWindow2PreferWidth(); } } \ No newline at end of file diff --git a/designer/src/com/fr/design/actions/cell/ConditionAttributesAction.java b/designer/src/com/fr/design/actions/cell/ConditionAttributesAction.java index 15acd796cb..0d5d7202c4 100644 --- a/designer/src/com/fr/design/actions/cell/ConditionAttributesAction.java +++ b/designer/src/com/fr/design/actions/cell/ConditionAttributesAction.java @@ -24,5 +24,6 @@ public class ConditionAttributesAction extends UpdateAction { @Override public void actionPerformed(ActionEvent e) { EastRegionContainerPane.getInstance().switchTabTo(EastRegionContainerPane.KEY_CONDITION_ATTR); + EastRegionContainerPane.getInstance().setWindow2PreferWidth(); } } \ No newline at end of file diff --git a/designer/src/com/fr/design/actions/cell/style/AlignmentAction.java b/designer/src/com/fr/design/actions/cell/style/AlignmentAction.java index 326b47f650..c3b690c97e 100644 --- a/designer/src/com/fr/design/actions/cell/style/AlignmentAction.java +++ b/designer/src/com/fr/design/actions/cell/style/AlignmentAction.java @@ -1,111 +1,134 @@ package com.fr.design.actions.cell.style; -import javax.swing.Icon; - import com.fr.base.BaseUtils; import com.fr.base.Style; import com.fr.base.chart.BaseChartCollection; -import com.fr.design.constants.UIConstants; import com.fr.design.actions.ButtonGroupAction; import com.fr.design.actions.utils.ReportActionUtils; +import com.fr.design.constants.UIConstants; import com.fr.design.gui.ibutton.UIButtonGroup; -import com.fr.general.Inter; +import com.fr.design.gui.ibutton.UIToggleButton; import com.fr.design.mainframe.ElementCasePane; +import com.fr.general.Inter; import com.fr.grid.selection.FloatSelection; import com.fr.grid.selection.Selection; import com.fr.report.cell.FloatElement; import com.fr.report.elementcase.TemplateElementCase; +import com.fr.stable.Constants; + +import javax.swing.*; public class AlignmentAction extends ButtonGroupAction implements StyleActionInterface { - public AlignmentAction(ElementCasePane t, Icon[] iconArray, - Integer[] valueArray) { - super(t, iconArray, valueArray); - } - - - /** - * executeStyle - * - * @param style - * @param selectedStyle - * @return style - */ - public Style executeStyle(Style style, Style selectedStyle) { - return style.deriveHorizontalAlignment(getSelectedValue()); - } - - /** - * 更新Style - * - * @param style style - */ - public void updateStyle(Style style) { - setSelectedIndex(BaseUtils.getAlignment4Horizontal(style)); - } - - /** - * executeActionReturnUndoRecordNeeded - * - * @return - */ - public boolean executeActionReturnUndoRecordNeeded() { - ElementCasePane reportPane = this.getEditingComponent(); - if (reportPane == null) { - return false; - } - - return ReportActionUtils.executeAction(this, reportPane); - } - - /** - * update - */ - public void update() { - super.update(); - - //peter:如果当前没有ReportFrame,不需要继续. - if (!this.isEnabled()) { - return; - } - - //got simple cell element from row and column - ElementCasePane reportPane = this.getEditingComponent(); - if (reportPane == null) { - this.setEnabled(false); - return; - } - Selection cs = reportPane.getSelection(); - TemplateElementCase tplEC = reportPane.getEditingElementCase(); - - if (tplEC != null && cs instanceof FloatSelection) { - FloatElement selectedFloat = tplEC.getFloatElement(((FloatSelection) cs).getSelectedFloatName()); - Object value = selectedFloat.getValue(); - if (value instanceof BaseChartCollection) { - this.setEnabled(false); - return; - } - } - this.updateStyle(ReportActionUtils.getCurrentStyle(reportPane)); - } - - /** - * 创建工具条,且有提示 - * - * @return - */ - public UIButtonGroup createToolBarComponent() { - UIButtonGroup group = super.createToolBarComponent(); - if (group != null) { - group.setForToolBarButtonGroup(true); - group.setAllToolTips(new String[]{Inter.getLocText("StyleAlignment-Left"), Inter.getLocText("Center"), Inter.getLocText("StyleAlignment-Right")}); - } - for (int i = 0; i < 3; i++) { - group.getButton(i).setRoundBorder(true, UIConstants.ARC); - group.getButton(i).setBorderPainted(true); - } - return group; - } + private static final Icon[] normalBlackIcon = new Icon[]{ + BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/h_left_normal.png"), + BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/h_center_normal.png"), + BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/h_right_normal.png")}; + + private static final Icon[] toggleWhiteIcon = new Icon[]{ + BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/h_left_normal_white.png"), + BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/h_center_normal_white.png"), + BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/h_right_normal_white.png")}; + + private static final Integer[] valueArray = new Integer[]{Constants.LEFT, Constants.CENTER, Constants.RIGHT}; + + public AlignmentAction(ElementCasePane t) { + super(t, normalBlackIcon, valueArray); + } + + + /** + * executeStyle + * + * @param style + * @param selectedStyle + * @return style + */ + public Style executeStyle(Style style, Style selectedStyle) { + return style.deriveHorizontalAlignment(getSelectedValue()); + } + + /** + * 更新Style + * + * @param style style + */ + public void updateStyle(Style style) { + UIButtonGroup buttonGroup = createToolBarComponent(); + int selected = BaseUtils.getAlignment4Horizontal(style); + for (int i = 0; i < normalBlackIcon.length; i++) { + UIToggleButton button = buttonGroup.getButton(i); + Icon currentIcon = button.getIcon(); + Icon newIcon = selected == valueArray[i] ? toggleWhiteIcon[i] : normalBlackIcon[i]; + if (newIcon != currentIcon) { + button.setIcon(newIcon); + } + } + setSelectedIndex(selected); + } + + /** + * executeActionReturnUndoRecordNeeded + * + * @return + */ + public boolean executeActionReturnUndoRecordNeeded() { + ElementCasePane reportPane = this.getEditingComponent(); + if (reportPane == null) { + return false; + } + + return ReportActionUtils.executeAction(this, reportPane); + } + + /** + * update + */ + public void update() { + super.update(); + + //peter:如果当前没有ReportFrame,不需要继续. + if (!this.isEnabled()) { + return; + } + + //got simple cell element from row and column + ElementCasePane reportPane = this.getEditingComponent(); + if (reportPane == null) { + this.setEnabled(false); + return; + } + Selection cs = reportPane.getSelection(); + TemplateElementCase tplEC = reportPane.getEditingElementCase(); + + if (tplEC != null && cs instanceof FloatSelection) { + FloatElement selectedFloat = tplEC.getFloatElement(((FloatSelection) cs).getSelectedFloatName()); + Object value = selectedFloat.getValue(); + if (value instanceof BaseChartCollection) { + this.setEnabled(false); + return; + } + } + this.updateStyle(ReportActionUtils.getCurrentStyle(reportPane)); + } + + /** + * 创建工具条,且有提示 + * + * @return + */ + public UIButtonGroup createToolBarComponent() { + UIButtonGroup group = super.createToolBarComponent(); + if (group != null) { + group.setForToolBarButtonGroup(true); + group.setAllToolTips(new String[]{Inter.getLocText("StyleAlignment-Left"), Inter.getLocText("Center"), Inter.getLocText("StyleAlignment-Right")}); + } + for (int i = 0; i < 3; i++) { + group.getButton(i).setRoundBorder(true, UIConstants.ARC); + group.getButton(i).setBorderPainted(true); + } + return group; + } } \ No newline at end of file diff --git a/designer/src/com/fr/design/actions/cell/style/ReportFontBoldAction.java b/designer/src/com/fr/design/actions/cell/style/ReportFontBoldAction.java index 101d1f1f0d..0abe5ff4b2 100644 --- a/designer/src/com/fr/design/actions/cell/style/ReportFontBoldAction.java +++ b/designer/src/com/fr/design/actions/cell/style/ReportFontBoldAction.java @@ -8,84 +8,96 @@ import com.fr.base.Style; import com.fr.base.core.StyleUtils; import com.fr.design.actions.ToggleButtonUpdateAction; import com.fr.design.gui.ibutton.UIToggleButton; -import com.fr.general.FRFont; -import com.fr.general.Inter; import com.fr.design.mainframe.ElementCasePane; import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.FRFont; +import com.fr.general.Inter; + +import javax.swing.*; /** * Bold. */ public class ReportFontBoldAction extends AbstractStyleAction implements ToggleButtonUpdateAction { - private UIToggleButton button; - protected Style style; + private UIToggleButton button; + protected Style style; + private final static Icon blackIcon = BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/bold.png"); + private final static Icon whiteIcon = BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/bold_white.png"); + + public ReportFontBoldAction(ElementCasePane t) { + super(t); - public ReportFontBoldAction(ElementCasePane t) { - super(t); + this.setName(Inter.getLocText("FRFont-bold")); + this.setSmallIcon(blackIcon); + } - this.setName(Inter.getLocText("FRFont-bold")); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/bold.png")); - } + /** + * 根据按钮状态获取格式 + * + * @param style + * @param defStyle + * @return + */ + @Override + public Style executeStyle(Style style, Style defStyle) { + button = createToolBarComponent(); + button.setIcon(getToggleButtonIcon(button.isSelected())); + button.setSelected(!button.isSelected()); + if (button.isSelected()) { + setSelectedFont(style); + button.setSelected(false); + } else { + setUnselectedFont(style); + button.setSelected(true); + } - /** - * 根据按钮状态获取格式 - * - * @param style - * @param defStyle - * @return - */ - @Override - public Style executeStyle(Style style, Style defStyle) { - createToolBarComponent().setSelected(!createToolBarComponent().isSelected()); - if (createToolBarComponent().isSelected()) { - setSelectedFont(style); - createToolBarComponent().setSelected(false); - } else { - setUnselectedFont(style); - createToolBarComponent().setSelected(true); - } + return this.style; + } - return this.style; - } + protected Icon getToggleButtonIcon(boolean isSelected) { + return isSelected ? blackIcon : whiteIcon; + } - protected void setSelectedFont(Style style) { - this.style = StyleUtils.boldReportFont(style); - } + protected void setSelectedFont(Style style) { + this.style = StyleUtils.boldReportFont(style); + } - protected void setUnselectedFont(Style style) { - this.style = StyleUtils.unBoldReportFont(style); - } + protected void setUnselectedFont(Style style) { + this.style = StyleUtils.unBoldReportFont(style); + } - /** - * Update Style. - */ - @Override - public void updateStyle(Style style) { - if (style == null) { - return; - } - FRFont frFont = style.getFRFont(); - if (frFont == null) { - return; - } - createToolBarComponent().setSelected(isStyle(frFont)); - } + /** + * Update Style. + */ + @Override + public void updateStyle(Style style) { + if (style == null) { + return; + } + FRFont frFont = style.getFRFont(); + if (frFont == null) { + return; + } + button = createToolBarComponent(); + button.setSelected(isStyle(frFont)); + button.setIcon(getToggleButtonIcon(!button.isSelected())); + } - protected boolean isStyle(FRFont frFont) { - return frFont.isBold(); - } + protected boolean isStyle(FRFont frFont) { + return frFont.isBold(); + } - /** - * Gets component on toolbar. - * - * @return the created components on toolbar. - */ - @Override - public UIToggleButton createToolBarComponent() { - if (button == null) { - button = GUICoreUtils.createToolBarComponent(this); - button.setEventBannded(true); - } - return button; - } + /** + * Gets component on toolbar. + * + * @return the created components on toolbar. + */ + @Override + public UIToggleButton createToolBarComponent() { + if (button == null) { + button = GUICoreUtils.createToolBarComponent(this); + button.setEventBannded(true); + } + return button; + } } \ No newline at end of file diff --git a/designer/src/com/fr/design/actions/cell/style/ReportFontItalicAction.java b/designer/src/com/fr/design/actions/cell/style/ReportFontItalicAction.java index 1e6c87a1aa..7857cefe8b 100644 --- a/designer/src/com/fr/design/actions/cell/style/ReportFontItalicAction.java +++ b/designer/src/com/fr/design/actions/cell/style/ReportFontItalicAction.java @@ -10,16 +10,21 @@ import com.fr.general.FRFont; import com.fr.general.Inter; import com.fr.design.mainframe.ElementCasePane; +import javax.swing.*; + /** * Bold. */ public class ReportFontItalicAction extends ReportFontBoldAction { - - public ReportFontItalicAction(ElementCasePane t) { + + private final static Icon blackIcon = BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/italic.png"); + private final static Icon whiteIcon = BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/italic_white.png"); + + public ReportFontItalicAction(ElementCasePane t) { super(t); this.setName(Inter.getLocText("FRFont-italic")); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/italic.png")); + this.setSmallIcon(blackIcon); } @@ -31,6 +36,9 @@ public class ReportFontItalicAction extends ReportFontBoldAction { this.style = StyleUtils.unItalicReportFont(style); } + protected Icon getToggleButtonIcon(boolean isSelected) { + return isSelected ? blackIcon : whiteIcon; + } protected boolean isStyle(FRFont frFont) { return frFont.isItalic(); diff --git a/designer/src/com/fr/design/actions/cell/style/ReportFontUnderlineAction.java b/designer/src/com/fr/design/actions/cell/style/ReportFontUnderlineAction.java index e79782abfb..96369867db 100644 --- a/designer/src/com/fr/design/actions/cell/style/ReportFontUnderlineAction.java +++ b/designer/src/com/fr/design/actions/cell/style/ReportFontUnderlineAction.java @@ -11,15 +11,21 @@ import com.fr.general.Inter; import com.fr.design.mainframe.ElementCasePane; import com.fr.stable.Constants; +import javax.swing.*; + /** * Bold. */ public class ReportFontUnderlineAction extends ReportFontBoldAction { - public ReportFontUnderlineAction(ElementCasePane t) { + + private final static Icon blackIcon = BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/underline.png"); + private final static Icon whiteIcon = BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/underline_white.png"); + + public ReportFontUnderlineAction(ElementCasePane t) { super(t); this.setName(Inter.getLocText("FRFont-Underline")); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/underline.png")); + this.setSmallIcon(blackIcon); } protected void setSelectedFont (Style style) { @@ -30,6 +36,9 @@ public class ReportFontUnderlineAction extends ReportFontBoldAction { this.style = StyleUtils.setReportFontUnderline(style, false); } + protected Icon getToggleButtonIcon(boolean isSelected) { + return isSelected ? blackIcon : whiteIcon; + } protected boolean isStyle(FRFont frFont) { return frFont.getUnderline() != Constants.LINE_NONE; diff --git a/designer/src/com/fr/design/actions/edit/HyperlinkAction.java b/designer/src/com/fr/design/actions/edit/HyperlinkAction.java index 38fc9bece5..269d509174 100644 --- a/designer/src/com/fr/design/actions/edit/HyperlinkAction.java +++ b/designer/src/com/fr/design/actions/edit/HyperlinkAction.java @@ -25,5 +25,6 @@ public class HyperlinkAction extends UpdateAction { @Override public void actionPerformed(ActionEvent e) { EastRegionContainerPane.getInstance().switchTabTo(EastRegionContainerPane.KEY_HYPERLINK); + EastRegionContainerPane.getInstance().setWindow2PreferWidth(); } } \ No newline at end of file diff --git a/designer/src/com/fr/design/dscolumn/DSColumnAdvancedPane.java b/designer/src/com/fr/design/dscolumn/DSColumnAdvancedPane.java index 0c3d6f9d70..59fdb2205c 100644 --- a/designer/src/com/fr/design/dscolumn/DSColumnAdvancedPane.java +++ b/designer/src/com/fr/design/dscolumn/DSColumnAdvancedPane.java @@ -1,548 +1,553 @@ -package com.fr.design.dscolumn; - -import com.fr.base.Formula; -import com.fr.data.util.SortOrder; -import com.fr.design.data.DesignTableDataManager; -import com.fr.design.dialog.BasicPane; -import com.fr.design.dialog.DialogActionAdapter; -import com.fr.design.formula.*; -import com.fr.design.gui.ibutton.UIButton; -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.general.Inter; -import com.fr.report.cell.CellElement; -import com.fr.report.cell.TemplateCellElement; -import com.fr.report.cell.cellattr.CellExpandAttr; -import com.fr.report.cell.cellattr.core.group.DSColumn; -import com.fr.report.cell.cellattr.core.group.SelectCount; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -public class DSColumnAdvancedPane extends BasicPane { - - private static final String InsetText = " "; - private SortPane sortPane; - private SelectCountPane selectCountPane; - private ValuePane valuePane; - private UICheckBox horizontalExtendableCheckBox; - private UICheckBox verticalExtendableCheckBox; -// private UICheckBox isCoverCheckBox; - private UICheckBox useMultiplyNumCheckBox; - private UISpinner multiNumSpinner; - - public DSColumnAdvancedPane() { - this(DSColumnPane.SETTING_ALL); - } - - public DSColumnAdvancedPane(int setting) { - this.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - - sortPane = new SortPane(); - sortPane.setBorder(GUICoreUtils.createTitledBorder(Inter.getLocText("Sort-Sort_Order"),null)); - - if (setting > DSColumnPane.SETTING_DSRELATED) { - selectCountPane = new SelectCountPane(); - selectCountPane.setBorder(GUICoreUtils.createTitledBorder(Inter.getLocText("BindColumn-Results_Filter"),null)); - } - - valuePane = new ValuePane(); - valuePane.setBorder(GUICoreUtils.createTitledBorder(Inter.getLocText("BindColumn-Custom_Data_Appearance"),null)); - - - JPanel extendablePane = null; - if (setting > DSColumnPane.SETTING_DSRELATED) { - // extendableDirectionPane - JPanel extendableDirectionPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); - - extendableDirectionPane.add(horizontalExtendableCheckBox = new UICheckBox(Inter.getLocText("ExpandD-Horizontal_Extendable"))); - extendableDirectionPane.add(verticalExtendableCheckBox = new UICheckBox(Inter.getLocText("ExpandD-Vertical_Extendable"))); - - extendablePane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("ExpandD-Expandable")); - extendablePane.setLayout(new BorderLayout()); - extendablePane.add(extendableDirectionPane, BorderLayout.CENTER); - } - - JPanel multiNumPane = null; - if (setting > DSColumnPane.SETTING_DSRELATED) { - multiNumPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("Fill_blank_Data")); - useMultiplyNumCheckBox = new UICheckBox(Inter.getLocText("Column_Multiple")); - multiNumPane.add(useMultiplyNumCheckBox); - multiNumPane.add(new UILabel(InsetText)); - - multiNumSpinner = new UISpinner(1, 10000, 1, 1); - multiNumPane.add(multiNumSpinner); - - useMultiplyNumCheckBox.addActionListener(new ActionListener() { - - public void actionPerformed(ActionEvent e) { - checkButtonEnabled(); - } - }); - } - - double[] rowSize = {TableLayout.PREFERRED, TableLayout.PREFERRED, - TableLayout.PREFERRED, TableLayout.PREFERRED, TableLayout.PREFERRED, TableLayout.PREFERRED}; - double[] columnSize = {TableLayout.FILL}; - - Component[][] components = null; - if (setting > DSColumnPane.SETTING_DSRELATED) { - components = new Component[][]{ - {sortPane}, - {selectCountPane}, - {valuePane}, - {extendablePane}, - {multiNumPane} - }; - } else { - components = new Component[][]{ - {sortPane}, - {valuePane} - }; - } - this.add(TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize), BorderLayout.CENTER); - } - - @Override - protected String title4PopupWindow() { - return Inter.getLocText("Advanced"); - } - - public void populate(TemplateCellElement cellElement) { - if (cellElement == null) { - return; - } - - sortPane.populate(cellElement); - valuePane.populate(cellElement); - - if (selectCountPane != null) { - selectCountPane.populate(cellElement); - - CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr(); - if (cellExpandAttr == null) { - cellExpandAttr = new CellExpandAttr(); - cellElement.setCellExpandAttr(cellExpandAttr); - } - - // extendable - switch (cellExpandAttr.getExtendable()) { - case CellExpandAttr.Both_EXTENDABLE: - horizontalExtendableCheckBox.setSelected(true); - verticalExtendableCheckBox.setSelected(true); - break; - case CellExpandAttr.Vertical_EXTENDABLE: - horizontalExtendableCheckBox.setSelected(false); - verticalExtendableCheckBox.setSelected(true); - break; - case CellExpandAttr.Horizontal_EXTENDABLE: - horizontalExtendableCheckBox.setSelected(true); - verticalExtendableCheckBox.setSelected(false); - break; - default: { - horizontalExtendableCheckBox.setSelected(false); - verticalExtendableCheckBox.setSelected(false); - } - - } - - if (cellExpandAttr.getMultipleNumber() == -1) { - this.useMultiplyNumCheckBox.setSelected(false); - } else { - this.useMultiplyNumCheckBox.setSelected(true); - this.multiNumSpinner.setValue(cellExpandAttr.getMultipleNumber()); - } - - this.checkButtonEnabled(); - } - } - - public void update(TemplateCellElement cellElement) { - if (cellElement == null) { - return; - } - - sortPane.update(cellElement); - valuePane.update(cellElement); - - if (selectCountPane != null) { - selectCountPane.update(cellElement); - - CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr(); - if (cellExpandAttr == null) { - cellExpandAttr = new CellExpandAttr(); - cellElement.setCellExpandAttr(cellExpandAttr); - } - - // extendable - if (horizontalExtendableCheckBox.isSelected()) { - if (verticalExtendableCheckBox.isSelected()) { - cellExpandAttr.setExtendable(CellExpandAttr.Both_EXTENDABLE); - } else { - cellExpandAttr.setExtendable(CellExpandAttr.Horizontal_EXTENDABLE); - } - } else { - if (verticalExtendableCheckBox.isSelected()) { - cellExpandAttr.setExtendable(CellExpandAttr.Vertical_EXTENDABLE); - } else { - cellExpandAttr.setExtendable(CellExpandAttr.None_EXTENDABLE); - } - } - - if (this.useMultiplyNumCheckBox.isSelected()) { - cellExpandAttr.setMultipleNumber((int) this.multiNumSpinner.getValue()); - } else { - cellExpandAttr.setMultipleNumber(-1); - } - } - } - - private static class SortPane extends SortFormulaPane { - private CellElement cellElement; - - @Override - public void formulaAction() { - if (cellElement == null) { - return; - } - Object value = cellElement.getValue(); - if (value == null || !(value instanceof DSColumn)) { - return; - } - - String[] displayNames = DesignTableDataManager.getSelectedColumnNames( - DesignTableDataManager.getEditingTableDataSource(), ((DSColumn) value).getDSName()); - - showFormulaDialog(displayNames); - } - - void populate(CellElement cellElement) { - if (cellElement == null) { - return; - } - this.cellElement = cellElement; - - Object value = cellElement.getValue(); - if (value == null || !(value instanceof DSColumn)) { - return; - } - DSColumn dSColumn = (DSColumn) value; - - int sort = dSColumn.getOrder(); - this.sortOrderComboBox.setSortOrder(new SortOrder(sort)); - - String sortFormula = dSColumn.getSortFormula(); - if (sortFormula != null && sortFormula.length() >= 1) { - sortFormulaTextField.setText(sortFormula); - } else { - sortFormulaTextField.setText(sortFormula); - } - } - - public void update(CellElement cellElement) { - if (cellElement == null) { - return; - } - Object value = cellElement.getValue(); - if (value == null || !(value instanceof DSColumn)) { - return; - } - DSColumn dSColumn = (DSColumn) (cellElement.getValue()); - - dSColumn.setOrder(this.sortOrderComboBox.getSortOrder().getOrder()); - //lance:sort formula - - String sText = null; - if (!(sortFormulaTextField.getText() == null || sortFormulaTextField.getText().trim().equals("") || sortFormulaTextField.getText().trim().equals("$$$"))) { - sText = new String(sortFormulaTextField.getText()); - } - if (!(sText == null || sText.length() < 1)) { - dSColumn.setSortFormula(sText); - } else { - dSColumn.setSortFormula(null); - } - } - } - - private static class SelectCountPane extends JPanel { - - CellElement cellElement; - // private Comparator sortComparator; - private UIComboBox selectCountComboBox; - private JPanel selectCountCardPane; - private UITextField serialTextField; - - JFormulaField topFormulaPane; - JFormulaField bottomFormulaPane; - - public SelectCountPane() { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - - selectCountComboBox = new UIComboBox(new String[]{ - Inter.getLocText("Undefined"), - Inter.getLocText("BindColumn-Top_N"), - Inter.getLocText("BindColumn-Bottom_N"), - Inter.getLocText("Odd"), - Inter.getLocText("Even"), - Inter.getLocText("Specify"),}); - selectCountComboBox.addActionListener(new ActionListener() { - - public void actionPerformed(ActionEvent evt) { - int selectIndex = selectCountComboBox.getSelectedIndex(); - CardLayout c1 = (CardLayout) selectCountCardPane.getLayout(); - if (selectIndex == 1) { - c1.show(selectCountCardPane, "TOP"); - } else if (selectIndex == 2) { - c1.show(selectCountCardPane, "BOTTOM"); - } else if (selectIndex == 3) { - c1.show(selectCountCardPane, "ODD"); - } else if (selectIndex == 4) { - c1.show(selectCountCardPane, "EVEN"); - } else if (selectIndex == 5) { - c1.show(selectCountCardPane, "SPECIFY"); - } else { - c1.show(selectCountCardPane, "UNDEFINE"); - } - } - }); - - selectCountCardPane =FRGUIPaneFactory.createCardLayout_S_Pane(); - this.add(GUICoreUtils.createFlowPane(new JComponent[]{new UILabel(InsetText), selectCountComboBox, - new UILabel(InsetText), selectCountCardPane}, FlowLayout.LEFT), BorderLayout.WEST); -// selectCountCardPane.setLayout(new CardLayout()); - - //not define pane - - JPanel undefinedPane = GUICoreUtils.createFlowPane(new UILabel(Inter.getLocText("Undefined")), FlowLayout.LEFT); - topFormulaPane = new JFormulaField("-1"); - bottomFormulaPane = new JFormulaField("-1"); - serialTextField = new UITextField(18); - JPanel oddPane = GUICoreUtils.createFlowPane(new UILabel(Inter.getLocText("BindColumn-Result_Serial_Number_Start_From_1") - + " " + Inter.getLocText("BindColumn-Odd_Selected_(1,3,5...)")), FlowLayout.LEFT); - JPanel evenPane = GUICoreUtils.createFlowPane(new UILabel(Inter.getLocText("BindColumn-Result_Serial_Number_Start_From_1") - + " " + Inter.getLocText("BindColumn-Even_Selected_(2,4,6...)")), FlowLayout.LEFT); - JPanel specifyPane = GUICoreUtils.createFlowPane(new JComponent[]{ - serialTextField, new UILabel( - Inter.getLocText(new String[]{ - "Format", "BindColumn-Result_Serial_Number_Start_From_1", "Inner_Parameter", "Group_Count"}, - new String[]{": 1,2-3,5,8 ", ",", "$__count__"}) - ) - }, FlowLayout.LEFT); - serialTextField.setToolTipText(Inter.getLocText("StyleFormat-Sample") + ":=JOINARRAY(GREPARRAY(RANGE($__count__), item!=4), \",\")"); - selectCountCardPane.add(undefinedPane, "UNDEFINE"); - selectCountCardPane.add(topFormulaPane, "TOP"); - selectCountCardPane.add(bottomFormulaPane, "BOTTOM"); - //odd - selectCountCardPane.add(oddPane, "ODD"); - //even - selectCountCardPane.add(evenPane, "EVEN"); - //specify - selectCountCardPane.add(specifyPane, "SPECIFY"); - } - - public void populate(CellElement cellElement) { - if (cellElement == null) { - return; - } - this.cellElement = cellElement; - - Object value = cellElement.getValue(); - if (value == null || !(value instanceof DSColumn)) { - return; - } - DSColumn dSColumn = (DSColumn) (cellElement.getValue()); - SelectCount selectCount = dSColumn.getSelectCount(); - this.topFormulaPane.populateElement(cellElement); - this.bottomFormulaPane.populateElement(cellElement); - if (selectCount != null) { - int selectCountType = selectCount.getType(); - this.selectCountComboBox.setSelectedIndex(selectCountType); - if (selectCountType == SelectCount.TOP) { - this.topFormulaPane.populate(selectCount.getFormulaCount()); - } else if (selectCountType == SelectCount.BOTTOM) { - this.bottomFormulaPane.populate(selectCount.getFormulaCount()); - } else if (selectCountType == SelectCount.SPECIFY) { - this.serialTextField.setText(selectCount.getSerial()); - } - } - } - - public void update(CellElement cellElement) { - if (cellElement == null) { - return; - } - Object value = cellElement.getValue(); - if (value == null || !(value instanceof DSColumn)) { - return; - } - DSColumn dSColumn = (DSColumn) (cellElement.getValue()); - - //alex:SelectCount - int selectCountSelectIndex = this.selectCountComboBox.getSelectedIndex(); - if (selectCountSelectIndex == 0) { - dSColumn.setSelectCount(null); - } else { - SelectCount selectCount = new SelectCount(); - dSColumn.setSelectCount(selectCount); - selectCount.setType(selectCountSelectIndex); - if (selectCountSelectIndex == SelectCount.TOP) { - selectCount.setFormulaCount(this.topFormulaPane.getFormulaText()); - } else if (selectCountSelectIndex == SelectCount.BOTTOM) { - selectCount.setFormulaCount(this.bottomFormulaPane.getFormulaText()); - } else if (selectCountSelectIndex == SelectCount.SPECIFY) { - selectCount.setSerial(this.serialTextField.getText()); - } - } - } - - private JFormattedTextField getTextField(JSpinner spinner) { - JComponent editor = spinner.getEditor(); - if (editor instanceof JSpinner.DefaultEditor) { - return ((JSpinner.DefaultEditor) editor).getTextField(); - } else { - System.err.println("Unexpected editor type: " - + spinner.getEditor().getClass() - + " isn't a descendant of DefaultEditor"); - return null; - } - } - } - - private static class JFormulaField extends JPanel { - private CellElement cellElement; - private UITextField formulaTextField; - private String defaultValue; - - public JFormulaField(String defaultValue) { - this.defaultValue = defaultValue; - - this.setLayout(FRGUIPaneFactory.createBoxFlowLayout()); - UILabel bottomLabel = new UILabel("="); - bottomLabel.setFont(new Font("Dialog", Font.BOLD, 12)); - this.add(bottomLabel); - formulaTextField = new UITextField(24); - this.add(formulaTextField); - formulaTextField.setText(defaultValue); - - UIButton bottomFrmulaButton = new UIButton("..."); - this.add(bottomFrmulaButton); - bottomFrmulaButton.setToolTipText(Inter.getLocText("Formula") + "..."); - bottomFrmulaButton.setPreferredSize(new Dimension(25, formulaTextField.getPreferredSize().height)); - bottomFrmulaButton.addActionListener(formulaButtonActionListener); - } - - public void populate(String formulaContent) { - this.formulaTextField.setText(formulaContent); - } - public void populateElement(CellElement cellElement) { - this.cellElement = cellElement; - } - - public String getFormulaText() { - return this.formulaTextField.getText(); - } - - private ActionListener formulaButtonActionListener = new ActionListener() { - - public void actionPerformed(ActionEvent evt) { - Formula valueFormula = new Formula(); - String text = formulaTextField.getText(); - if (text == null || text.length() <= 0) { - valueFormula.setContent(defaultValue); - } else { - valueFormula.setContent(text); - } - - final UIFormula formulaPane = FormulaFactory.createFormulaPaneWhenReserveFormula(); - - if (cellElement == null) { - return; - } - Object value = cellElement.getValue(); - if (value == null || !(value instanceof DSColumn)) { - return; - } - DSColumn dsColumn = (DSColumn) value; - - String[] displayNames = DesignTableDataManager.getSelectedColumnNames(DesignTableDataManager.getEditingTableDataSource(), dsColumn.getDSName()); - - formulaPane.populate(valueFormula, new CustomVariableResolver(displayNames, true)); - formulaPane.showLargeWindow(SwingUtilities.getWindowAncestor(JFormulaField.this), new DialogActionAdapter() { - @Override - public void doOk() { - Formula valueFormula = formulaPane.update(); - if (valueFormula.getContent().length() <= 1) { - formulaTextField.setText(defaultValue); - } else { - formulaTextField.setText(valueFormula.getContent().substring(1)); - } - } - }).setVisible(true); - } - }; - } - - private static class ValuePane extends JPanel { - private JFormulaField formulaField; - - public ValuePane() { - this.setLayout(FRGUIPaneFactory.createBoxFlowLayout()); - - this.add(new UILabel(InsetText + Inter.getLocText("Value") + ":")); - this.add(Box.createHorizontalStrut(2)); - this.add((formulaField = new JFormulaField("$$$"))); - } - - public void populate(CellElement cellElement) { - if (cellElement == null) { - return; - } - - Object value = cellElement.getValue(); - if (value == null || !(value instanceof DSColumn)) { - return; - } - DSColumn dSColumn = (DSColumn) value; - - //formula - String valueFormula = dSColumn.getResult(); - if (valueFormula == null) { - valueFormula = "$$$"; - } - formulaField.populateElement(cellElement); - formulaField.populate(valueFormula); - } - - public void update(CellElement cellElement) { - if (cellElement == null) { - return; - } - Object value = cellElement.getValue(); - if (value == null || !(value instanceof DSColumn)) { - return; - } - DSColumn dSColumn = (DSColumn) (cellElement.getValue()); - - //formula - dSColumn.setResult(this.formulaField.getFormulaText()); - } - } - - private void checkButtonEnabled() { - if (useMultiplyNumCheckBox.isSelected()) { - multiNumSpinner.setEnabled(true); - } else { - multiNumSpinner.setEnabled(false); - } - } +package com.fr.design.dscolumn; + +import com.fr.base.Formula; +import com.fr.data.util.SortOrder; +import com.fr.design.data.DesignTableDataManager; +import com.fr.design.dialog.BasicPane; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.formula.CustomVariableResolver; +import com.fr.design.formula.FormulaFactory; +import com.fr.design.formula.SortFormulaPane; +import com.fr.design.formula.UIFormula; +import com.fr.design.gui.ibutton.UIButton; +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.general.Inter; +import com.fr.report.cell.CellElement; +import com.fr.report.cell.TemplateCellElement; +import com.fr.report.cell.cellattr.CellExpandAttr; +import com.fr.report.cell.cellattr.core.group.DSColumn; +import com.fr.report.cell.cellattr.core.group.SelectCount; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import static com.fr.report.cell.cellattr.core.group.FilterTypeEnum.*; + +public class DSColumnAdvancedPane extends BasicPane { + + private static final String InsetText = " "; + private SortPane sortPane; + private SelectCountPane selectCountPane; + private ValuePane valuePane; + private UICheckBox horizontalExtendableCheckBox; + private UICheckBox verticalExtendableCheckBox; + private UICheckBox useMultiplyNumCheckBox; + private UISpinner multiNumSpinner; + + public DSColumnAdvancedPane() { + this(DSColumnPane.SETTING_ALL); + } + + public DSColumnAdvancedPane(int setting) { + this.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + + sortPane = new SortPane(); + sortPane.setBorder(GUICoreUtils.createTitledBorder(Inter.getLocText("Sort-Sort_Order"), null)); + + if (setting > DSColumnPane.SETTING_DSRELATED) { + selectCountPane = new SelectCountPane(); + selectCountPane.setBorder(GUICoreUtils.createTitledBorder(Inter.getLocText("BindColumn-Results_Filter"), null)); + } + + valuePane = new ValuePane(); + valuePane.setBorder(GUICoreUtils.createTitledBorder(Inter.getLocText("BindColumn-Custom_Data_Appearance"), null)); + + + JPanel extendablePane = null; + if (setting > DSColumnPane.SETTING_DSRELATED) { + // extendableDirectionPane + JPanel extendableDirectionPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + + extendableDirectionPane.add(horizontalExtendableCheckBox = new UICheckBox(Inter.getLocText("ExpandD-Horizontal_Extendable"))); + extendableDirectionPane.add(verticalExtendableCheckBox = new UICheckBox(Inter.getLocText("ExpandD-Vertical_Extendable"))); + + extendablePane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("ExpandD-Expandable")); + extendablePane.setLayout(new BorderLayout()); + extendablePane.add(extendableDirectionPane, BorderLayout.CENTER); + } + + JPanel multiNumPane = null; + if (setting > DSColumnPane.SETTING_DSRELATED) { + multiNumPane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("Fill_blank_Data")); + useMultiplyNumCheckBox = new UICheckBox(Inter.getLocText("Column_Multiple")); + multiNumPane.add(useMultiplyNumCheckBox); + multiNumPane.add(new UILabel(InsetText)); + + multiNumSpinner = new UISpinner(1, 10000, 1, 1); + multiNumPane.add(multiNumSpinner); + + useMultiplyNumCheckBox.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + checkButtonEnabled(); + } + }); + } + + double[] rowSize = {TableLayout.PREFERRED, TableLayout.PREFERRED, + TableLayout.PREFERRED, TableLayout.PREFERRED, TableLayout.PREFERRED, TableLayout.PREFERRED}; + double[] columnSize = {TableLayout.FILL}; + + Component[][] components = null; + if (setting > DSColumnPane.SETTING_DSRELATED) { + components = new Component[][]{ + {sortPane}, + {selectCountPane}, + {valuePane}, + {extendablePane}, + {multiNumPane} + }; + } else { + components = new Component[][]{ + {sortPane}, + {valuePane} + }; + } + this.add(TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize), BorderLayout.CENTER); + } + + @Override + protected String title4PopupWindow() { + return Inter.getLocText("Advanced"); + } + + public void populate(TemplateCellElement cellElement) { + if (cellElement == null) { + return; + } + + sortPane.populate(cellElement); + valuePane.populate(cellElement); + + if (selectCountPane != null) { + selectCountPane.populate(cellElement); + + CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr(); + if (cellExpandAttr == null) { + cellExpandAttr = new CellExpandAttr(); + cellElement.setCellExpandAttr(cellExpandAttr); + } + + // extendable + switch (cellExpandAttr.getExtendable()) { + case CellExpandAttr.Both_EXTENDABLE: + horizontalExtendableCheckBox.setSelected(true); + verticalExtendableCheckBox.setSelected(true); + break; + case CellExpandAttr.Vertical_EXTENDABLE: + horizontalExtendableCheckBox.setSelected(false); + verticalExtendableCheckBox.setSelected(true); + break; + case CellExpandAttr.Horizontal_EXTENDABLE: + horizontalExtendableCheckBox.setSelected(true); + verticalExtendableCheckBox.setSelected(false); + break; + default: { + horizontalExtendableCheckBox.setSelected(false); + verticalExtendableCheckBox.setSelected(false); + } + + } + + if (cellExpandAttr.getMultipleNumber() == -1) { + this.useMultiplyNumCheckBox.setSelected(false); + } else { + this.useMultiplyNumCheckBox.setSelected(true); + this.multiNumSpinner.setValue(cellExpandAttr.getMultipleNumber()); + } + + this.checkButtonEnabled(); + } + } + + public void update(TemplateCellElement cellElement) { + if (cellElement == null) { + return; + } + + sortPane.update(cellElement); + valuePane.update(cellElement); + + if (selectCountPane != null) { + selectCountPane.update(cellElement); + + CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr(); + if (cellExpandAttr == null) { + cellExpandAttr = new CellExpandAttr(); + cellElement.setCellExpandAttr(cellExpandAttr); + } + + // extendable + if (horizontalExtendableCheckBox.isSelected()) { + if (verticalExtendableCheckBox.isSelected()) { + cellExpandAttr.setExtendable(CellExpandAttr.Both_EXTENDABLE); + } else { + cellExpandAttr.setExtendable(CellExpandAttr.Horizontal_EXTENDABLE); + } + } else { + if (verticalExtendableCheckBox.isSelected()) { + cellExpandAttr.setExtendable(CellExpandAttr.Vertical_EXTENDABLE); + } else { + cellExpandAttr.setExtendable(CellExpandAttr.None_EXTENDABLE); + } + } + + if (this.useMultiplyNumCheckBox.isSelected()) { + cellExpandAttr.setMultipleNumber((int) this.multiNumSpinner.getValue()); + } else { + cellExpandAttr.setMultipleNumber(-1); + } + } + } + + private static class SortPane extends SortFormulaPane { + private CellElement cellElement; + + @Override + public void formulaAction() { + if (cellElement == null) { + return; + } + Object value = cellElement.getValue(); + if (value == null || !(value instanceof DSColumn)) { + return; + } + + String[] displayNames = DesignTableDataManager.getSelectedColumnNames( + DesignTableDataManager.getEditingTableDataSource(), ((DSColumn) value).getDSName()); + + showFormulaDialog(displayNames); + } + + void populate(CellElement cellElement) { + if (cellElement == null) { + return; + } + this.cellElement = cellElement; + + Object value = cellElement.getValue(); + if (value == null || !(value instanceof DSColumn)) { + return; + } + DSColumn dSColumn = (DSColumn) value; + + int sort = dSColumn.getOrder(); + this.sortOrderComboBox.setSortOrder(new SortOrder(sort)); + + String sortFormula = dSColumn.getSortFormula(); + if (sortFormula != null && sortFormula.length() >= 1) { + sortFormulaTextField.setText(sortFormula); + } else { + sortFormulaTextField.setText(sortFormula); + } + } + + public void update(CellElement cellElement) { + if (cellElement == null) { + return; + } + Object value = cellElement.getValue(); + if (value == null || !(value instanceof DSColumn)) { + return; + } + DSColumn dSColumn = (DSColumn) (cellElement.getValue()); + + dSColumn.setOrder(this.sortOrderComboBox.getSortOrder().getOrder()); + //lance:sort formula + + String sText = null; + if (!(sortFormulaTextField.getText() == null || sortFormulaTextField.getText().trim().equals("") || sortFormulaTextField.getText().trim().equals("$$$"))) { + sText = new String(sortFormulaTextField.getText()); + } + if (!(sText == null || sText.length() < 1)) { + dSColumn.setSortFormula(sText); + } else { + dSColumn.setSortFormula(null); + } + } + } + + private static class SelectCountPane extends JPanel { + + CellElement cellElement; + // private Comparator sortComparator; + private UIComboBox selectCountComboBox; + private JPanel selectCountCardPane; + private UITextField serialTextField; + + JFormulaField topFormulaPane; + JFormulaField bottomFormulaPane; + + public SelectCountPane() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + + selectCountComboBox = new UIComboBox(new String[]{ + Inter.getLocText("Undefined"), + Inter.getLocText("BindColumn-Top_N"), + Inter.getLocText("BindColumn-Bottom_N"), + Inter.getLocText("Odd"), + Inter.getLocText("Even"), + Inter.getLocText("Specify"),}); + selectCountComboBox.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent evt) { + int selectIndex = selectCountComboBox.getSelectedIndex(); + CardLayout c1 = (CardLayout) selectCountCardPane.getLayout(); + if (selectIndex == 1) { + c1.show(selectCountCardPane, "TOP"); + } else if (selectIndex == 2) { + c1.show(selectCountCardPane, "BOTTOM"); + } else if (selectIndex == 3) { + c1.show(selectCountCardPane, "ODD"); + } else if (selectIndex == 4) { + c1.show(selectCountCardPane, "EVEN"); + } else if (selectIndex == 5) { + c1.show(selectCountCardPane, "SPECIFY"); + } else { + c1.show(selectCountCardPane, "UNDEFINE"); + } + } + }); + + selectCountCardPane = FRGUIPaneFactory.createCardLayout_S_Pane(); + this.add(GUICoreUtils.createFlowPane(new JComponent[]{new UILabel(InsetText), selectCountComboBox, + new UILabel(InsetText), selectCountCardPane}, FlowLayout.LEFT), BorderLayout.WEST); +// selectCountCardPane.setLayout(new CardLayout()); + + //not define pane + + JPanel undefinedPane = GUICoreUtils.createFlowPane(new UILabel(Inter.getLocText("Undefined")), FlowLayout.LEFT); + topFormulaPane = new JFormulaField("-1"); + bottomFormulaPane = new JFormulaField("-1"); + serialTextField = new UITextField(18); + JPanel oddPane = GUICoreUtils.createFlowPane(new UILabel(Inter.getLocText("BindColumn-Result_Serial_Number_Start_From_1") + + " " + Inter.getLocText("BindColumn-Odd_Selected_(1,3,5...)")), FlowLayout.LEFT); + JPanel evenPane = GUICoreUtils.createFlowPane(new UILabel(Inter.getLocText("BindColumn-Result_Serial_Number_Start_From_1") + + " " + Inter.getLocText("BindColumn-Even_Selected_(2,4,6...)")), FlowLayout.LEFT); + JPanel specifyPane = GUICoreUtils.createFlowPane(new JComponent[]{ + serialTextField, new UILabel( + Inter.getLocText(new String[]{ + "Format", "BindColumn-Result_Serial_Number_Start_From_1", "Inner_Parameter", "Group_Count"}, + new String[]{": 1,2-3,5,8 ", ",", "$__count__"}) + ) + }, FlowLayout.LEFT); + serialTextField.setToolTipText(Inter.getLocText("StyleFormat-Sample") + ":=JOINARRAY(GREPARRAY(RANGE($__count__), item!=4), \",\")"); + selectCountCardPane.add(undefinedPane, "UNDEFINE"); + selectCountCardPane.add(topFormulaPane, "TOP"); + selectCountCardPane.add(bottomFormulaPane, "BOTTOM"); + //odd + selectCountCardPane.add(oddPane, "ODD"); + //even + selectCountCardPane.add(evenPane, "EVEN"); + //specify + selectCountCardPane.add(specifyPane, "SPECIFY"); + } + + public void populate(CellElement cellElement) { + if (cellElement == null) { + return; + } + this.cellElement = cellElement; + + Object value = cellElement.getValue(); + if (value == null || !(value instanceof DSColumn)) { + return; + } + DSColumn dSColumn = (DSColumn) (cellElement.getValue()); + SelectCount selectCount = dSColumn.getSelectCount(); + this.topFormulaPane.populateElement(cellElement); + this.bottomFormulaPane.populateElement(cellElement); + if (selectCount != null) { + int selectCountType = selectCount.getType(); + this.selectCountComboBox.setSelectedIndex(selectCountType); + if (selectCountType == TOP.getValue()) { + this.topFormulaPane.populate(selectCount.getFormulaCount()); + } else if (selectCountType == BOTTOM.getValue()) { + this.bottomFormulaPane.populate(selectCount.getFormulaCount()); + } else if (selectCountType == SPECIFY.getValue()) { + this.serialTextField.setText(selectCount.getSerial()); + } + } + } + + public void update(CellElement cellElement) { + if (cellElement == null) { + return; + } + Object value = cellElement.getValue(); + if (value == null || !(value instanceof DSColumn)) { + return; + } + DSColumn dSColumn = (DSColumn) (cellElement.getValue()); + + //alex:SelectCount + int selectCountSelectIndex = this.selectCountComboBox.getSelectedIndex(); + if (selectCountSelectIndex == 0) { + dSColumn.setSelectCount(null); + } else { + SelectCount selectCount = new SelectCount(); + dSColumn.setSelectCount(selectCount); + selectCount.setType(selectCountSelectIndex); + if (selectCountSelectIndex == TOP.getValue()) { + selectCount.setFormulaCount(this.topFormulaPane.getFormulaText()); + } else if (selectCountSelectIndex == BOTTOM.getValue()) { + selectCount.setFormulaCount(this.bottomFormulaPane.getFormulaText()); + } else if (selectCountSelectIndex == SPECIFY.getValue()) { + selectCount.setSerial(this.serialTextField.getText()); + } + } + } + + private JFormattedTextField getTextField(JSpinner spinner) { + JComponent editor = spinner.getEditor(); + if (editor instanceof JSpinner.DefaultEditor) { + return ((JSpinner.DefaultEditor) editor).getTextField(); + } else { + System.err.println("Unexpected editor type: " + + spinner.getEditor().getClass() + + " isn't a descendant of DefaultEditor"); + return null; + } + } + } + + private static class JFormulaField extends JPanel { + private CellElement cellElement; + private UITextField formulaTextField; + private String defaultValue; + + public JFormulaField(String defaultValue) { + this.defaultValue = defaultValue; + + this.setLayout(FRGUIPaneFactory.createBoxFlowLayout()); + UILabel bottomLabel = new UILabel("="); + bottomLabel.setFont(new Font("Dialog", Font.BOLD, 12)); + this.add(bottomLabel); + formulaTextField = new UITextField(24); + this.add(formulaTextField); + formulaTextField.setText(defaultValue); + + UIButton bottomFrmulaButton = new UIButton("..."); + this.add(bottomFrmulaButton); + bottomFrmulaButton.setToolTipText(Inter.getLocText("Formula") + "..."); + bottomFrmulaButton.setPreferredSize(new Dimension(25, formulaTextField.getPreferredSize().height)); + bottomFrmulaButton.addActionListener(formulaButtonActionListener); + } + + public void populate(String formulaContent) { + this.formulaTextField.setText(formulaContent); + } + + public void populateElement(CellElement cellElement) { + this.cellElement = cellElement; + } + + public String getFormulaText() { + return this.formulaTextField.getText(); + } + + private ActionListener formulaButtonActionListener = new ActionListener() { + + public void actionPerformed(ActionEvent evt) { + Formula valueFormula = new Formula(); + String text = formulaTextField.getText(); + if (text == null || text.length() <= 0) { + valueFormula.setContent(defaultValue); + } else { + valueFormula.setContent(text); + } + + final UIFormula formulaPane = FormulaFactory.createFormulaPaneWhenReserveFormula(); + + if (cellElement == null) { + return; + } + Object value = cellElement.getValue(); + if (value == null || !(value instanceof DSColumn)) { + return; + } + DSColumn dsColumn = (DSColumn) value; + + String[] displayNames = DesignTableDataManager.getSelectedColumnNames(DesignTableDataManager.getEditingTableDataSource(), dsColumn.getDSName()); + + formulaPane.populate(valueFormula, new CustomVariableResolver(displayNames, true)); + formulaPane.showLargeWindow(SwingUtilities.getWindowAncestor(JFormulaField.this), new DialogActionAdapter() { + @Override + public void doOk() { + Formula valueFormula = formulaPane.update(); + if (valueFormula.getContent().length() <= 1) { + formulaTextField.setText(defaultValue); + } else { + formulaTextField.setText(valueFormula.getContent().substring(1)); + } + } + }).setVisible(true); + } + }; + } + + private static class ValuePane extends JPanel { + private JFormulaField formulaField; + + public ValuePane() { + this.setLayout(FRGUIPaneFactory.createBoxFlowLayout()); + + this.add(new UILabel(InsetText + Inter.getLocText("Value") + ":")); + this.add(Box.createHorizontalStrut(2)); + this.add((formulaField = new JFormulaField("$$$"))); + } + + public void populate(CellElement cellElement) { + if (cellElement == null) { + return; + } + + Object value = cellElement.getValue(); + if (value == null || !(value instanceof DSColumn)) { + return; + } + DSColumn dSColumn = (DSColumn) value; + + //formula + String valueFormula = dSColumn.getResult(); + if (valueFormula == null) { + valueFormula = "$$$"; + } + formulaField.populateElement(cellElement); + formulaField.populate(valueFormula); + } + + public void update(CellElement cellElement) { + if (cellElement == null) { + return; + } + Object value = cellElement.getValue(); + if (value == null || !(value instanceof DSColumn)) { + return; + } + DSColumn dSColumn = (DSColumn) (cellElement.getValue()); + + //formula + dSColumn.setResult(this.formulaField.getFormulaText()); + } + } + + private void checkButtonEnabled() { + if (useMultiplyNumCheckBox.isSelected()) { + multiNumSpinner.setEnabled(true); + } else { + multiNumSpinner.setEnabled(false); + } + } } \ No newline at end of file diff --git a/designer/src/com/fr/design/dscolumn/ResultSetGroupDockingPane.java b/designer/src/com/fr/design/dscolumn/ResultSetGroupDockingPane.java index da32086d9f..61ac3bd361 100644 --- a/designer/src/com/fr/design/dscolumn/ResultSetGroupDockingPane.java +++ b/designer/src/com/fr/design/dscolumn/ResultSetGroupDockingPane.java @@ -23,7 +23,7 @@ import java.awt.event.ItemListener; * 这个pane是选中数据列后,在上方QuickRegion处显示的pane * * @author zhou, yaoh.wu - * @version 2017年8月2日14点55分 + * @version 2017年9月26日17点22分 * @since 8.0 */ public class ResultSetGroupDockingPane extends ResultSetGroupPane { @@ -70,7 +70,6 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane { cardLayout.show(cardPane, "groupPane"); cardPane.setPreferredSize(new Dimension(158, 20)); TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, 10); - checkButtonEnabled(); } else if (i == BIND_SELECTED) { cardLayout.show(cardPane, "listPane"); cardPane.setPreferredSize(new Dimension(0, 0)); @@ -81,8 +80,8 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane { TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, 10); CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr(); cellExpandAttr.setDirection(Constants.NONE); - checkButtonEnabled(); } + checkButtonEnabled(); } }); @@ -116,13 +115,13 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane { @Override public void populate(TemplateCellElement cellElement) { + //更新面板信息时可能会触发绑定在组件上的事件,先移除这些事件 + this.removeListener(); this.cellElement = cellElement; - - if (isNPE(cellElement)) return; + if (isNPE(cellElement)) { + return; + } DSColumn dSColumn = (DSColumn) cellElement.getValue(); - - // populate groupPane - // RecordGrouper recordGrouper = dSColumn.getGrouper(); if (recordGrouper instanceof FunctionGrouper && !((FunctionGrouper) recordGrouper).isCustom()) { int mode = recordGrouper.getDivideMode(); @@ -154,13 +153,16 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane { this.groupComboBox.setSelectedIndex(ADVANCED); } checkButtonEnabled(); + //加上面板组件的交互事件监听 + this.addListener(); } @Override public void update() { - if (isNPE(cellElement)) return; + if (isNPE(cellElement)) { + return; + } DSColumn dSColumn = (DSColumn) cellElement.getValue(); - if (this.goBox.getSelectedIndex() == BIND_GROUP) { recordGrouper = updateGroupCombox(); } else if (this.goBox.getSelectedIndex() == BIND_SELECTED) { @@ -194,17 +196,21 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane { cardPane.setPreferredSize(new Dimension(158, 50)); cardPane.revalidate(); cardPane.repaint(); - } else { + return; + } + if (groupComboBox.isEnabled() || functionComboBox.isEnabled()) { cardPane.setPreferredSize(new Dimension(158, 20)); cardPane.revalidate(); cardPane.repaint(); + return; } + cardPane.setPreferredSize(new Dimension(158, 0)); + cardPane.revalidate(); + cardPane.repaint(); } - public void addListener(ItemListener listener) { - goBox.addItemListener(listener); - groupComboBox.addItemListener(listener); - functionComboBox.addItemListener(listener); + + public void setListener(ItemListener listener) { this.listener = listener; } @@ -216,4 +222,16 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane { public void setRecordGrouper(RecordGrouper recordGrouper) { this.recordGrouper = recordGrouper; } + + private void addListener() { + goBox.addItemListener(this.listener); + groupComboBox.addItemListener(this.listener); + functionComboBox.addItemListener(this.listener); + } + + private void removeListener() { + goBox.removeItemListener(this.listener); + groupComboBox.removeItemListener(this.listener); + functionComboBox.removeItemListener(this.listener); + } } \ No newline at end of file diff --git a/designer/src/com/fr/design/expand/SortExpandAttrPane.java b/designer/src/com/fr/design/expand/SortExpandAttrPane.java index d346dd890c..11260c74b4 100644 --- a/designer/src/com/fr/design/expand/SortExpandAttrPane.java +++ b/designer/src/com/fr/design/expand/SortExpandAttrPane.java @@ -24,11 +24,11 @@ public class SortExpandAttrPane extends JPanel { public SortExpandAttrPane() { this.setLayout(new BorderLayout(0, 4)); - Icon[] iconArray = { - BaseUtils.readIcon("/com/fr/design/images/expand/none16x16.png"), - BaseUtils.readIcon("/com/fr/design/images/expand/asc.png"), - BaseUtils.readIcon("/com/fr/design/images/expand/des.png") - }; + Icon[][] iconArray = { + {BaseUtils.readIcon("/com/fr/design/images/expand/none16x16.png"), BaseUtils.readIcon("/com/fr/design/images/expand/none16x16_selected@1x.png")}, + {BaseUtils.readIcon("/com/fr/design/images/expand/asc.png"), BaseUtils.readIcon("/com/fr/design/images/expand/asc_selected.png")}, + {BaseUtils.readIcon("/com/fr/design/images/expand/des.png"), BaseUtils.readIcon("/com/fr/design/images/expand/des_selected.png")} + }; String[] nameArray = { Inter.getLocText("Sort-Original"), Inter.getLocText("Sort-Ascending"), Inter.getLocText("Sort-Descending") }; sort_type_pane = new UIButtonGroup(iconArray); sort_type_pane.setAllToolTips(nameArray); diff --git a/designer/src/com/fr/design/mainframe/ElementCasePane.java b/designer/src/com/fr/design/mainframe/ElementCasePane.java index 94fdcead8f..0445b09877 100644 --- a/designer/src/com/fr/design/mainframe/ElementCasePane.java +++ b/designer/src/com/fr/design/mainframe/ElementCasePane.java @@ -3,34 +3,7 @@ */ package com.fr.design.mainframe; -import java.awt.AWTEvent; -import java.awt.Adjustable; -import java.awt.Dimension; -import java.awt.Image; -import java.awt.Rectangle; -import java.awt.datatransfer.Clipboard; -import java.awt.datatransfer.DataFlavor; -import java.awt.datatransfer.Transferable; -import java.awt.event.*; -import java.lang.reflect.Constructor; -import java.util.Set; - -import javax.swing.AbstractAction; -import javax.swing.ActionMap; -import javax.swing.Icon; -import javax.swing.InputMap; -import javax.swing.JComponent; -import javax.swing.JPanel; -import javax.swing.JPopupMenu; -import javax.swing.JScrollBar; -import javax.swing.KeyStroke; - -import com.fr.base.BaseUtils; -import com.fr.base.DynamicUnitList; -import com.fr.base.FRContext; -import com.fr.base.Formula; -import com.fr.base.ScreenResolution; -import com.fr.base.Style; +import com.fr.base.*; import com.fr.design.DesignState; import com.fr.design.DesignerEnvManager; import com.fr.design.ExtraDesignClassManager; @@ -39,30 +12,8 @@ import com.fr.design.actions.ExitAuthorityEditAction; import com.fr.design.actions.UpdateAction; import com.fr.design.actions.cell.BorderAction; import com.fr.design.actions.cell.CleanAuthorityAction; -import com.fr.design.actions.cell.style.AlignmentAction; -import com.fr.design.actions.cell.style.ReportFontBoldAction; -import com.fr.design.actions.cell.style.ReportFontForegroundAction; -import com.fr.design.actions.cell.style.ReportFontItalicAction; -import com.fr.design.actions.cell.style.ReportFontNameAction; -import com.fr.design.actions.cell.style.ReportFontSizeAction; -import com.fr.design.actions.cell.style.ReportFontUnderlineAction; -import com.fr.design.actions.cell.style.StyleBackgroundAction; -import com.fr.design.actions.columnrow.CancelColumnAction; -import com.fr.design.actions.columnrow.CancelRowAction; -import com.fr.design.actions.columnrow.ColumnHideAction; -import com.fr.design.actions.columnrow.ColumnWidthAction; -import com.fr.design.actions.columnrow.DeleteColumnAction; -import com.fr.design.actions.columnrow.DeleteRowAction; -import com.fr.design.actions.columnrow.FootColumnAction; -import com.fr.design.actions.columnrow.FootRowAction; -import com.fr.design.actions.columnrow.HeadColumnAction; -import com.fr.design.actions.columnrow.HeadRowAction; -import com.fr.design.actions.columnrow.InsertColumnAction; -import com.fr.design.actions.columnrow.InsertRowAction; -import com.fr.design.actions.columnrow.ResetColumnHideAction; -import com.fr.design.actions.columnrow.ResetRowHideAction; -import com.fr.design.actions.columnrow.RowHeightAction; -import com.fr.design.actions.columnrow.RowHideAction; +import com.fr.design.actions.cell.style.*; +import com.fr.design.actions.columnrow.*; import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.edit.CopyAction; import com.fr.design.actions.edit.CutAction; @@ -74,6 +25,7 @@ import com.fr.design.cell.clipboard.CellElementsClip; import com.fr.design.cell.clipboard.ElementsTransferable; import com.fr.design.cell.clipboard.FloatElementsClip; import com.fr.design.cell.editor.*; +import com.fr.design.cell.editor.CellEditor; import com.fr.design.constants.UIConstants; import com.fr.design.designer.EditingState; import com.fr.design.designer.TargetComponent; @@ -83,11 +35,7 @@ import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.imenu.UIPopupMenu; import com.fr.design.mainframe.cell.QuickEditorRegion; import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; -import com.fr.design.menu.KeySetUtils; -import com.fr.design.menu.MenuDef; -import com.fr.design.menu.NameSeparator; -import com.fr.design.menu.ShortCut; -import com.fr.design.menu.ToolBarDef; +import com.fr.design.menu.*; import com.fr.design.selection.QuickEditor; import com.fr.design.selection.Selectedable; import com.fr.design.selection.SelectionEvent; @@ -95,11 +43,7 @@ import com.fr.design.selection.SelectionListener; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.Inter; -import com.fr.grid.Grid; -import com.fr.grid.GridColumn; -import com.fr.grid.GridCorner; -import com.fr.grid.GridRow; -import com.fr.grid.GridUtils; +import com.fr.grid.*; import com.fr.grid.dnd.ElementCasePaneDropTarget; import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.Selection; @@ -119,9 +63,17 @@ import com.fr.report.elementcase.ElementCase; import com.fr.report.elementcase.TemplateElementCase; import com.fr.stable.ArrayUtils; import com.fr.stable.ColumnRow; -import com.fr.stable.Constants; import com.fr.stable.unit.FU; +import javax.swing.*; +import java.awt.*; +import java.awt.datatransfer.Clipboard; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.awt.event.*; +import java.lang.reflect.Constructor; +import java.util.Set; + import static com.fr.design.gui.syntax.ui.rtextarea.RTADefaultInputMap.DEFAULT_MODIFIER; /** @@ -186,7 +138,7 @@ public abstract class ElementCasePane extends Tar /** * Constructor. */ - public ElementCasePane(T t) { + public ElementCasePane(T t) { super(t); // marks:能触发processEvent,不管是否给component增加listener。这里是使在reportPane中的任意位置滑动鼠标轮都能 // 下拉grid。 @@ -209,7 +161,7 @@ public abstract class ElementCasePane extends Tar this.setLayout(new RGridLayout()); //todo 直接修改分辨率 - if (this.resolution == 0){ + if (this.resolution == 0) { this.resolution = ScreenResolution.getScreenResolution(); } @@ -243,7 +195,6 @@ public abstract class ElementCasePane extends Tar } - public int getMenuState() { return DesignState.WORK_SHEET; } @@ -294,8 +245,8 @@ public abstract class ElementCasePane extends Tar setFormatState(DesignerContext.FORMAT_STATE_NULL); formatBrush.setSelected(false); grid.setCursor(UIConstants.CELL_DEFAULT_CURSOR); - if(DesignerContext.getReferencedElementCasePane() == null){ - return; + if (DesignerContext.getReferencedElementCasePane() == null) { + return; } ((ElementCasePane) DesignerContext.getReferencedElementCasePane()).getGrid().setNotShowingTableSelectPane(true); @@ -348,11 +299,11 @@ public abstract class ElementCasePane extends Tar } - public void setResolution(int resolution){ + public void setResolution(int resolution) { this.resolution = resolution; } - public int getResolution(){ + public int getResolution() { return this.resolution; } @@ -390,7 +341,6 @@ public abstract class ElementCasePane extends Tar grid.setDefaultFloatEditor(Image.class, new ImageFloatEditor()); DesignerEnvManager designerEnvManager = DesignerEnvManager.getEnvManager(); - grid.setGridLineColor(designerEnvManager.getGridLineColor()); grid.setPaginationLineColor(designerEnvManager.getPaginationLineColor()); } @@ -1150,7 +1100,7 @@ public abstract class ElementCasePane extends Tar HeadColumnAction headcolumnAction = new HeadColumnAction(this); FootColumnAction footcolumnAction = new FootColumnAction(this); - ColumnRow selectedCellPoint = GridUtils.getAdjustEventColumnRow_withresolution(this, evt.getX(), evt.getY(),this.resolution); + ColumnRow selectedCellPoint = GridUtils.getAdjustEventColumnRow_withresolution(this, evt.getX(), evt.getY(), this.resolution); ElementCase elementCase = this.getEditingElementCase(); boolean cancel = false; ReportPageAttrProvider reportPageAttr = elementCase.getReportPageAttr(); @@ -1268,11 +1218,7 @@ public abstract class ElementCasePane extends Tar protected ToolBarDef createAlignmentToolBar() { return ShortCut.asToolBarDef(new ShortCut[]{ - new AlignmentAction(this, new Icon[]{ - BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/h_left_normal.png"), - BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/h_center_normal.png"), - BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/h_right_normal.png")}, - new Integer[]{Constants.LEFT, Constants.CENTER, Constants.RIGHT})} + new AlignmentAction(this)} ); } diff --git a/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java b/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java index 556b5d59e1..bbc87fa78c 100644 --- a/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java +++ b/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java @@ -50,18 +50,22 @@ public class ElementCasePaneDelegate extends ElementCasePane { if (!isEditable() && !BaseUtils.isAuthorityEditing()) { return; } - doOnSelectionChanged(e); + refreshPropertyPanes(); } }); this.addTargetModifiedListener(new TargetModifiedListener() { @Override public void targetModified(TargetModifiedEvent e) { - CellElementPropertyPane.getInstance().populate(ElementCasePaneDelegate.this); + if (DesignerContext.isRefreshOnTargetModifiedEnabled()) { + refreshPropertyPanes(); + } else { + CellElementPropertyPane.getInstance().populate(ElementCasePaneDelegate.this); + } } }); } - private void doOnSelectionChanged(SelectionEvent e) { + private void refreshPropertyPanes() { //在编辑权限,所以要更新权限编辑面板 if (BaseUtils.isAuthorityEditing()) { AuthorityPropertyPane authorityPropertyPane = new AuthorityPropertyPane(ElementCasePaneDelegate.this); @@ -76,7 +80,7 @@ public class ElementCasePaneDelegate extends ElementCasePane { QuickEditorRegion.getInstance().populate(getCurrentEditor()); JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (editingTemplate != null && !editingTemplate.isUpMode()) { - Selection editingSelection = ((ElementCasePaneDelegate)e.getSource()).getSelection(); + Selection editingSelection = getSelection(); // 模板初始化完成后,才能初始化超级链接面板 HyperlinkGroupPane hyperlinkGroupPane = editingTemplate.getHyperLinkPane(HyperlinkGroupPaneActionImpl.getInstance()); hyperlinkGroupPane.populate(ElementCasePaneDelegate.this); @@ -172,6 +176,9 @@ public class ElementCasePaneDelegate extends ElementCasePane { for (int i = 0; i < actions.length; i++) { subMenuDef.addShortCut(actions[i]); } + + // 顺便更新右侧属性面板悬浮元素tab中的菜单项 + ReportFloatPane.getInstance().refreshInsertFloatMenu(this); } // 格式菜单 diff --git a/designer/src/com/fr/design/mainframe/JWorkBook.java b/designer/src/com/fr/design/mainframe/JWorkBook.java index ea2177c2ac..82d796a30d 100644 --- a/designer/src/com/fr/design/mainframe/JWorkBook.java +++ b/designer/src/com/fr/design/mainframe/JWorkBook.java @@ -114,10 +114,13 @@ public class JWorkBook extends JTemplate { if (isEditingPolySheet()) { EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.POLY); } else { - EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.REPORT); - EastRegionContainerPane.getInstance().replaceCellElementPane(getEastUpPane()); - EastRegionContainerPane.getInstance().replaceCellAttrPane(getEastDownPane()); + if (isUpMode()) { + EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.REPORT_PARA); + } else { + EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.REPORT); + } } + refreshToolArea(); } private boolean isEditingPolySheet() { diff --git a/designer/src/com/fr/design/mainframe/ReportFloatPane.java b/designer/src/com/fr/design/mainframe/ReportFloatPane.java index 9f579f4f96..e759600426 100644 --- a/designer/src/com/fr/design/mainframe/ReportFloatPane.java +++ b/designer/src/com/fr/design/mainframe/ReportFloatPane.java @@ -23,7 +23,6 @@ import java.awt.*; public class ReportFloatPane extends JPanel { private static ReportFloatPane THIS; - private ElementCasePaneDelegate elementCasePaneDelegate; private MenuDef insertFloatMenu; private ReportFloatPane() { @@ -37,12 +36,20 @@ public class ReportFloatPane extends JPanel { return THIS; } + public void refreshInsertFloatMenu(ElementCasePaneDelegate elementCasePaneDelegate) { + insertFloatMenu.clearShortCuts(); + UpdateAction[] actions = ActionFactory.createFloatInsertAction(ElementCasePane.class, elementCasePaneDelegate); + for (int i = 0; i < actions.length; i++) { + insertFloatMenu.addShortCut(actions[i]); + } + } + private void initComponent() { this.setLayout(new BorderLayout()); UIToolbar topToolBar = new UIToolbar(); topToolBar.setLayout(new BorderLayout()); - insertFloatMenu = createInsertToolBar(); + initInsertToolBar(); topToolBar.setPreferredSize(new Dimension(155,20)); topToolBar.add(createButtonUI(), BorderLayout.CENTER); topToolBar.setBorder(BorderFactory.createEmptyBorder(-1, -1, -1, -1)); @@ -66,19 +73,14 @@ public class ReportFloatPane extends JPanel { this.add(leftTopPane, BorderLayout.NORTH); } - private MenuDef createInsertToolBar() { - MenuDef insertFloatMenu = new MenuDef(true); + private void initInsertToolBar() { + insertFloatMenu = new MenuDef(true); insertFloatMenu.setName(KeySetUtils.INSERT_FLOAT.getMenuKeySetName()); insertFloatMenu.setTooltip(Inter.getLocText("FR-Designer_T_Insert_Float")); insertFloatMenu.setIconPath("com/fr/design/images/control/addPopup.png"); JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - elementCasePaneDelegate = (ElementCasePaneDelegate) editingTemplate.getCurrentElementCasePane(); - UpdateAction[] actions = ActionFactory.createFloatInsertAction(ElementCasePane.class, elementCasePaneDelegate); - for (int i = 0; i < actions.length; i++) { - insertFloatMenu.addShortCut(actions[i]); - } - return insertFloatMenu; - + ElementCasePaneDelegate elementCasePaneDelegate = (ElementCasePaneDelegate) editingTemplate.getCurrentElementCasePane(); + refreshInsertFloatMenu(elementCasePaneDelegate); } private UIButton createButtonUI() { diff --git a/designer/src/com/fr/design/mainframe/alphafine/AlphaFineHelper.java b/designer/src/com/fr/design/mainframe/alphafine/AlphaFineHelper.java index 178c6d7e31..d09a5749a6 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/AlphaFineHelper.java +++ b/designer/src/com/fr/design/mainframe/alphafine/AlphaFineHelper.java @@ -19,7 +19,6 @@ import java.util.List; * Created by XiaXiang on 2017/5/8. */ public class AlphaFineHelper { - public static final NoResultModel NO_RESULT_MODEL = new NoResultModel(Inter.getLocText("FR-Designer_AlphaFine_NoResult")); public static final NoResultModel NO_CONNECTION_MODEL = new NoResultModel(Inter.getLocText("FR-Designer_ConnectionFailed")); private static AlphaFineDialog alphaFineDialog; @@ -27,6 +26,9 @@ public class AlphaFineHelper { * 弹出alphafine搜索面板 */ public static void showAlphaFineDialog(boolean forceOpen) { + if (!AlphaFineConfigManager.isALPHALicAvailable()) { + return; + } if (alphaFineDialog == null) { alphaFineDialog = new AlphaFineDialog(DesignerContext.getDesignerFrame(), forceOpen); alphaFineDialog.setVisible(true); diff --git a/designer/src/com/fr/design/mainframe/alphafine/cell/model/ActionModel.java b/designer/src/com/fr/design/mainframe/alphafine/cell/model/ActionModel.java index 8e2ccd9a79..cb2bbc4376 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/cell/model/ActionModel.java +++ b/designer/src/com/fr/design/mainframe/alphafine/cell/model/ActionModel.java @@ -1,25 +1,24 @@ package com.fr.design.mainframe.alphafine.cell.model; +import com.fr.design.actions.UpdateAction; import com.fr.design.mainframe.alphafine.CellType; import com.fr.general.FRLogger; import com.fr.json.JSONException; import com.fr.json.JSONObject; -import javax.swing.*; - /** * Created by XiaXiang on 2017/4/20. */ public class ActionModel extends AlphaCellModel { - private Action action; + private UpdateAction action; - public ActionModel(String name, String description, Action action, int searchCount) { + public ActionModel(String name, String description, UpdateAction action, int searchCount) { this(name, description, action); setSearchCount(searchCount); } - public ActionModel(String name, String description, Action action) { + public ActionModel(String name, String description, UpdateAction action) { super(name, null, CellType.ACTION); this.action = action; this.setDescription(description); @@ -43,11 +42,11 @@ public class ActionModel extends AlphaCellModel { return action != null ? action.hashCode() : 0; } - public Action getAction() { + public UpdateAction getAction() { return action; } - public void setAction(Action action) { + public void setAction(UpdateAction action) { this.action = action; } diff --git a/designer/src/com/fr/design/mainframe/alphafine/cell/model/AlphaCellModel.java b/designer/src/com/fr/design/mainframe/alphafine/cell/model/AlphaCellModel.java index ee9a9f55c9..04af821950 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/cell/model/AlphaCellModel.java +++ b/designer/src/com/fr/design/mainframe/alphafine/cell/model/AlphaCellModel.java @@ -27,7 +27,7 @@ public abstract class AlphaCellModel implements Comparable { this.content = content; } - + public CellType getType() { return type; } @@ -68,6 +68,7 @@ public abstract class AlphaCellModel implements Comparable { public boolean isNeedToSendToServer() { return true; } + /** * model转json * @@ -102,7 +103,7 @@ public abstract class AlphaCellModel implements Comparable { @Override public int compareTo(Object o) { - AlphaCellModel cellModel = (AlphaCellModel)o; + AlphaCellModel cellModel = (AlphaCellModel) o; int difference = cellModel.getSearchCount() - this.getSearchCount(); if (difference != 0) { return difference; diff --git a/designer/src/com/fr/design/mainframe/alphafine/cell/render/ContentCellRender.java b/designer/src/com/fr/design/mainframe/alphafine/cell/render/ContentCellRender.java index a99aecf3a2..d8cd66d97e 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/cell/render/ContentCellRender.java +++ b/designer/src/com/fr/design/mainframe/alphafine/cell/render/ContentCellRender.java @@ -5,7 +5,6 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.mainframe.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel; import com.fr.design.mainframe.alphafine.cell.model.MoreModel; -import com.fr.general.IOUtils; import com.fr.stable.StringUtils; import javax.swing.*; @@ -55,7 +54,7 @@ public class ContentCellRender implements ListCellRenderer { detailLabel.setForeground(AlphaFineConstants.LIGHT_GRAY); panel.add(detailLabel, BorderLayout.CENTER); int width = (int) (titleLabel.getPreferredSize().getWidth() + detailLabel.getPreferredSize().getWidth()); - if ( width > AlphaFineConstants.LEFT_WIDTH - OFFSET) { + if (width > AlphaFineConstants.LEFT_WIDTH - OFFSET) { int nameWidth = (int) (AlphaFineConstants.LEFT_WIDTH - detailLabel.getPreferredSize().getWidth() - OFFSET); titleLabel.setPreferredSize(new Dimension(nameWidth, AlphaFineConstants.CELL_HEIGHT)); } diff --git a/designer/src/com/fr/design/mainframe/alphafine/cell/render/TitleCellRender.java b/designer/src/com/fr/design/mainframe/alphafine/cell/render/TitleCellRender.java index 97f68cbf75..8d1d5a5f9b 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/cell/render/TitleCellRender.java +++ b/designer/src/com/fr/design/mainframe/alphafine/cell/render/TitleCellRender.java @@ -3,7 +3,6 @@ package com.fr.design.mainframe.alphafine.cell.render; import com.fr.design.gui.ilable.UILabel; import com.fr.design.mainframe.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.cell.model.MoreModel; -import com.fr.general.IOUtils; import javax.swing.*; import java.awt.*; diff --git a/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java b/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java index e973c6a422..e712edb478 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java +++ b/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java @@ -367,7 +367,6 @@ public class AlphaFineDialog extends UIDialog { * 停止加载状态 */ private void fireStopLoading() { - searchListModel.resetState(); if (searchResultPane != null) { removeLeftPane(); } @@ -665,25 +664,18 @@ public class AlphaFineDialog extends UIDialog { searchTextField.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { - if (e.getKeyCode() == KeyEvent.VK_DOWN) { - searchResultList.requestFocus(); - searchResultList.setSelectedIndex(searchResultList.getSelectedIndex() + 1); - } - } - - @Override - public void keyReleased(KeyEvent e) { - int keyCode = e.getKeyCode(); - if (keyCode == KeyEvent.VK_ESCAPE) { - if (StringUtils.isBlank(searchTextField.getText()) || ComparatorUtils.equals(searchTextField.getText(), searchTextField.getPlaceHolder())) { - AlphaFineDialog.this.setVisible(false); - } else { - searchTextField.setText(null); - removeSearchResult(); + if (e.getKeyCode() == KeyEvent.VK_ENTER) { + if (searchResultList.getModel().getSize() > 1) { + dealWithSearchResult(searchResultList.getSelectedValue()); } - } else if (e.getKeyCode() == KeyEvent.VK_ENTER) { - dealWithSearchResult(searchResultList.getSelectedValue()); - } + } else if (e.getKeyCode() == KeyEvent.VK_DOWN) { + if (searchResultList.getSelectedIndex() == searchResultList.getModel().getSize() - 1) { + searchResultList.setSelectedIndex(0); + } + searchResultList.setSelectedIndex(searchResultList.getSelectedIndex() + 1); + } else if (e.getKeyCode() == KeyEvent.VK_UP) { + searchResultList.setSelectedIndex(searchResultList.getSelectedIndex() - 1); + } else escAlphaFine(e); } }); @@ -754,7 +746,9 @@ public class AlphaFineDialog extends UIDialog { private void doNavigate() { AlphaFineDialog.this.dispose(); final AlphaCellModel model = searchResultList.getSelectedValue(); - model.doAction(); + if (model != null) { + model.doAction(); + } } /** @@ -888,6 +882,21 @@ public class AlphaFineDialog extends UIDialog { this.splitLabel = splitLabel; } + /** + * 键盘退出AlphaFine + * + * @param e + */ + private void escAlphaFine(KeyEvent e) { + if (e.getKeyCode() == KeyEvent.VK_ESCAPE) { + if (StringUtils.isBlank(searchTextField.getText()) || ComparatorUtils.equals(searchTextField.getText(), searchTextField.getPlaceHolder())) { + AlphaFineDialog.this.setVisible(false); + } else { + searchTextField.setText(null); + removeSearchResult(); + } + } + } /** * +-------------------------------------+ @@ -907,7 +916,9 @@ public class AlphaFineDialog extends UIDialog { */ @Override public void setSelectedIndex(int index) { - if (index > 0 && checkSelectedIndex(index)) { + if (index == 0 && getModel().getSize() > 1) { + super.setSelectedIndex(1); + } else if (index > 0 && checkSelectedIndex(index)) { int previousIndex = getSelectedIndex(); super.setSelectedIndex(index); AlphaCellModel cellModel = getSelectedValue(); @@ -930,21 +941,6 @@ public class AlphaFineDialog extends UIDialog { } private void initListListener() { - addKeyListener(new KeyAdapter() { - @Override - public void keyPressed(KeyEvent e) { - if (e.getKeyCode() == KeyEvent.VK_ENTER) { - dealWithSearchResult(getSelectedValue()); - } else if (e.getKeyCode() == KeyEvent.VK_UP) { - if (getSelectedIndex() == 1) { - searchTextField.requestFocus(); - } - } else if (e.getKeyCode() == KeyEvent.VK_ESCAPE) { - searchTextField.requestFocus(); - } - } - }); - addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { @@ -968,6 +964,14 @@ public class AlphaFineDialog extends UIDialog { } } }); + + addKeyListener(new KeyAdapter() { + @Override + public void keyPressed(KeyEvent e) { + escAlphaFine(e); + + } + }); } } diff --git a/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFinePane.java b/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFinePane.java index 8c962a0010..d4ab8326d6 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFinePane.java +++ b/designer/src/com/fr/design/mainframe/alphafine/component/AlphaFinePane.java @@ -1,5 +1,6 @@ package com.fr.design.mainframe.alphafine.component; +import com.bulenkov.iconloader.IconLoader; import com.fr.design.DesignerEnvManager; import com.fr.design.actions.help.alphafine.AlphaFineContext; import com.fr.design.actions.help.alphafine.AlphaFineListener; @@ -7,10 +8,8 @@ import com.fr.design.dialog.BasicPane; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.utils.ThemeUtils; -import com.fr.general.IOUtils; import com.fr.general.Inter; -import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -22,12 +21,12 @@ public class AlphaFinePane extends BasicPane { private static AlphaFinePane alphaFinePane; public AlphaFinePane() { - setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 14)); + setLayout(new BorderLayout()); if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isEnabled()) { Toolkit.getDefaultToolkit().addAWTEventListener(AlphaFineDialog.listener(), AWTEvent.KEY_EVENT_MASK); } UIButton refreshButton = new UIButton(); - refreshButton.setIcon(IOUtils.readIcon("/com/fr/design/mainframe/alphafine/images/smallsearch.png")); + refreshButton.setIcon(IconLoader.getIcon("/com/fr/design/mainframe/alphafine/images/smallsearch.png")); refreshButton.setToolTipText(Inter.getLocText("FR-Designer_AlphaFine")); refreshButton.set4ToolbarButton(); refreshButton.setRolloverEnabled(false); diff --git a/designer/src/com/fr/design/mainframe/alphafine/images/bigsearch.png b/designer/src/com/fr/design/mainframe/alphafine/images/bigsearch.png index 192a8131dd..83576a2161 100644 Binary files a/designer/src/com/fr/design/mainframe/alphafine/images/bigsearch.png and b/designer/src/com/fr/design/mainframe/alphafine/images/bigsearch.png differ diff --git a/designer/src/com/fr/design/mainframe/alphafine/images/bigsearch@2x.png b/designer/src/com/fr/design/mainframe/alphafine/images/bigsearch@2x.png index a7d6c8cad6..58d1c92c80 100644 Binary files a/designer/src/com/fr/design/mainframe/alphafine/images/bigsearch@2x.png and b/designer/src/com/fr/design/mainframe/alphafine/images/bigsearch@2x.png differ diff --git a/designer/src/com/fr/design/mainframe/alphafine/images/smallsearch.png b/designer/src/com/fr/design/mainframe/alphafine/images/smallsearch.png index f23024ad1e..63012b2823 100644 Binary files a/designer/src/com/fr/design/mainframe/alphafine/images/smallsearch.png and b/designer/src/com/fr/design/mainframe/alphafine/images/smallsearch.png differ diff --git a/designer/src/com/fr/design/mainframe/alphafine/images/smallsearch@2x.png b/designer/src/com/fr/design/mainframe/alphafine/images/smallsearch@2x.png index a9f208ee28..10d2fe15be 100644 Binary files a/designer/src/com/fr/design/mainframe/alphafine/images/smallsearch@2x.png and b/designer/src/com/fr/design/mainframe/alphafine/images/smallsearch@2x.png differ diff --git a/designer/src/com/fr/design/mainframe/alphafine/preview/FilePreviewPane.java b/designer/src/com/fr/design/mainframe/alphafine/preview/FilePreviewPane.java index 15b69aab27..1ba7a5b915 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/preview/FilePreviewPane.java +++ b/designer/src/com/fr/design/mainframe/alphafine/preview/FilePreviewPane.java @@ -18,7 +18,7 @@ public class FilePreviewPane extends JPanel { float widthScale = (AlphaFineConstants.RIGHT_WIDTH) / (float) image.getWidth(); float heightScale = (AlphaFineConstants.CONTENT_HEIGHT) / (float) image.getHeight(); Image showImage; - showImage = widthScale > heightScale? image.getScaledInstance((int) (image.getWidth() * heightScale), AlphaFineConstants.CONTENT_HEIGHT, Image.SCALE_SMOOTH) : image.getScaledInstance(AlphaFineConstants.RIGHT_WIDTH, (int) (image.getWidth() * widthScale), Image.SCALE_SMOOTH); + showImage = widthScale > heightScale ? image.getScaledInstance((int) (image.getWidth() * heightScale), AlphaFineConstants.CONTENT_HEIGHT, Image.SCALE_SMOOTH) : image.getScaledInstance(AlphaFineConstants.RIGHT_WIDTH, (int) (image.getWidth() * widthScale), Image.SCALE_SMOOTH); label.setIcon(new ImageIcon(showImage)); add(label); } diff --git a/designer/src/com/fr/design/mainframe/alphafine/preview/NoResultPane.java b/designer/src/com/fr/design/mainframe/alphafine/preview/NoResultPane.java index 6b80aae8be..738ecf4efd 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/preview/NoResultPane.java +++ b/designer/src/com/fr/design/mainframe/alphafine/preview/NoResultPane.java @@ -20,7 +20,7 @@ public class NoResultPane extends JPanel { image.setPreferredSize(new Dimension(150, 111)); image.setHorizontalAlignment(SwingConstants.CENTER); image.setIcon(IconLoader.getIcon(iconUrl)); - image.setBorder(BorderFactory.createEmptyBorder(100,0,0,0)); + image.setBorder(BorderFactory.createEmptyBorder(100, 0, 0, 0)); UILabel description = new UILabel(title); description.setForeground(AlphaFineConstants.MEDIUM_GRAY); description.setFont(FRFont.getInstance("SimSun", Font.PLAIN, 14)); diff --git a/designer/src/com/fr/design/mainframe/alphafine/search/manager/FileSearchManager.java b/designer/src/com/fr/design/mainframe/alphafine/search/manager/FileSearchManager.java index 0c1a3b61b2..76cc8a6351 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/search/manager/FileSearchManager.java +++ b/designer/src/com/fr/design/mainframe/alphafine/search/manager/FileSearchManager.java @@ -19,7 +19,12 @@ import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.project.ProjectConstants; -import java.io.*; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; diff --git a/designer/src/com/fr/design/mainframe/alphafine/search/manager/PluginSearchManager.java b/designer/src/com/fr/design/mainframe/alphafine/search/manager/PluginSearchManager.java index 25efb5f6bd..2ea8ba0e84 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/search/manager/PluginSearchManager.java +++ b/designer/src/com/fr/design/mainframe/alphafine/search/manager/PluginSearchManager.java @@ -103,6 +103,7 @@ public class PluginSearchManager implements AlphaFineSearchProcessor { if (jsonArray != null) { SearchResult searchResult = new SearchResult(); for (int i = 0; i < jsonArray.length(); i++) { + AlphaFineHelper.checkCancel(); PluginModel cellModel = getPluginModel(jsonArray.optJSONObject(i), false); if (!AlphaFineHelper.getFilterResult().contains(cellModel)) { searchResult.add(cellModel); diff --git a/designer/src/com/fr/design/mainframe/alphafine/search/manager/RecentSearchManager.java b/designer/src/com/fr/design/mainframe/alphafine/search/manager/RecentSearchManager.java index 69959830c5..c191c0c11e 100644 --- a/designer/src/com/fr/design/mainframe/alphafine/search/manager/RecentSearchManager.java +++ b/designer/src/com/fr/design/mainframe/alphafine/search/manager/RecentSearchManager.java @@ -10,6 +10,7 @@ import com.fr.design.mainframe.alphafine.cell.model.ActionModel; import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel; import com.fr.design.mainframe.alphafine.cell.model.MoreModel; import com.fr.design.mainframe.alphafine.model.SearchResult; +import com.fr.design.mainframe.toolbar.UpdateActionManager; import com.fr.file.XMLFileManager; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; @@ -26,8 +27,17 @@ import com.fr.stable.xml.XMLReadable; import com.fr.stable.xml.XMLTools; import com.fr.stable.xml.XMLableReader; -import java.io.*; -import java.util.*; +import java.io.File; +import java.io.FileOutputStream; +import java.io.FileWriter; +import java.io.IOException; +import java.io.OutputStream; +import java.io.StringReader; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; /** * Created by XiaXiang on 2017/5/15. @@ -220,21 +230,24 @@ public class RecentSearchManager extends XMLFileManager implements AlphaFineSear recentModelList = recentKVModelMap.get(searchText); SearchResult resultModelList = recentModelList; Iterator modelIterator = resultModelList.iterator(); + SearchResult searchResult = new SearchResult(); while (modelIterator.hasNext()) { AlphaCellModel model = modelIterator.next(); - if (model.getType() == CellType.ACTION && !((ActionModel) model).getAction().isEnabled()) { - modelIterator.remove(); + if (model.getType() == CellType.ACTION && !UpdateActionManager.getUpdateActionManager().isEnable(((ActionModel) model).getAction())) { + continue; + } else { + searchResult.add(model); } } - Collections.sort(resultModelList); - int size = resultModelList.size(); + Collections.sort(searchResult); + int size = searchResult.size(); if (size > MAX_SIZE) { SearchResult result = new SearchResult(); - result.addAll(resultModelList.subList(0, MAX_SIZE)); + result.addAll(searchResult.subList(0, MAX_SIZE)); return result; } - return resultModelList; + return searchResult; } } return recentModelList; diff --git a/designer/src/com/fr/design/mainframe/cell/settingpane/CellExpandAttrPane.java b/designer/src/com/fr/design/mainframe/cell/settingpane/CellExpandAttrPane.java index 4eedd4f7c5..b903e68048 100644 --- a/designer/src/com/fr/design/mainframe/cell/settingpane/CellExpandAttrPane.java +++ b/designer/src/com/fr/design/mainframe/cell/settingpane/CellExpandAttrPane.java @@ -45,10 +45,10 @@ public class CellExpandAttrPane extends AbstractCellAttrPane { */ public JPanel createContentPane() { String[] nameArray = {Inter.getLocText("ExpandD-Not_Expand"), Inter.getLocText("Utils-Top_to_Bottom"), Inter.getLocText("Utils-Left_to_Right")}; - Icon[] iconArray = { - BaseUtils.readIcon("/com/fr/design/images/expand/none16x16.png"), - BaseUtils.readIcon("/com/fr/design/images/expand/vertical.png"), - BaseUtils.readIcon("/com/fr/design/images/expand/landspace.png") + Icon[][] iconArray = { + {BaseUtils.readIcon("/com/fr/design/images/expand/none16x16.png"), BaseUtils.readIcon("/com/fr/design/images/expand/none16x16_selected@1x.png")}, + {BaseUtils.readIcon("/com/fr/design/images/expand/vertical.png"), BaseUtils.readIcon("/com/fr/design/images/expand/vertical_selected@1x.png")}, + {BaseUtils.readIcon("/com/fr/design/images/expand/landspace.png"), BaseUtils.readIcon("/com/fr/design/images/expand/landspace_selected@1x.png")} }; Byte[] valueArray = {Constants.NONE, Constants.TOP_TO_BOTTOM, Constants.LEFT_TO_RIGHT}; expandDirectionButton = new UIButtonGroup(iconArray, valueArray); diff --git a/designer/src/com/fr/design/mainframe/errorinfo/ErrorInfoUploader.java b/designer/src/com/fr/design/mainframe/errorinfo/ErrorInfoUploader.java index 10ff2779b4..07aadbe915 100644 --- a/designer/src/com/fr/design/mainframe/errorinfo/ErrorInfoUploader.java +++ b/designer/src/com/fr/design/mainframe/errorinfo/ErrorInfoUploader.java @@ -29,6 +29,8 @@ public class ErrorInfoUploader { private static ErrorInfoUploader collector; private static boolean licSupport = true; + // 在一台不能上网的电脑里发现了10w个errorinfo... + private static final int MAX_ERROR_SIZE = 2000; static { GeneralContext.addEnvChangedListener(new EnvChangedListener() { @@ -123,6 +125,11 @@ public class ErrorInfoUploader { } File[] files = folder.listFiles(); + if (files.length > MAX_ERROR_SIZE) { + StableUtils.deleteFile(folder); + return; + } + try { for (File file : files) { String filePath = file.getPath(); @@ -131,6 +138,11 @@ public class ErrorInfoUploader { if (suffix.endsWith(SUFFIX)) { Thread.sleep(1000L); String content = IOUtils.inputStream2String(new FileInputStream(file)); + if (content.length() > MAX_ERROR_SIZE) { + file.delete(); + continue; + } + String url = SiteCenter.getInstance().acquireUrlByKind("design.error"); if (sendErroInfo(url, content)) { file.delete(); diff --git a/designer/src/com/fr/design/mainframe/form/FormElementCasePaneDelegate.java b/designer/src/com/fr/design/mainframe/form/FormElementCasePaneDelegate.java index 68ee0d79bd..8da52f9a58 100644 --- a/designer/src/com/fr/design/mainframe/form/FormElementCasePaneDelegate.java +++ b/designer/src/com/fr/design/mainframe/form/FormElementCasePaneDelegate.java @@ -36,32 +36,34 @@ public class FormElementCasePaneDelegate extends ElementCasePane extends BasicBeanPane implements DataModify { + protected String globalName; @Override public DataCreatorUI dataUI() { @@ -20,4 +22,12 @@ public abstract class AbstractDataModify extends BasicBeanPane implements public JComponent toSwingComponent() { return this; } + + public void setGlobalName(String globalName){ + this.globalName = globalName; + } + + public String getGlobalName(){ + return globalName; + } } \ No newline at end of file diff --git a/designer/src/com/fr/design/widget/ui/BasicWidgetPropertySettingPane.java b/designer/src/com/fr/design/widget/ui/BasicWidgetPropertySettingPane.java index cedcfc1db7..f6fa3693ae 100644 --- a/designer/src/com/fr/design/widget/ui/BasicWidgetPropertySettingPane.java +++ b/designer/src/com/fr/design/widget/ui/BasicWidgetPropertySettingPane.java @@ -1,6 +1,6 @@ package com.fr.design.widget.ui; -import com.fr.design.constants.LayoutConstants; +import com.fr.design.designer.IntervalConstants; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.dialog.BasicPane; @@ -11,8 +11,11 @@ import com.fr.form.ui.Widget; import com.fr.general.Inter; import com.fr.design.utils.gui.GUICoreUtils; -import javax.swing.*; -import java.awt.*; +import javax.swing.BorderFactory; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Component; + public class BasicWidgetPropertySettingPane extends BasicPane { private ParameterTreeComboBox widgetNameComboBox; @@ -28,20 +31,17 @@ public class BasicWidgetPropertySettingPane extends BasicPane { visibleCheckBox.setBorder(BorderFactory.createEmptyBorder(0,0,0,0)); widgetNameComboBox = new ParameterTreeComboBox(); widgetNameComboBox.refreshTree(); - JPanel widgetNamePane = new JPanel(new BorderLayout()); - widgetNamePane.add(widgetNameComboBox, BorderLayout.CENTER); - widgetNamePane.setBorder(BorderFactory.createEmptyBorder(0,20,0,0)); double f = TableLayout.FILL; double p = TableLayout.PREFERRED; Component[][] components = new Component[][]{ - new Component[]{new UILabel(Inter.getLocText("FR-Designer_Form-Widget_Name")), widgetNamePane}, + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Form-Widget_Name")), widgetNameComboBox}, new Component[]{enableCheckBox, null}, new Component[]{visibleCheckBox, null}, }; double[] rowSize = {p, p, p}; double[] columnSize = {p, f}; int[][] rowCount = {{1, 1},{1, 1},{1, 1},{1, 1}}; - JPanel pane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_LARGE, LayoutConstants.VGAP_LARGE); + JPanel pane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W2, IntervalConstants.INTERVAL_L1); pane.setBorder(BorderFactory.createEmptyBorder(10,0,10,0)); this.add(pane, BorderLayout.CENTER); diff --git a/designer/src/com/fr/design/widget/ui/ButtonGroupDictPane.java b/designer/src/com/fr/design/widget/ui/ButtonGroupDictPane.java index aaa116765f..8b8916ca32 100644 --- a/designer/src/com/fr/design/widget/ui/ButtonGroupDictPane.java +++ b/designer/src/com/fr/design/widget/ui/ButtonGroupDictPane.java @@ -5,6 +5,7 @@ import java.awt.*; import java.awt.event.ActionEvent; import com.fr.data.Dictionary; +import com.fr.design.designer.IntervalConstants; import com.fr.design.gui.ispinner.UIBasicSpinner; import java.awt.event.ActionListener; @@ -57,8 +58,7 @@ public class ButtonGroupDictPane extends JPanel { {new UILabel(Inter.getLocText("FR-Designer_DS-Dictionary")), dictPane, null}, {adaptiveCheckbox, columnLabel, columnSpinner} }; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(n_components, rowSize, columnSize, 16, 8); - panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(n_components, rowSize, columnSize, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); this.add(panel); diff --git a/designer/src/com/fr/design/widget/ui/CheckBoxDefinePane.java b/designer/src/com/fr/design/widget/ui/CheckBoxDefinePane.java index 44d0df7f4a..3bbc5a113f 100644 --- a/designer/src/com/fr/design/widget/ui/CheckBoxDefinePane.java +++ b/designer/src/com/fr/design/widget/ui/CheckBoxDefinePane.java @@ -1,6 +1,7 @@ package com.fr.design.widget.ui; import com.fr.design.constants.LayoutConstants; +import com.fr.design.designer.IntervalConstants; import com.fr.design.foldablepane.UIExpandablePane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; @@ -17,28 +18,24 @@ public class CheckBoxDefinePane extends AbstractDataModify { private UITextField text; public CheckBoxDefinePane() { - this.iniComoponents(); + this.iniComponents(); } - private void iniComoponents() { + private void iniComponents() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); text = new UITextField(); - JPanel panel = new JPanel(new BorderLayout()); - panel.add(text, BorderLayout.CENTER); - panel.setBorder(BorderFactory.createEmptyBorder(0, 35, 0, 0)); - double f = TableLayout.FILL; double p = TableLayout.PREFERRED; Component[][] components = new Component[][]{ - new Component[]{new UILabel(Inter.getLocText("FR-Designer_Text")), panel}, + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Text")), text}, }; double[] rowSize = {p}; double[] columnSize = {p, f}; int[][] rowCount = {{1, 1}}; - JPanel pane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_LARGE, LayoutConstants.VGAP_LARGE); + JPanel pane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W3, IntervalConstants.INTERVAL_L1); UIExpandablePane uiExpandablePane = new UIExpandablePane(Inter.getLocText("FR-Designer_Advanced"), 280, 24, pane); - pane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 15)); + pane.setBorder(BorderFactory.createEmptyBorder(10, 5, 10, 0)); this.add(uiExpandablePane); } diff --git a/designer/src/com/fr/design/widget/ui/ComboBoxDefinePane.java b/designer/src/com/fr/design/widget/ui/ComboBoxDefinePane.java index ed4f94079c..a59b049791 100644 --- a/designer/src/com/fr/design/widget/ui/ComboBoxDefinePane.java +++ b/designer/src/com/fr/design/widget/ui/ComboBoxDefinePane.java @@ -4,6 +4,7 @@ import javax.swing.*; import com.fr.data.Dictionary; import com.fr.design.data.DataCreatorUI; +import com.fr.design.designer.IntervalConstants; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.widget.accessibles.AccessibleDictionaryEditor; @@ -26,8 +27,9 @@ public class ComboBoxDefinePane extends CustomWritableRepeatEditorPane protected JPanel setForthContentPane () { dictPane = new AccessibleDictionaryEditor(); - JPanel jPanel = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{new UILabel(Inter.getLocText("FR-Designer_DS-Dictionary")), dictPane}}, TableLayoutHelper.FILL_LASTCOLUMN, 18, 7); - jPanel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); + JPanel jPanel = TableLayoutHelper.createGapTableLayoutPane( + new Component[][]{new Component[]{new UILabel(Inter.getLocText("FR-Designer_DS-Dictionary")), dictPane}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); + jPanel.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); return jPanel; } diff --git a/designer/src/com/fr/design/widget/ui/ComboCheckBoxDefinePane.java b/designer/src/com/fr/design/widget/ui/ComboCheckBoxDefinePane.java index b8922ad557..d379f21336 100644 --- a/designer/src/com/fr/design/widget/ui/ComboCheckBoxDefinePane.java +++ b/designer/src/com/fr/design/widget/ui/ComboCheckBoxDefinePane.java @@ -2,6 +2,7 @@ package com.fr.design.widget.ui; import com.fr.data.Dictionary; import com.fr.design.data.DataCreatorUI; +import com.fr.design.designer.IntervalConstants; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; @@ -42,7 +43,7 @@ public class ComboCheckBoxDefinePane extends CustomWritableRepeatEditorPane可以自动换行 + super.setText("" + text + ""); + } + }; sampleLabel.setHorizontalAlignment(SwingConstants.CENTER); sampleLabel.setFont(FRContext.getDefaultValues().getFRFont()); return sampleLabel; diff --git a/designer/src/com/fr/design/widget/ui/FieldEditorDefinePane.java b/designer/src/com/fr/design/widget/ui/FieldEditorDefinePane.java index 15ad11fd56..f9d6bfd283 100644 --- a/designer/src/com/fr/design/widget/ui/FieldEditorDefinePane.java +++ b/designer/src/com/fr/design/widget/ui/FieldEditorDefinePane.java @@ -32,8 +32,11 @@ public abstract class FieldEditorDefinePane extends Abstr protected void initComponents() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); JPanel contentPane = this.setFirstContentPane(); + JPanel jPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); + jPanel.add(contentPane, BorderLayout.CENTER); + contentPane.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); if (contentPane != null) { - UIExpandablePane uiExpandablePane = new UIExpandablePane(Inter.getLocText("FR-Designer_Advanced"), 280, 24, contentPane); + UIExpandablePane uiExpandablePane = new UIExpandablePane(Inter.getLocText("FR-Designer_Advanced"), 280, 24, jPanel); this.add(uiExpandablePane, BorderLayout.NORTH); } this.addValidatePane(); diff --git a/designer/src/com/fr/design/widget/ui/IframeEditorDefinePane.java b/designer/src/com/fr/design/widget/ui/IframeEditorDefinePane.java index 7416f314fc..d70e633f47 100644 --- a/designer/src/com/fr/design/widget/ui/IframeEditorDefinePane.java +++ b/designer/src/com/fr/design/widget/ui/IframeEditorDefinePane.java @@ -2,6 +2,7 @@ package com.fr.design.widget.ui; import com.fr.base.FRContext; import com.fr.design.constants.LayoutConstants; +import com.fr.design.designer.IntervalConstants; import com.fr.design.dialog.DialogActionListener; import com.fr.design.dialog.UIDialog; import com.fr.design.foldablepane.UIExpandablePane; @@ -57,14 +58,15 @@ public class IframeEditorDefinePane extends AbstractDataModify { parameterViewPaneButton = new UIButton(Inter.getLocText("FR-Designer_Edit")); parameterViewPaneButton.addActionListener(parameterListener); parameterViewPane = new ReportletParameterViewPane(); - + horizontalCheck.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); + verticalCheck.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); java.awt.Component[][] coms = { {horizontalCheck, null}, {verticalCheck, null}, {new UILabel(Inter.getLocText("Form-Url")), srcTextField = new UITextField()}, {new UILabel(Inter.getLocText("FR-Designer_Parameters")), parameterViewPaneButton}}; int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}, {1, 1}}; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(coms, rowSize, columnSize, rowCount, 45, LayoutConstants.VGAP_LARGE); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(coms, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W3, IntervalConstants.INTERVAL_L1); contentPane.add(panel); diff --git a/designer/src/com/fr/design/widget/ui/ListEditorDefinePane.java b/designer/src/com/fr/design/widget/ui/ListEditorDefinePane.java index 1969bff204..a223ee439a 100644 --- a/designer/src/com/fr/design/widget/ui/ListEditorDefinePane.java +++ b/designer/src/com/fr/design/widget/ui/ListEditorDefinePane.java @@ -34,12 +34,12 @@ public class ListEditorDefinePane extends WriteUnableRepeatEditorPane double[] rowSize = {p, p, p}; double[] columnSize = {p, f}; int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}}; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 22, 10); - - panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 00)); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); contenter.add(panel, BorderLayout.CENTER); return contenter; diff --git a/designer/src/com/fr/design/widget/ui/NumberEditorDefinePane.java b/designer/src/com/fr/design/widget/ui/NumberEditorDefinePane.java index 122441b81d..88244b903f 100644 --- a/designer/src/com/fr/design/widget/ui/NumberEditorDefinePane.java +++ b/designer/src/com/fr/design/widget/ui/NumberEditorDefinePane.java @@ -29,7 +29,6 @@ public class NumberEditorDefinePane extends FieldEditorDefinePane protected JPanel setFirstContentPane() { JPanel content = FRGUIPaneFactory.createBorderLayout_S_Pane(); waterMarkDictPane = new WaterMarkDictPane(); - waterMarkDictPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0)); content.add(waterMarkDictPane, BorderLayout.CENTER); return content; } diff --git a/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java b/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java index 33981226d6..e5ae558086 100644 --- a/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java +++ b/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java @@ -51,9 +51,7 @@ public class TextFieldEditorDefinePane extends FieldEditorDefinePane } }); JPanel content = FRGUIPaneFactory.createBorderLayout_S_Pane(); - waterMarkDictPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0)); content.add(waterMarkDictPane, BorderLayout.CENTER); - return content; } diff --git a/designer/src/com/fr/design/widget/ui/TreeComboBoxEditorDefinePane.java b/designer/src/com/fr/design/widget/ui/TreeComboBoxEditorDefinePane.java index 1bebaf90c8..2b6ae09b95 100644 --- a/designer/src/com/fr/design/widget/ui/TreeComboBoxEditorDefinePane.java +++ b/designer/src/com/fr/design/widget/ui/TreeComboBoxEditorDefinePane.java @@ -7,6 +7,7 @@ import javax.swing.JPanel; import com.fr.data.Dictionary; import com.fr.design.data.DataCreatorUI; +import com.fr.design.designer.IntervalConstants; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itree.refreshabletree.TreeRootPane; import com.fr.design.layout.FRGUIPaneFactory; @@ -38,8 +39,9 @@ public class TreeComboBoxEditorDefinePane extends CustomWritableRepeatEditorPane protected JPanel setFirstContentPane() { treeSettingPane = new AccessibleTreeModelEditor(); JPanel jPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); - JPanel north = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{new UILabel(Inter.getLocText("FR-Designer_Create_Tree")), treeSettingPane}}, TableLayoutHelper.FILL_LASTCOLUMN, 18, 7); - north.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); + JPanel north = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{ + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Create_Tree")), treeSettingPane}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_W2, IntervalConstants.INTERVAL_L1); + north.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0)); JPanel center = super.setFirstContentPane(); jPanel.add(north, BorderLayout.NORTH); jPanel.add(center, BorderLayout.CENTER); diff --git a/designer/src/com/fr/design/widget/ui/TreeEditorDefinePane.java b/designer/src/com/fr/design/widget/ui/TreeEditorDefinePane.java index f98eea391a..2ed9c06636 100644 --- a/designer/src/com/fr/design/widget/ui/TreeEditorDefinePane.java +++ b/designer/src/com/fr/design/widget/ui/TreeEditorDefinePane.java @@ -2,6 +2,7 @@ package com.fr.design.widget.ui; import com.fr.data.Dictionary; import com.fr.design.data.DataCreatorUI; +import com.fr.design.designer.IntervalConstants; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itree.refreshabletree.TreeRootPane; @@ -55,8 +56,9 @@ public class TreeEditorDefinePane extends FieldEditorDefinePane { protected JPanel setSecondContentPane() { accessibleTreeModelEditor = new AccessibleTreeModelEditor(); - JPanel createTree = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{new UILabel(Inter.getLocText("FR-Designer_Create_Tree")), accessibleTreeModelEditor}}, TableLayoutHelper.FILL_LASTCOLUMN, 18, 7); - createTree.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); + JPanel createTree = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{ + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Create_Tree")), accessibleTreeModelEditor}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_W2, IntervalConstants.INTERVAL_L1); + createTree.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0)); JPanel contentPane = FRGUIPaneFactory.createBorderLayout_L_Pane(); JPanel contenter = FRGUIPaneFactory.createBorderLayout_S_Pane(); diff --git a/designer/src/com/fr/design/widget/ui/WaterMarkDictPane.java b/designer/src/com/fr/design/widget/ui/WaterMarkDictPane.java index 1bfcb06337..1d8f347a7a 100644 --- a/designer/src/com/fr/design/widget/ui/WaterMarkDictPane.java +++ b/designer/src/com/fr/design/widget/ui/WaterMarkDictPane.java @@ -1,5 +1,6 @@ package com.fr.design.widget.ui; +import com.fr.design.designer.IntervalConstants; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.TableLayout; @@ -28,8 +29,8 @@ public class WaterMarkDictPane extends JPanel { double[] rowSize = {p}; double[] columnSize = {p, f}; int[][] rowCount = {{1, 1}}; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 18, 7); - panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W3, IntervalConstants.INTERVAL_L1); +// panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); this.add(panel, BorderLayout.CENTER); } diff --git a/designer/src/com/fr/design/widget/ui/WriteUnableRepeatEditorPane.java b/designer/src/com/fr/design/widget/ui/WriteUnableRepeatEditorPane.java index ffcf947a93..a81f7f7732 100644 --- a/designer/src/com/fr/design/widget/ui/WriteUnableRepeatEditorPane.java +++ b/designer/src/com/fr/design/widget/ui/WriteUnableRepeatEditorPane.java @@ -5,6 +5,7 @@ import java.awt.*; import javax.swing.BorderFactory; import javax.swing.JPanel; +import com.fr.design.designer.IntervalConstants; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; @@ -36,8 +37,7 @@ public abstract class WriteUnableRepeatEditorPanenull return the default - * editor for this type of cell + * editor for this type of cell * @see com.fr.design.cell.editor.CellEditor */ public CellEditor getCellEditor(int column, int row) { @@ -598,7 +567,7 @@ public class Grid extends BaseGridComponent { * edited. If nothing is being edited, returns -1. * * @return the index of the column that contains the cell currently being - * edited; returns -1 if nothing being edited + * edited; returns -1 if nothing being edited */ public int getEditingColumn() { return editingColumn; @@ -618,7 +587,7 @@ public class Grid extends BaseGridComponent { * If nothing is being edited, returns -1. * * @return the index of the row that contains the cell currently being - * edited; returns -1 if nothing being edited + * edited; returns -1 if nothing being edited */ public int getEditingRow() { return editingRow; @@ -800,25 +769,20 @@ public class Grid extends BaseGridComponent { } /** - * 开始单元格编辑 - * - * - * @date 2014-12-21-下午6:25:17 - * - */ + * 开始单元格编辑 + * + * @date 2014-12-21-下午6:25:17 + */ public void startEditing() { this.startEditing(false); } /** - * 开始单元格编辑 - * - * @param byKeyEvent 是否为键盘触发 - * - * - * @date 2014-12-21-下午6:25:17 - * - */ + * 开始单元格编辑 + * + * @param byKeyEvent 是否为键盘触发 + * @date 2014-12-21-下午6:25:17 + */ protected void startEditing(boolean byKeyEvent) { ElementCasePane reportPane = this.getElementCasePane(); ElementCase report = reportPane.getEditingElementCase(); @@ -867,19 +831,15 @@ public class Grid extends BaseGridComponent { } /** - * 开始单元格编辑 - * - * @param column 列 - * @param row 行 - * @param cellTypeClass 单元格类型 - * @param byKeyEvent 是否为键盘触发 - * - * @return 编辑是否成功 - * - * - * @date 2014-12-21-下午6:25:17 - * - */ + * 开始单元格编辑 + * + * @param column 列 + * @param row 行 + * @param cellTypeClass 单元格类型 + * @param byKeyEvent 是否为键盘触发 + * @return 编辑是否成功 + * @date 2014-12-21-下午6:25:17 + */ public boolean startCellEditingAt_DEC(int column, int row, Class cellTypeClass, boolean byKeyEvent) { if (this.isEditing()) { this.stopEditing();// 需要先停止正在进行的编辑. @@ -954,12 +914,10 @@ public class Grid extends BaseGridComponent { } /** - * 停止编辑状态 - * - * - * @date 2014-12-21-下午6:24:54 - * - */ + * 停止编辑状态 + * + * @date 2014-12-21-下午6:24:54 + */ public void stopEditing() { // 首先判断是哪种类型的编辑. if (this.isCellEditing()) { @@ -1117,11 +1075,11 @@ public class Grid extends BaseGridComponent { if (styleChange || imageChange) { return true; } - } else { - if(newValue instanceof RichText){ - setShowAsHtml(this.editingCellElement); - } - + } else { + if (newValue instanceof RichText) { + setShowAsHtml(this.editingCellElement); + } + Object oldValue = this.editingCellElement.getValue(); if (!ComparatorUtils.equals_exactly(oldValue, newValue)) { editingCellElement.setValue(newValue); @@ -1130,16 +1088,16 @@ public class Grid extends BaseGridComponent { } return false; } - - private void setShowAsHtml(CellElement cellElement){ - CellGUIAttr guiAttr = cellElement.getCellGUIAttr(); - if(guiAttr == null){ - guiAttr = new CellGUIAttr(); - cellElement.setCellGUIAttr(guiAttr); - } - - guiAttr.setShowAsHTML(true); - } + + private void setShowAsHtml(CellElement cellElement) { + CellGUIAttr guiAttr = cellElement.getCellGUIAttr(); + if (guiAttr == null) { + guiAttr = new CellGUIAttr(); + cellElement.setCellGUIAttr(guiAttr); + } + + guiAttr.setShowAsHTML(true); + } /** * 当单元格里的内容过长时,自动调整单元格 @@ -1148,34 +1106,32 @@ public class Grid extends BaseGridComponent { */ private void shrinkToFit(TemplateElementCase tplEC) { if (editingCellElement == null) { - return; + return; } - + Object editElementValue = editingCellElement.getValue(); if (valueNeedFit(editElementValue)) { - int mode = this.getElementCasePane().getReportSettings().getShrinkToFitMode(); + int mode = this.getElementCasePane().getReportSettings().getShrinkToFitMode(); GridUtils.shrinkToFit(mode, tplEC, editingCellElement); } } - + //是否需要根据内容自动调整, 目前只有字符串, 数字, 富文本需要 - private boolean valueNeedFit(Object value){ - if(value == null){ - return false; - } - - return value instanceof String || - value instanceof Number || - value instanceof RichText; - } - - /** - * 取消编辑状态 - * - * - * @date 2014-12-21-下午6:24:34 - * - */ + private boolean valueNeedFit(Object value) { + if (value == null) { + return false; + } + + return value instanceof String || + value instanceof Number || + value instanceof RichText; + } + + /** + * 取消编辑状态 + * + * @date 2014-12-21-下午6:24:34 + */ public void cancelEditing() { if (this.isEditing()) { removeEditor(); @@ -1184,12 +1140,10 @@ public class Grid extends BaseGridComponent { } /** - * 移除选中组件 - * - * - * @date 2014-12-21-下午6:24:16 - * - */ + * 移除选中组件 + * + * @date 2014-12-21-下午6:24:16 + */ public void removeEditor() { if (this.isCellEditing()) { this.removeCellEditor(); @@ -1199,12 +1153,10 @@ public class Grid extends BaseGridComponent { } /** - * 移除单元格组件 - * - * - * @date 2014-12-21-下午6:24:00 - * - */ + * 移除单元格组件 + * + * @date 2014-12-21-下午6:24:00 + */ public void removeCellEditor() { CellEditor cellEditor = getCellEditor(); if (cellEditor == null) { @@ -1233,12 +1185,10 @@ public class Grid extends BaseGridComponent { } /** - * 移除悬浮元素组件 - * - * - * @date 2014-12-21-下午6:23:38 - * - */ + * 移除悬浮元素组件 + * + * @date 2014-12-21-下午6:23:38 + */ public void removeFloatEditor() { FloatEditor floatEditor = getFloatEditor(); if (floatEditor != null) { @@ -1290,31 +1240,24 @@ public class Grid extends BaseGridComponent { // /////////////editor end /** - * 鼠标点击事件 - * - * @param evtX x坐标 - * @param evtY y坐标 - * - * - * @date 2014-12-21-下午6:22:56 - * - */ + * 鼠标点击事件 + * + * @param evtX x坐标 + * @param evtY y坐标 + * @date 2014-12-21-下午6:22:56 + */ public void doMousePress(double evtX, double evtY) { dispatchEvent(new MouseEvent(this, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, (int) evtX, (int) evtY, 1, false)); } /** * 计算oldRectangle,因为CellElement的合并会变成多大的区域. - * - * @param report 当前格子报表 - * @param oldRectangle 之前的选中区域 - * - * @return 插入的区域 - * - * - * @date 2014-12-21-下午6:22:21 - * - */ + * + * @param report 当前格子报表 + * @param oldRectangle 之前的选中区域 + * @return 插入的区域 + * @date 2014-12-21-下午6:22:21 + */ public Rectangle caculateIntersectsUnion(ElementCase report, Rectangle oldRectangle) { Rectangle newRectangle = new Rectangle(oldRectangle); diff --git a/designer/src/com/fr/grid/GridHeader.java b/designer/src/com/fr/grid/GridHeader.java index e5f7be0030..e27bf97359 100644 --- a/designer/src/com/fr/grid/GridHeader.java +++ b/designer/src/com/fr/grid/GridHeader.java @@ -1,5 +1,7 @@ package com.fr.grid; +import com.fr.design.constants.UIConstants; + import java.awt.*; @@ -7,7 +9,7 @@ public abstract class GridHeader extends BaseGridComponent { public final static int SIZE_ADJUST = 4; //属性 - private Color separatorLineColor = new Color(172, 168, 153); //separator lines + private Color separatorLineColor = UIConstants.RULER_LINE_COLOR; //separator lines private Color selectedForeground = Color.black; private Color selectedBackground = new Color(208, 240, 252); diff --git a/designer/src/com/fr/poly/creator/ECBlockEditor.java b/designer/src/com/fr/poly/creator/ECBlockEditor.java index ee8f2b56c2..9048987fbf 100644 --- a/designer/src/com/fr/poly/creator/ECBlockEditor.java +++ b/designer/src/com/fr/poly/creator/ECBlockEditor.java @@ -47,6 +47,9 @@ public class ECBlockEditor extends BlockEditor { @Override public void targetModified(TargetModifiedEvent e) { designer.fireTargetModified(); + if (DesignerContext.isRefreshOnTargetModifiedEnabled()) { + resetSelectionAndChooseState(); + } } }); } diff --git a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java index 1399ad2eb6..bd702a29ce 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java @@ -34,6 +34,7 @@ import com.fr.report.cell.CellElement; import com.fr.report.cell.TemplateCellElement; import com.fr.report.cell.cellattr.CellExpandAttr; import com.fr.report.cell.cellattr.core.group.DSColumn; +import com.fr.report.cell.cellattr.core.group.FilterTypeEnum; import com.fr.report.cell.cellattr.core.group.SelectCount; import javax.swing.*; @@ -46,6 +47,9 @@ import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; +import static com.fr.report.cell.cellattr.core.group.FilterTypeEnum.*; + + /** * 单元格元素 数据列编辑器 * @@ -58,10 +62,6 @@ public class CellDSColumnEditor extends CellQuickEditor { private static final double P = TableLayout.PREFERRED, F = TableLayout.FILL; private static final Color TIP_FONT_COLOR = new Color(0x7F333334, true); - private enum FilterType { - //前N个 后N个 奇数 偶数 自定义 未定义 - TOP, BOTTOM, ODD, EVEN, SPECIFY, UNDEFINE - } private JPanel dsColumnRegion; private JPanel centerPane; @@ -219,7 +219,7 @@ public class CellDSColumnEditor extends CellQuickEditor { dataPane = new SelectedDataColumnPane(true, true, tc, cellElement); groupPane = new ResultSetGroupDockingPane(); dataPane.addListener(dataListener); - groupPane.addListener(groupListener); + groupPane.setListener(groupListener); double[] rowSize = {P}, columnSize = {P, F}; UILabel uiLabel = new UILabel(Inter.getLocText("FR-Designer_Filter_Conditions")); @@ -669,6 +669,69 @@ public class CellDSColumnEditor extends CellQuickEditor { private JFormulaField topFormulaPane; private JFormulaField bottomFormulaPane; + private ActionListener actionListener = new ActionListener() { + public void actionPerformed(ActionEvent evt) { + int selectIndex = rsComboBox.getSelectedIndex(); + CardLayout setCardPaneLayout = (CardLayout) setCardPane.getLayout(); + CardLayout tipCardPaneLayout = (CardLayout) tipCardPane.getLayout(); + if (selectIndex == TOP.getValue()) { + //前N个 + setCardPaneLayout.show(setCardPane, TOP.name()); + tipCardPaneLayout.show(tipCardPane, TOP.name()); + //隐藏tip 显示set + setCardPane.setPreferredSize(new Dimension(156, 20)); + TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, VGAP); + tipCardPane.setPreferredSize(new Dimension(0, 0)); + TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, 0); + } else if (selectIndex == BOTTOM.getValue()) { + //后N个 + setCardPaneLayout.show(setCardPane, BOTTOM.name()); + tipCardPaneLayout.show(tipCardPane, BOTTOM.name()); + //隐藏tip 显示set + setCardPane.setPreferredSize(new Dimension(156, 20)); + TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, VGAP); + tipCardPane.setPreferredSize(new Dimension(0, 0)); + TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, 0); + } else if (selectIndex == ODD.getValue()) { + //奇数 + setCardPaneLayout.show(setCardPane, ODD.name()); + tipCardPaneLayout.show(tipCardPane, ODD.name()); + //隐藏set 显示tip + setCardPane.setPreferredSize(new Dimension(0, 0)); + TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, 0); + tipCardPane.setPreferredSize(new Dimension(224, 40)); + TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, VGAP_INNER); + } else if (selectIndex == EVEN.getValue()) { + //偶数 + setCardPaneLayout.show(setCardPane, EVEN.name()); + tipCardPaneLayout.show(tipCardPane, EVEN.name()); + //隐藏set 显示tip + setCardPane.setPreferredSize(new Dimension(0, 0)); + TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, 0); + tipCardPane.setPreferredSize(new Dimension(224, 40)); + TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, VGAP_INNER); + } else if (selectIndex == SPECIFY.getValue()) { + //指定 + setCardPaneLayout.show(setCardPane, SPECIFY.name()); + tipCardPaneLayout.show(tipCardPane, SPECIFY.name()); + //显示set和tip + setCardPane.setPreferredSize(new Dimension(156, 20)); + TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, VGAP); + tipCardPane.setPreferredSize(new Dimension(224, 40)); + TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, VGAP_INNER); + } else { + //未定义 + setCardPaneLayout.show(setCardPane, UNDEFINE.name()); + tipCardPaneLayout.show(tipCardPane, UNDEFINE.name()); + //隐藏set和tip + setCardPane.setPreferredSize(new Dimension(0, 0)); + TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, 0); + tipCardPane.setPreferredSize(new Dimension(0, 0)); + TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, 0); + } + } + }; + public ResultSetFilterConfigPane() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); UILabel filterLabel = new UILabel(Inter.getLocText("BindColumn-Results_Filter")); @@ -681,65 +744,7 @@ public class CellDSColumnEditor extends CellQuickEditor { Inter.getLocText("Even"), Inter.getLocText("Specify") }); - rsComboBox.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent evt) { - int selectIndex = rsComboBox.getSelectedIndex(); - CardLayout setCardPaneLayout = (CardLayout) setCardPane.getLayout(); - CardLayout tipCardPaneLayout = (CardLayout) tipCardPane.getLayout(); - if (selectIndex == 1) { - //前N个 - setCardPaneLayout.show(setCardPane, FilterType.TOP.name()); - tipCardPaneLayout.show(tipCardPane, FilterType.TOP.name()); - //隐藏tip 显示set - setCardPane.setPreferredSize(new Dimension(156, 20)); - TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, VGAP); - tipCardPane.setPreferredSize(new Dimension(0, 0)); - TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, 0); - } else if (selectIndex == 2) { - //后N个 - setCardPaneLayout.show(setCardPane, FilterType.BOTTOM.name()); - tipCardPaneLayout.show(tipCardPane, FilterType.BOTTOM.name()); - //隐藏tip 显示set - setCardPane.setPreferredSize(new Dimension(156, 20)); - TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, VGAP); - tipCardPane.setPreferredSize(new Dimension(0, 0)); - TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, 0); - } else if (selectIndex == 3) { - //奇数 - setCardPaneLayout.show(setCardPane, FilterType.ODD.name()); - tipCardPaneLayout.show(tipCardPane, FilterType.ODD.name()); - //隐藏set 显示tip - setCardPane.setPreferredSize(new Dimension(0, 0)); - TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, 0); - tipCardPane.setPreferredSize(new Dimension(224, 40)); - TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, VGAP_INNER); - } else if (selectIndex == 4) { - setCardPaneLayout.show(setCardPane, FilterType.EVEN.name()); - tipCardPaneLayout.show(tipCardPane, FilterType.EVEN.name()); - //隐藏set 显示tip - setCardPane.setPreferredSize(new Dimension(0, 0)); - TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, 0); - tipCardPane.setPreferredSize(new Dimension(224, 40)); - TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, VGAP_INNER); - } else if (selectIndex == 5) { - setCardPaneLayout.show(setCardPane, FilterType.SPECIFY.name()); - tipCardPaneLayout.show(tipCardPane, FilterType.SPECIFY.name()); - //显示set和tip - setCardPane.setPreferredSize(new Dimension(156, 20)); - TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, VGAP); - tipCardPane.setPreferredSize(new Dimension(224, 40)); - TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, VGAP_INNER); - } else { - setCardPaneLayout.show(setCardPane, FilterType.UNDEFINE.name()); - tipCardPaneLayout.show(tipCardPane, FilterType.UNDEFINE.name()); - //隐藏set和tip - setCardPane.setPreferredSize(new Dimension(0, 0)); - TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, 0); - tipCardPane.setPreferredSize(new Dimension(0, 0)); - TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, 0); - } - } - }); + rsComboBox.addActionListener(actionListener); //配置展示CardLayout setCardPane = FRGUIPaneFactory.createCardLayout_S_Pane(); //提示信息展示CardLayout @@ -747,36 +752,36 @@ public class CellDSColumnEditor extends CellQuickEditor { //前N个 topFormulaPane = new JFormulaField(DEFAULT_VALUE); - setCardPane.add(topFormulaPane, FilterType.TOP.name()); - tipCardPane.add(new JPanel(), FilterType.TOP.name()); + setCardPane.add(topFormulaPane, TOP.name()); + tipCardPane.add(new JPanel(), TOP.name()); //后N个 bottomFormulaPane = new JFormulaField(DEFAULT_VALUE); - setCardPane.add(bottomFormulaPane, FilterType.BOTTOM.name()); - tipCardPane.add(new JPanel(), FilterType.BOTTOM.name()); + setCardPane.add(bottomFormulaPane, BOTTOM.name()); + tipCardPane.add(new JPanel(), BOTTOM.name()); //自定义值下方没有提示信息,也没有输入框 - setCardPane.add(new JPanel(), FilterType.UNDEFINE.name()); - tipCardPane.add(new JPanel(), FilterType.UNDEFINE.name()); + setCardPane.add(new JPanel(), UNDEFINE.name()); + tipCardPane.add(new JPanel(), UNDEFINE.name()); //奇数 UILabel 占一行作为提示信息 - setCardPane.add(new JPanel(), FilterType.ODD.name()); + setCardPane.add(new JPanel(), ODD.name()); MultilineLabel oddTip = new MultilineLabel(Inter.getLocText("FS-Designer_DS_Filter_Odd_Tip")); oddTip.setForeground(TIP_FONT_COLOR); - tipCardPane.add(oddTip, FilterType.ODD.name()); + tipCardPane.add(oddTip, ODD.name()); //偶数 UILabel 占一行作为提示信息 - setCardPane.add(new JPanel(), FilterType.EVEN.name()); + setCardPane.add(new JPanel(), EVEN.name()); MultilineLabel evenTip = new MultilineLabel(Inter.getLocText("FS-Designer_DS_Filter_Even_Tip")); evenTip.setForeground(TIP_FONT_COLOR); - tipCardPane.add(evenTip, FilterType.EVEN.name()); + tipCardPane.add(evenTip, EVEN.name()); //输入框占用右半边,提示信息占一行 serialTextField = new UITextField(16); - setCardPane.add(serialTextField, FilterType.SPECIFY.name()); + setCardPane.add(serialTextField, SPECIFY.name()); MultilineLabel specifyTip = new MultilineLabel(Inter.getLocText("FS-Designer_DS_Filter_Specify_Tip")); specifyTip.setForeground(TIP_FONT_COLOR); - tipCardPane.add(specifyTip, FilterType.SPECIFY.name()); + tipCardPane.add(specifyTip, SPECIFY.name()); contentPane = TableLayoutHelper.createDiffVGapTableLayoutPane(new Component[][]{ {filterLabel, rsComboBox}, {null, setCardPane}, @@ -787,6 +792,7 @@ public class CellDSColumnEditor extends CellQuickEditor { } public void populate(CellElement cellElement) { + rsComboBox.removeActionListener(actionListener); if (cellElement != null) { Object value = cellElement.getValue(); if (value != null && value instanceof DSColumn) { @@ -794,42 +800,59 @@ public class CellDSColumnEditor extends CellQuickEditor { SelectCount selectCount = dSColumn.getSelectCount(); this.topFormulaPane.populateElement(cellElement); this.bottomFormulaPane.populateElement(cellElement); + CardLayout setCardPaneLayout = (CardLayout) setCardPane.getLayout(); + CardLayout tipCardPaneLayout = (CardLayout) tipCardPane.getLayout(); if (selectCount != null) { int selectCountType = selectCount.getType(); this.rsComboBox.setSelectedIndex(selectCountType); - switch (selectCountType) { - case SelectCount.TOP: + switch (FilterTypeEnum.getFilterByValue(selectCountType)) { + case TOP: this.topFormulaPane.populate(selectCount.getFormulaCount()); + //前N个 + setCardPaneLayout.show(setCardPane, TOP.name()); + tipCardPaneLayout.show(tipCardPane, TOP.name()); //隐藏tip 显示set setCardPane.setPreferredSize(new Dimension(156, 20)); TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, VGAP); tipCardPane.setPreferredSize(new Dimension(0, 0)); TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, 0); break; - case SelectCount.BOTTOM: + case BOTTOM: this.bottomFormulaPane.populate(selectCount.getFormulaCount()); + //后N个 + setCardPaneLayout.show(setCardPane, BOTTOM.name()); + tipCardPaneLayout.show(tipCardPane, BOTTOM.name()); //隐藏tip 显示set setCardPane.setPreferredSize(new Dimension(156, 20)); TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, VGAP); tipCardPane.setPreferredSize(new Dimension(0, 0)); TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, 0); break; - case SelectCount.SPECIFY: + case SPECIFY: this.serialTextField.setText(selectCount.getSerial()); + //指定 + setCardPaneLayout.show(setCardPane, SPECIFY.name()); + tipCardPaneLayout.show(tipCardPane, SPECIFY.name()); //显示set和tip setCardPane.setPreferredSize(new Dimension(156, 20)); TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, VGAP); tipCardPane.setPreferredSize(new Dimension(224, 40)); TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, VGAP_INNER); break; - case SelectCount.EVEN: + case EVEN: + //偶数 + setCardPaneLayout.show(setCardPane, EVEN.name()); + tipCardPaneLayout.show(tipCardPane, EVEN.name()); //隐藏set 显示tip setCardPane.setPreferredSize(new Dimension(0, 0)); TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, 0); tipCardPane.setPreferredSize(new Dimension(224, 40)); TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, VGAP_INNER); break; - case SelectCount.ODD: + case ODD: + //奇数 + setCardPaneLayout.show(setCardPane, ODD.name()); + tipCardPaneLayout.show(tipCardPane, ODD.name()); //隐藏set 显示tip setCardPane.setPreferredSize(new Dimension(0, 0)); TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, 0); @@ -837,6 +860,9 @@ public class CellDSColumnEditor extends CellQuickEditor { TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, VGAP_INNER); break; default: + //未定义 + setCardPaneLayout.show(setCardPane, UNDEFINE.name()); + tipCardPaneLayout.show(tipCardPane, UNDEFINE.name()); //隐藏set和tip setCardPane.setPreferredSize(new Dimension(0, 0)); TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, 0); @@ -844,6 +870,9 @@ public class CellDSColumnEditor extends CellQuickEditor { TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, 0); } } else { + //未定义 + setCardPaneLayout.show(setCardPane, UNDEFINE.name()); + tipCardPaneLayout.show(tipCardPane, UNDEFINE.name()); //隐藏set和tip setCardPane.setPreferredSize(new Dimension(0, 0)); TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, 0); @@ -852,6 +881,7 @@ public class CellDSColumnEditor extends CellQuickEditor { } } } + rsComboBox.addActionListener(actionListener); } public void update(CellElement cellElement) { @@ -866,11 +896,11 @@ public class CellDSColumnEditor extends CellQuickEditor { SelectCount selectCount = new SelectCount(); selectCount.setType(selectedFilterIndex); dSColumn.setSelectCount(selectCount); - if (selectedFilterIndex == SelectCount.TOP) { + if (selectedFilterIndex == TOP.getValue()) { selectCount.setFormulaCount(this.topFormulaPane.getFormulaText()); - } else if (selectedFilterIndex == SelectCount.BOTTOM) { + } else if (selectedFilterIndex == BOTTOM.getValue()) { selectCount.setFormulaCount(this.bottomFormulaPane.getFormulaText()); - } else if (selectedFilterIndex == SelectCount.SPECIFY) { + } else if (selectedFilterIndex == SPECIFY.getValue()) { selectCount.setSerial(this.serialTextField.getText()); } } @@ -887,6 +917,7 @@ public class CellDSColumnEditor extends CellQuickEditor { topFormulaPane.addListener(formulaListener); bottomFormulaPane.addListener(formulaListener); rsComboBox.registerChangeListener(formulaListener); + serialTextField.registerChangeListener(formulaListener); } } diff --git a/designer/src/com/fr/start/Designer.java b/designer/src/com/fr/start/Designer.java index bd4c455e71..d844923813 100644 --- a/designer/src/com/fr/start/Designer.java +++ b/designer/src/com/fr/start/Designer.java @@ -51,17 +51,17 @@ public class Designer extends BaseDesigner { private static final int TOOLBARPANEVGAP = -4; private static final int PREVIEW_DOWN_X_GAP = 92; private static final int GAP = 7; - + private static final String OLD_ENV_FOLDER_71 = ".FineReport71"; private static final String OLD_ENV_FOLDER_70 = ".FineReport70"; private UserInfoPane userInfoPane; - + private UIButton saveButton; private UIButton undo; private UIButton redo; private UIPreviewButton run; - + /** * 设计器启动的Main方法 @@ -135,32 +135,31 @@ public class Designer extends BaseDesigner { public UILargeToolbar createLargeToolbar() { UILargeToolbar largeToolbar = super.createLargeToolbar(); largeToolbar.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 4)); - JPanel templeJpanel = new JPanel() { - public Dimension getPreferredSize() { - Dimension dim = super.getPreferredSize(); - dim.width = 1; - return dim; - } - }; - templeJpanel.setBackground(Color.WHITE); - largeToolbar.add(templeJpanel); + largeToolbar.add(generateEmptyGap(1)); createRunButton(largeToolbar); largeToolbar.add(run); - templeJpanel = new JPanel() { + run.setBackground(Color.WHITE); + largeToolbar.add(generateEmptyGap(GAP)); + largeToolbar.addSeparator(new Dimension(2, 42)); + largeToolbar.setBorder(new MatteBorder(new Insets(0, 0, 1, 0), UIConstants.LINE_COLOR)); + return largeToolbar; + } + + private JPanel generateEmptyGap(final int width) { + JPanel panel = new JPanel() { public Dimension getPreferredSize() { Dimension dim = super.getPreferredSize(); - dim.width = GAP; + dim.width = width; return dim; } }; - templeJpanel.setBackground(Color.WHITE); - largeToolbar.add(templeJpanel); - largeToolbar.setBorder(new MatteBorder(new Insets(0, 0, 1, 0), UIConstants.LINE_COLOR)); - return largeToolbar; + panel.setBackground(Color.WHITE); + return panel; } /** * 创建上面一排的工具栏按钮 + * * @return 按钮 */ public UIButton[] createUp() { @@ -183,7 +182,7 @@ public class Designer extends BaseDesigner { }); return saveButton; } - + private UIButton createUndoButton() { undo = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/undo.png")); undo.setToolTipText(KeySetUtils.UNDO.getMenuKeySetName()); @@ -292,9 +291,10 @@ public class Designer extends BaseDesigner { /** * 生成工具栏 + * * @param toolbarComponent 工具栏 * @param plus 对象 - * @return 更新后的toolbar + * @return 更新后的toolbar */ public JComponent resetToolBar(JComponent toolbarComponent, ToolBarMenuDockPlus plus) { //如果是处于权限编辑状态 @@ -333,16 +333,15 @@ public class Designer extends BaseDesigner { public JTemplate createNewTemplate() { return new JWorkBook(); } - + /** - * 创建论坛登录面板, chart那边不需要 - * - * @return 面板组件 - * - */ - public Component createBBSLoginPane(){ - if (userInfoPane == null){ - userInfoPane = new UserInfoPane(); + * 创建论坛登录面板, chart那边不需要 + * + * @return 面板组件 + */ + public Component createBBSLoginPane() { + if (userInfoPane == null) { + userInfoPane = new UserInfoPane(); } return userInfoPane; } @@ -352,7 +351,7 @@ public class Designer extends BaseDesigner { * * @return 面板组件 */ - public Component createAlphafinePane() { + public Component createAlphaFinePane() { return AlphaFinePane.getAlphaFinePane(); } @@ -360,68 +359,67 @@ public class Designer extends BaseDesigner { protected SplashPane createSplashPane() { return new ReportSplashPane(); } - + /** - * 收集用户信息吗 - * - */ + * 收集用户信息吗 + */ protected void collectUserInformation() { - //定制的就不弹出来了 - if (!ComparatorUtils.equals(ProductConstants.APP_NAME, ProductConstants.DEFAULT_APPNAME)) { - return; - } - - DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); - final String key = envManager.getActivationKey(); - //本地验证通过 - if(ActiveKeyGenerator.localVerify(key)){ - onLineVerify(envManager, key); - UserInfoLabel.showBBSDialog(); - return; - } - - if(StableUtils.checkDesignerActive(readOldKey())){ - //只要有老的key, 就不弹窗, 下次启动的时候, 在线验证下就行. - String newKey = ActiveKeyGenerator.generateActiveKey(); - envManager.setActivationKey(newKey); - UserInfoLabel.showBBSDialog(); - return; - } - + //定制的就不弹出来了 + if (!ComparatorUtils.equals(ProductConstants.APP_NAME, ProductConstants.DEFAULT_APP_NAME)) { + return; + } + + DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); + final String key = envManager.getActivationKey(); + //本地验证通过 + if (ActiveKeyGenerator.localVerify(key)) { + onLineVerify(envManager, key); + UserInfoLabel.showBBSDialog(); + return; + } + + if (StableUtils.checkDesignerActive(readOldKey())) { + //只要有老的key, 就不弹窗, 下次启动的时候, 在线验证下就行. + String newKey = ActiveKeyGenerator.generateActiveKey(); + envManager.setActivationKey(newKey); + UserInfoLabel.showBBSDialog(); + return; + } + CollectUserInformationDialog activeDialog = new CollectUserInformationDialog( - DesignerContext.getDesignerFrame()); + DesignerContext.getDesignerFrame()); activeDialog.setVisible(true); } - - private void onLineVerify(DesignerEnvManager envManager, final String key){ - int status = envManager.getActiveKeyStatus(); - //没有联网验证过 - if (status != 0) { - Thread authThread = new Thread(new Runnable() { - - @Override - public void run() { - ActiveKeyGenerator.onLineVerify(key); - } - }); - authThread.start(); - } + + private void onLineVerify(DesignerEnvManager envManager, final String key) { + int status = envManager.getActiveKeyStatus(); + //没有联网验证过 + if (status != 0) { + Thread authThread = new Thread(new Runnable() { + + @Override + public void run() { + ActiveKeyGenerator.onLineVerify(key); + } + }); + authThread.start(); + } } - - private File getOldEnvFile(String folderName){ - String userHome = System.getProperty("user.home"); - if (userHome == null) { - userHome = System.getProperty("userHome"); - } - String filePath = StableUtils.pathJoin(userHome, folderName, ProductConstants.APP_NAME + "Env.xml"); + + private File getOldEnvFile(String folderName) { + String userHome = System.getProperty("user.home"); + if (userHome == null) { + userHome = System.getProperty("userHome"); + } + String filePath = StableUtils.pathJoin(userHome, folderName, ProductConstants.APP_NAME + "Env.xml"); return new File(filePath); } - - private String getOldActiveKeyFromFile(File envFile){ + + private String getOldActiveKeyFromFile(File envFile) { if (!envFile.exists()) { - return StringUtils.EMPTY; - } - + return StringUtils.EMPTY; + } + DesignerEnvManager temp = new DesignerEnvManager(); try { XMLTools.readFileXML(temp, envFile); @@ -430,26 +428,25 @@ public class Designer extends BaseDesigner { } return temp.getActivationKey(); } - + //默认只从7.0和711的设计器里读取key - private String readOldKey(){ - File file71 = getOldEnvFile(OLD_ENV_FOLDER_71); - if (!file71.exists()) { - File file70 = getOldEnvFile(OLD_ENV_FOLDER_70); - return getOldActiveKeyFromFile(file70); - } - - return getOldActiveKeyFromFile(file71); + private String readOldKey() { + File file71 = getOldEnvFile(OLD_ENV_FOLDER_71); + if (!file71.exists()) { + File file70 = getOldEnvFile(OLD_ENV_FOLDER_70); + return getOldActiveKeyFromFile(file70); + } + + return getOldActiveKeyFromFile(file71); } - + /** - * 设计器退出时, 做的一些操作. - * - */ - public void shutDown(){ - InformationCollector collector = InformationCollector.getInstance(); - collector.collectStopTime(); - collector.saveXMLFile(); + * 设计器退出时, 做的一些操作. + */ + public void shutDown() { + InformationCollector collector = InformationCollector.getInstance(); + collector.collectStopTime(); + collector.saveXMLFile(); ServletContext.fireServletStopListener(); } diff --git a/designer_base/src/com/fr/design/DesignerEnvManager.java b/designer_base/src/com/fr/design/DesignerEnvManager.java index 4a40979411..568deb96d8 100644 --- a/designer_base/src/com/fr/design/DesignerEnvManager.java +++ b/designer_base/src/com/fr/design/DesignerEnvManager.java @@ -13,22 +13,47 @@ import com.fr.design.constants.UIConstants; import com.fr.env.RemoteEnv; import com.fr.env.SignIn; import com.fr.file.FILEFactory; -import com.fr.general.*; -import com.fr.stable.*; +import com.fr.general.ComparatorUtils; +import com.fr.general.FRLevel; +import com.fr.general.FRLogFormatter; +import com.fr.general.FRLogger; +import com.fr.general.GeneralContext; +import com.fr.general.IOUtils; +import com.fr.general.Inter; +import com.fr.stable.Constants; +import com.fr.stable.EnvChangedListener; +import com.fr.stable.ListMap; +import com.fr.stable.ProductConstants; +import com.fr.stable.StableUtils; +import com.fr.stable.StringUtils; import com.fr.stable.core.UUID; import com.fr.stable.project.ProjectConstants; -import com.fr.stable.xml.*; +import com.fr.stable.xml.XMLPrintWriter; +import com.fr.stable.xml.XMLReadable; +import com.fr.stable.xml.XMLTools; +import com.fr.stable.xml.XMLWriter; +import com.fr.stable.xml.XMLableReader; +import org.apache.log4j.Level; import javax.swing.*; import javax.swing.SwingWorker.StateValue; import java.awt.*; -import java.io.*; -import java.util.*; +import java.io.File; +import java.io.FileOutputStream; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.OutputStream; +import java.io.StringReader; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.GregorianCalendar; +import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Map.Entry; import java.util.logging.FileHandler; import java.util.logging.Handler; -import org.apache.log4j.Level; /** * The manager of Designer GUI. @@ -36,6 +61,7 @@ import org.apache.log4j.Level; public class DesignerEnvManager implements XMLReadable, XMLWriter { private static final int MAX_SHOW_NUM = 10; + private static final String VERSION_80 = "80"; private static DesignerEnvManager designerEnvManager; // gui. private String activationKey = null; @@ -145,19 +171,19 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { designerEnvManager.setCurEnvName(name); } } - + GeneralContext.addEnvChangedListener(new EnvChangedListener() { @Override public void envChanged() { - + designerEnvManager.setCurrentDirectoryPrefix(FILEFactory.ENV_PREFIX); designerEnvManager.setDialogCurrentDirectory(ProjectConstants.REPORTLETS_NAME); } }); - + } - + return designerEnvManager; } @@ -219,9 +245,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { calender.setTimeInMillis(System.currentTimeMillis()); String today = calender.get(Calendar.YEAR) + "-" + (calender.get(Calendar.MONTH) + 1) + "-" + calender.get(Calendar.DAY_OF_MONTH); - String fileName = StableUtils.pathJoin(new String[]{ - logLocation, "fr_" + today + "_%g.log" - }); + String fileName = StableUtils.pathJoin(logLocation, "fr_" + today + "_%g.log"); if (!new java.io.File(fileName).exists()) { StableUtils.makesureFileExist(new java.io.File(fileName)); } @@ -253,11 +277,14 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { try { FileWriter fileWriter = new FileWriter(envFile); File oldEnvFile = new File(ProductConstants.getEnvHome() + File.separator + ProductConstants.APP_NAME + "6-1" + "Env.xml"); + File envFile80 = new File(getEnvHome(VERSION_80) + File.separator + getEnvFile().getName()); if (oldEnvFile.exists()) { // marks:兼容DesignerEnv6-1.xml FileReader fileReader = new FileReader(oldEnvFile); Utils.copyCharTo(fileReader, fileWriter); fileReader.close(); + } else if (envFile80.exists()) { + compatibilityPrevVersion(envFile80); } else { // marks:生成一个新的xml文件 StringReader stringReader = new StringReader(""); @@ -270,6 +297,33 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { } } + private static String getEnvHome(String version) { + String userHome = System.getProperty("user.home"); + if (userHome == null) { + userHome = System.getProperty("userHome"); + } + + File envHome = new File(userHome + File.separator + "." + ProductConstants.APP_NAME + version); + if (!envHome.exists()) { + StableUtils.mkdirs(envHome); + } + + return envHome.getAbsolutePath(); + } + + private void compatibilityPrevVersion(File prevEnvFile) { + try { + XMLTools.readFileXML(designerEnvManager, prevEnvFile); + } catch (Exception e) { + FRContext.getLogger().error(e.getMessage(), e); + } + // 清空前一个版本中的工作目录和最近打开 + nameEnvMap = new ListMap(); + recentOpenedFilePathList = new ArrayList(); + curEnvName = null; + designerEnvManager.saveXMLFile(); + } + public static void setEnvFile(File envFile) { DesignerEnvManager.envFile = envFile; } @@ -285,6 +339,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { /** * 是否启用了https + * * @return 同上 */ public boolean isHttps() { @@ -311,7 +366,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { return certificatePass; } - public void setCertificatePass(String certificatePass){ + public void setCertificatePass(String certificatePass) { this.certificatePass = certificatePass; } @@ -531,13 +586,13 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { this.reportLengthUnit = reportLengthUnit; } - private void writeTempFile(File tempFile){ - try{ + private void writeTempFile(File tempFile) { + try { OutputStream fout = new FileOutputStream(tempFile); XMLTools.writeOutputStreamXML(this, fout); fout.flush(); fout.close(); - }catch (Exception e) { + } catch (Exception e) { FRContext.getLogger().error(e.getMessage()); } } @@ -546,9 +601,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { * 保存设计器的配置文件, 该文件不在env的resource目录下 * 而是在Consts.getEnvHome() + File.separator + Consts.APP_NAME * - * * @date 2014-9-29-上午11:04:23 - * */ public void saveXMLFile() { File xmlFile = this.getDesignerEnvFile(); @@ -577,7 +630,6 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { * 是否加入产品改良 * * @return 是否加入产品改良 - * */ public boolean isJoinProductImprove() { return joinProductImprove; @@ -585,7 +637,6 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { /** * 设置加入产品改良 - * */ public void setJoinProductImprove(boolean joinProductImprove) { this.joinProductImprove = joinProductImprove; @@ -1155,63 +1206,63 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { this.lastShowBBSNewsTime = lastShowBBSNewsTime; } - private void readXMLVersion(XMLableReader reader){ + private void readXMLVersion(XMLableReader reader) { String tmpVal; if ((tmpVal = reader.getElementValue()) != null) { reader.setXmlVersionByString(tmpVal); } } - private void readActiveKey(XMLableReader reader){ + private void readActiveKey(XMLableReader reader) { String tmpVal; if ((tmpVal = reader.getElementValue()) != null) { this.setActivationKey(tmpVal); } } - private void readLogLocation(XMLableReader reader){ + private void readLogLocation(XMLableReader reader) { String tmpVal; if ((tmpVal = reader.getElementValue()) != null) { this.setLogLocation(tmpVal); } } - private void readLanguage(XMLableReader reader){ + private void readLanguage(XMLableReader reader) { String tmpVal; if ((tmpVal = reader.getElementValue()) != null) { this.setLanguage(Integer.parseInt(tmpVal)); } } - private void readJettyPort(XMLableReader reader){ + private void readJettyPort(XMLableReader reader) { String tmpVal; if ((tmpVal = reader.getElementValue()) != null) { this.setJettyServerPort(Integer.parseInt(tmpVal)); } } - private void readPageLengthUnit(XMLableReader reader){ + private void readPageLengthUnit(XMLableReader reader) { String tmpVal; if (StringUtils.isNotBlank(tmpVal = reader.getElementValue())) { this.pageLengthUnit = Short.parseShort(tmpVal); } } - private void readReportLengthUnit(XMLableReader reader){ + private void readReportLengthUnit(XMLableReader reader) { String tmpVal; if (StringUtils.isNotBlank(tmpVal = reader.getElementValue())) { this.reportLengthUnit = Short.parseShort(tmpVal); } } - private void readLastOpenFile(XMLableReader reader){ + private void readLastOpenFile(XMLableReader reader) { String tmpVal; if (StringUtils.isNotBlank(tmpVal = reader.getElementValue())) { this.lastOpenFilePath = tmpVal; } } - private void readEncrytionKey(XMLableReader reader){ + private void readEncrytionKey(XMLableReader reader) { String tmpVal; if (StringUtils.isNotBlank(tmpVal = reader.getElementValue())) { this.encryptionKey = tmpVal; @@ -1219,15 +1270,14 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { } - - private void readLastBBSTime(XMLableReader reader){ + private void readLastBBSTime(XMLableReader reader) { String tmpVal; if (StringUtils.isNotBlank(tmpVal = reader.getElementValue())) { this.lastShowBBSTime = tmpVal; } } - private void readLastBBSNewsTime(XMLableReader reader){ + private void readLastBBSNewsTime(XMLableReader reader) { String tmpVal; if (StringUtils.isNotBlank(tmpVal = reader.getElementValue())) { this.lastShowBBSNewsTime = tmpVal; @@ -1275,15 +1325,15 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { readEncrytionKey(reader); } else if ("jdkHome".equals(name)) { this.jdkHome = reader.getElementValue(); - }else if ("lastBBSTime".equals(name)){ + } else if ("lastBBSTime".equals(name)) { readLastBBSTime(reader); - } else if ("lastBBSNewsTime".equals(name)){ + } else if ("lastBBSNewsTime".equals(name)) { readLastBBSNewsTime(reader); - }else if ("uuid".equals(name)){ + } else if ("uuid".equals(name)) { readUUID(reader); - } else if ("status".equals(name)){ + } else if ("status".equals(name)) { readActiveStatus(reader); - } else if (ComparatorUtils.equals(CAS_PARAS,name)){ + } else if (ComparatorUtils.equals(CAS_PARAS, name)) { readHttpsParas(reader); } else if (name.equals("AlphaFineConfigManager")) { readAlphaFineAttr(reader); @@ -1297,12 +1347,12 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { reader.readXMLObject(this.alphaFineConfigManager = new AlphaFineConfigManager()); } - private void readHttpsParas(XMLableReader reader){ + private void readHttpsParas(XMLableReader reader) { String tempVal; - if((tempVal = reader.getAttrAsString(CAS_CERTIFICATE_PATH, null)) != null){ + if ((tempVal = reader.getAttrAsString(CAS_CERTIFICATE_PATH, null)) != null) { this.setCertificatePath(tempVal); } - if((tempVal = reader.getAttrAsString(CAS_CERTIFICATE_PASSWORD, null)) != null){ + if ((tempVal = reader.getAttrAsString(CAS_CERTIFICATE_PASSWORD, null)) != null) { this.setCertificatePass(tempVal); } @@ -1429,18 +1479,6 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { } } }); - - // xml读完之后,看一下nameEnvMap是不是长度为0 - if (nameEnvMap.isEmpty() && StableUtils.getInstallHome() != null) { - String install_home = StableUtils.getInstallHome(); - if (install_home != null && new java.io.File(install_home).exists()) { - nameEnvMap.put("Default", LocalEnv.createEnv(StableUtils.pathJoin(new String[]{ - install_home, ProjectConstants.WEBAPP_NAME, ProjectConstants.WEBINF_NAME - }))); - - curEnvName = "Default"; - } - } } private void readRecentOpenFileList(XMLableReader reader) { @@ -1519,14 +1557,14 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { } //写入uuid - private void writeUUID(XMLPrintWriter writer){ + private void writeUUID(XMLPrintWriter writer) { writer.startTAG("uuid"); writer.textNode(getUUID()); writer.end(); } //读取uuid - private void readUUID(XMLableReader reader){ + private void readUUID(XMLableReader reader) { String tmpVal; if (StringUtils.isNotBlank(tmpVal = reader.getElementValue())) { this.uuid = tmpVal; @@ -1534,8 +1572,8 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { } //写入激活状态 - private void writeActiveStatus(XMLPrintWriter writer){ - if (this.activeKeyStatus == 0){ + private void writeActiveStatus(XMLPrintWriter writer) { + if (this.activeKeyStatus == 0) { writer.startTAG("status"); writer.textNode(this.activeKeyStatus + ""); writer.end(); @@ -1543,7 +1581,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { } //读取激活状态 - private void readActiveStatus(XMLableReader reader){ + private void readActiveStatus(XMLableReader reader) { String tmpVal; if (StringUtils.isNotBlank(tmpVal = reader.getElementValue())) { this.activeKeyStatus = Integer.parseInt(tmpVal); @@ -1596,7 +1634,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { if (!this.isOracleSystemSpace()) { writer.attr("useOracleSystemSpace", this.isOracleSystemSpace()); } - if (!this.isJoinProductImprove()){ + if (!this.isJoinProductImprove()) { writer.attr("joinProductImprove", this.isJoinProductImprove()); } if (!this.isAutoBackUp()) { @@ -1681,29 +1719,29 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { } //写论坛相关的两个属性 - private void writeBBSRelated(XMLPrintWriter writer){ - if (StringUtils.isNotEmpty(this.lastShowBBSTime)){ + private void writeBBSRelated(XMLPrintWriter writer) { + if (StringUtils.isNotEmpty(this.lastShowBBSTime)) { writer.startTAG("lastBBSTime"); writer.textNode(lastShowBBSTime); writer.end(); } - if (StringUtils.isNotEmpty(this.lastShowBBSNewsTime)){ + if (StringUtils.isNotEmpty(this.lastShowBBSNewsTime)) { writer.startTAG("lastBBSNewsTime"); writer.textNode(lastShowBBSNewsTime); writer.end(); } } - private void writeHttpsParas(XMLPrintWriter writer){ + private void writeHttpsParas(XMLPrintWriter writer) { writer.startTAG(CAS_PARAS); - if(StringUtils.isNotBlank(certificatePath)){ + if (StringUtils.isNotBlank(certificatePath)) { writer.attr(CAS_CERTIFICATE_PATH, certificatePath); } - if(StringUtils.isNotBlank(certificatePass)){ + if (StringUtils.isNotBlank(certificatePass)) { writer.attr(CAS_CERTIFICATE_PASSWORD, certificatePass); } - if(isHttps){ + if (isHttps) { writer.attr("enable", true); } writer.end(); @@ -1736,7 +1774,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { if (env == null) { return; } - + writer.startTAG("Env"); writer.classAttr(env.getClass()); writer.attr("name", name); diff --git a/designer_base/src/com/fr/design/actions/TemplateComponentAction.java b/designer_base/src/com/fr/design/actions/TemplateComponentAction.java index 2194c7a791..9637bad2ed 100644 --- a/designer_base/src/com/fr/design/actions/TemplateComponentAction.java +++ b/designer_base/src/com/fr/design/actions/TemplateComponentAction.java @@ -2,6 +2,7 @@ package com.fr.design.actions; import com.fr.design.designer.TargetComponent; +import com.fr.design.mainframe.DesignerContext; public abstract class TemplateComponentAction extends UndoableAction implements TemplateComponentActionInterface { private T t; @@ -24,6 +25,7 @@ public abstract class TemplateComponentAction extends @Override public void prepare4Undo() { + DesignerContext.enableRefreshOnTargetModified(); this.getEditingComponent().fireTargetModified(); T component = getEditingComponent(); if (component == null) { diff --git a/designer_base/src/com/fr/design/actions/help/alphafine/AlphaFineConfigManager.java b/designer_base/src/com/fr/design/actions/help/alphafine/AlphaFineConfigManager.java index 405a5e64d4..8d58ce4578 100644 --- a/designer_base/src/com/fr/design/actions/help/alphafine/AlphaFineConfigManager.java +++ b/designer_base/src/com/fr/design/actions/help/alphafine/AlphaFineConfigManager.java @@ -1,5 +1,6 @@ package com.fr.design.actions.help.alphafine; +import com.fr.base.FRContext; import com.fr.base.FRCoreContext; import com.fr.general.VT4FR; import com.fr.stable.OperatingSystem; @@ -15,79 +16,68 @@ import javax.swing.*; */ public class AlphaFineConfigManager implements XMLable { + private static AlphaFineConfigManager alphaFineConfigManager = new AlphaFineConfigManager(); /** * 是否开启alphafine */ private boolean isEnabled = true; - /** * 是否联网搜索 */ private boolean isSearchOnLine = true; /** - * 快捷键设置 + * 搜索范围 */ - private String shortcuts; - /** - * 搜索范围 + * 快捷键设置 */ - + private String shortcuts; /** * 猜您需要 */ private boolean isContainRecommend = true; - /** * 设置 */ private boolean isContainAction = true; - /** * 帮助文档 */ private boolean isContainDocument = true; - /** * 模板 */ private boolean isContainTemplate = true; - /** * 模板内容 */ private boolean isContainFileContent; - /** * 应用中心 */ private boolean isContainPlugin = true; - /** * 快捷键 */ private KeyStroke shortCutKeyStore; - /** * 是否提醒 */ private boolean isNeedRemind = true; - /** * 直接操作菜单次数 */ private int operateCount; - - - - private static AlphaFineConfigManager alphaFineConfigManager = new AlphaFineConfigManager(); - public static AlphaFineConfigManager getInstance() { return alphaFineConfigManager; } + public static boolean isALPHALicAvailable() { + return FRContext.getCurrentEnv() != null && VT4FR.isLicAvailable(FRCoreContext.getBytes()) && VT4FR.ALPHA_FINE.support(); + } + @Override public Object clone() throws CloneNotSupportedException { AlphaFineConfigManager manager = (AlphaFineConfigManager) super.clone(); @@ -130,8 +120,6 @@ public class AlphaFineConfigManager implements XMLable { writer.end(); } - - public boolean isSearchOnLine() { return isSearchOnLine; } @@ -147,20 +135,20 @@ public class AlphaFineConfigManager implements XMLable { return shortcuts; } + public void setShortcuts(String shortcuts) { + this.shortcuts = shortcuts; + this.shortCutKeyStore = convert2KeyStroke(this.shortcuts); + } + /** * 返回默认快捷键 + * * @return */ private String getDefaultShortCuts() { - return OperatingSystem.isMacOS()? "meta + D" : "ctrl + D"; + return OperatingSystem.isMacOS() ? "meta + D" : "ctrl + D"; } - public void setShortcuts(String shortcuts) { - this.shortcuts = shortcuts; - this.shortCutKeyStore = convert2KeyStroke(this.shortcuts); - } - - public boolean isContainAction() { return isContainAction; } diff --git a/designer_base/src/com/fr/design/actions/server/PlatformManagerAction.java b/designer_base/src/com/fr/design/actions/server/PlatformManagerAction.java index 4448c10249..f8f1cd655e 100644 --- a/designer_base/src/com/fr/design/actions/server/PlatformManagerAction.java +++ b/designer_base/src/com/fr/design/actions/server/PlatformManagerAction.java @@ -15,7 +15,7 @@ public class PlatformManagerAction extends UpdateAction { this.setMenuKeySet(PLATEFORM_MANAGER); this.setName(getMenuKeySet().getMenuKeySetName()); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/web/images/platform/platform_16_16.png")); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/server/platform_16_16.png")); } /** diff --git a/designer_base/src/com/fr/design/condition/LiteConditionPane.java b/designer_base/src/com/fr/design/condition/LiteConditionPane.java index 815699a76e..ab1757153b 100644 --- a/designer_base/src/com/fr/design/condition/LiteConditionPane.java +++ b/designer_base/src/com/fr/design/condition/LiteConditionPane.java @@ -69,6 +69,7 @@ public abstract class LiteConditionPane extends BasicBeanPa private static final int DOWN_PADDING = 4; private static final int STRUT_ONE = 35; private static final int STRUT_TWO = 4; + private static final int ADD_CONTROL_PANE_PADDING_RIGHT = -5; private ActionListener actionListener1 = new ActionListener() { @@ -537,8 +538,14 @@ public abstract class LiteConditionPane extends BasicBeanPa private void initControlPane(JPanel controlPane) { JPanel addControlPane = FRGUIPaneFactory.createRightFlowInnerContainer_S_Pane(); - controlPane.add(addControlPane, BorderLayout.SOUTH); - addControlPane.setBorder(new ModLineBorder(ModLineBorder.TOP)); + addControlPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, ADD_CONTROL_PANE_PADDING_RIGHT)); + JPanel splitPane = new JPanel(); + splitPane.setBorder(new ModLineBorder(ModLineBorder.TOP)); + + JPanel addControlPaneWrapper = new JPanel(new BorderLayout()); + addControlPaneWrapper.add(addControlPane, BorderLayout.CENTER); + addControlPaneWrapper.add(splitPane, BorderLayout.NORTH); + controlPane.add(addControlPaneWrapper, BorderLayout.SOUTH); ButtonGroup bg = new ButtonGroup(); bg.add(andRadioButton); diff --git a/designer_base/src/com/fr/design/constants/UIConstants.java b/designer_base/src/com/fr/design/constants/UIConstants.java index 4d5a5cea5b..5552b09bc7 100644 --- a/designer_base/src/com/fr/design/constants/UIConstants.java +++ b/designer_base/src/com/fr/design/constants/UIConstants.java @@ -64,6 +64,7 @@ public interface UIConstants { Constants.LINE_MEDIUM_DASH_DOT_DOT, //medium dash-dot-dot border Constants.LINE_SLANTED_DASH_DOT, //slanted dash-dot border }; + public static final Color TOOLBAR_BORDER_COLOR = new Color(0xD9DADD); public static final Color COMBOBOX_BTN_NORMAL = new Color(0xD9DADD); public static final Color COMBOBOX_BTN_ROLLOVER = new Color(0xC8C9CD); public static final Color COMBOBOX_BTN_PRESS = new Color(0xD8F2FD); @@ -74,7 +75,7 @@ public interface UIConstants { public static final Color OCEAN_BLUE = new Color(141, 179, 217); public static final Color DARK_BLUE = new Color(0, 88, 144); public static final Color NORMAL_BACKGROUND = new Color(212, 212, 216); - public static final Color TREE_BACKGROUND = new Color(240, 240, 243); + public static final Color TREE_BACKGROUND = new Color(245, 245, 247); public static final Color TOOL_PANE_BACKGROUND = new Color(232, 232, 223); public static final Color SELECT_TAB = new Color(245, 245, 247); public static final Color TOOLBARUI_BACKGROUND = new Color(255, 255, 255); @@ -102,11 +103,11 @@ public interface UIConstants { public static final Color SELECTED_BACKGROUND = new Color(0xdeedfe); public static final Color SELECTED_BORDER_LINE_COLOR = new Color(0x3384f0); public static final Color DEFAULT_BG_RULER = new Color(0xffffff); - public static final Color RULER_LINE_COLOR = new Color(0xababab); + public static final Color RULER_LINE_COLOR = new Color(0xD9DADD); public static final Color RULER_SCALE_COLOR = new Color(0x4e504f); public static final Color PROPERTY_PANE_BACKGROUND = new Color(0xdadadd); public static final Color SPLIT_LINE = new Color(201, 198, 184); - public static final Color TITLED_BORDER_COLOR = new Color(0xededee); + public static final Color TITLED_BORDER_COLOR = new Color(0xe8e8e9); public static final Color POP_DIALOG_BORDER = new Color(218, 218, 221); public static final Color PROPERTY_DIALOG_BORDER = new Color(0xc9c9cd); public static final Color TAB_BUTTON_HOVER = new Color(231, 230, 235); @@ -114,6 +115,7 @@ public interface UIConstants { public static final Color TAB_BUTTON_PRESS = new Color(228, 227, 232); public static final Color TAB_BUTTON_PRESS_SELECTED = new Color(236, 236, 238); public static final Color POPUP_TITLE_BACKGROUND = new Color(0xd8f2fd); + public static final Color LIST_ITEM_SPLIT_LINE = new Color(0xf0f0f3); @@ -129,6 +131,7 @@ public interface UIConstants { public static final BufferedImage DRAG_LEFT_NORMAL = BaseUtils.readImage("com/fr/design/images/control/leftnor.png"); public static final BufferedImage DRAG_LEFT_PRESS = BaseUtils.readImage("com/fr/design/images/control/leftpre.png"); public static final BufferedImage DRAG_DOT = BaseUtils.readImage("com/fr/design/images/control/dot.png"); + public static final BufferedImage ACCESSIBLE_EDITOR_DOT = BaseUtils.readImage("com/fr/design/images/control/dot.png"); public static final BufferedImage DRAG_DOT_VERTICAL = BaseUtils.readImage("com/fr/design/images/control/dotv.png"); public static final BufferedImage POP_BUTTON_DOWN = BaseUtils.readImage("com/fr/design/images/buttonicon/popdownarrow.png"); public static final BufferedImage POP_BUTTON_UP = BaseUtils.readImage("com/fr/design/images/buttonicon/popuparrow.png"); diff --git a/designer_base/src/com/fr/design/data/DesignTableDataManager.java b/designer_base/src/com/fr/design/data/DesignTableDataManager.java index 621e303b1b..17afec4717 100644 --- a/designer_base/src/com/fr/design/data/DesignTableDataManager.java +++ b/designer_base/src/com/fr/design/data/DesignTableDataManager.java @@ -6,19 +6,24 @@ import com.fr.base.StoreProcedureParameter; import com.fr.base.TableData; import com.fr.data.TableDataSource; import com.fr.data.core.DataCoreXmlUtils; -import com.fr.design.data.datapane.preview.PreviewTablePane; import com.fr.data.impl.EmbeddedTableData; import com.fr.data.impl.storeproc.ProcedureDataModel; import com.fr.data.impl.storeproc.StoreProcedure; import com.fr.data.impl.storeproc.StoreProcedureConstants; -import com.fr.design.data.tabledata.wrapper.*; import com.fr.design.DesignModelAdapter; +import com.fr.design.data.datapane.preview.PreviewTablePane; +import com.fr.design.data.tabledata.wrapper.ServerTableDataWrapper; +import com.fr.design.data.tabledata.wrapper.StoreProcedureDataWrapper; +import com.fr.design.data.tabledata.wrapper.StoreProcedureNameWrapper; +import com.fr.design.data.tabledata.wrapper.TableDataFactory; +import com.fr.design.data.tabledata.wrapper.TableDataWrapper; +import com.fr.design.data.tabledata.wrapper.TemplateTableDataWrapper; +import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.gui.iprogressbar.AutoProgressBar; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; import com.fr.design.parameter.ParameterInputPane; -import com.fr.design.dialog.DialogActionAdapter; import com.fr.file.DatasourceManager; import com.fr.file.DatasourceManagerProvider; import com.fr.general.ComparatorUtils; @@ -34,8 +39,16 @@ import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.io.ByteArrayOutputStream; import java.text.Collator; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; import java.util.Map.Entry; +import java.util.Timer; +import java.util.TimerTask; /** * 设计器管理操作数据集的类: @@ -351,7 +364,20 @@ public abstract class DesignTableDataManager { * @throws Exception 异常 */ public static EmbeddedTableData previewTableDataNeedInputParameters(TableData tabledata, int rowCount, boolean needLoadingBar) throws Exception { - return previewTableData(tabledata, rowCount, true, needLoadingBar); + return previewTableData(null, tabledata, rowCount, true, needLoadingBar); + } + + /** + * 预览需要参数的数据集 + * + * @param tabledata 数据集 + * @param rowCount 需要预览的行数 + * @param needLoadingBar 是否需要加载进度条 + * @return 数据集 + * @throws Exception 异常 + */ + public static EmbeddedTableData previewTableDataNeedInputParameters(TableDataSource tableDataSource, TableData tabledata, int rowCount, boolean needLoadingBar) throws Exception { + return previewTableData(tableDataSource, tabledata, rowCount, true, needLoadingBar); } /** @@ -364,7 +390,20 @@ public abstract class DesignTableDataManager { * @throws Exception 异常 */ public static EmbeddedTableData previewTableDataNotNeedInputParameters(TableData tabledata, int rowCount, boolean needLoadingBar) throws Exception { - return previewTableData(tabledata, rowCount, false, needLoadingBar); + return previewTableData(null, tabledata, rowCount, false, needLoadingBar); + } + + /** + * 预览不需要参数的数据集 + * + * @param tabledata 数据集 + * @param rowCount 需要预览的行数 + * @param needLoadingBar 是否需要加载进度条 + * @return 数据集 + * @throws Exception 异常 + */ + public static EmbeddedTableData previewTableDataNotNeedInputParameters(TableDataSource tableDataSource, TableData tabledata, int rowCount, boolean needLoadingBar) throws Exception { + return previewTableData(tableDataSource, tabledata, rowCount, false, needLoadingBar); } /** @@ -376,7 +415,7 @@ public abstract class DesignTableDataManager { * 而获取数据集的字段名字时,则没必要 * @return */ - private static EmbeddedTableData previewTableData(TableData tabledata, int rowCount, boolean isMustInputParameters, boolean needLoadingBar) throws Exception { + private static EmbeddedTableData previewTableData(TableDataSource tableDataSource, TableData tabledata, int rowCount, boolean isMustInputParameters, boolean needLoadingBar) throws Exception { final AutoProgressBar loadingBar = PreviewTablePane.getInstance().getProgressBar(); Env currentEnv = FRContext.getCurrentEnv(); ParameterProvider[] parameters = currentEnv.getTableDataParameters(tabledata); @@ -406,7 +445,7 @@ public abstract class DesignTableDataManager { parameter.setValue(parameterMap.get(parameter.getName())); } } - return currentEnv.previewTableData(tabledata, parameterMap, rowCount); + return currentEnv.previewTableData(tableDataSource, tabledata, parameterMap, rowCount); } catch (TableDataException e) { throw new TableDataException(e.getMessage(), e); } finally { diff --git a/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java b/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java index c507995f41..7a4cf52042 100644 --- a/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java +++ b/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java @@ -6,6 +6,7 @@ import com.fr.data.TableDataSource; import com.fr.design.DesignModelAdapter; import com.fr.design.ExtraDesignClassManager; import com.fr.design.actions.UpdateAction; +import com.fr.design.constants.UIConstants; import com.fr.design.data.BasicTableDataTreePane; import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.tabledata.StoreProcedureWorkerListener; @@ -111,6 +112,8 @@ public class TableDataTreePane extends BasicTableDataTreePane { ToolBarDef toolbarDef = new ToolBarDef(); toolbarDef.addShortCut(addMenuDef, SeparatorDef.DEFAULT, editAction, removeAction, SeparatorDef.DEFAULT, previewTableDataAction, connectionTableAction); UIToolbar toolBar = ToolBarDef.createJToolBar(); + toolBar.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, UIConstants.TOOLBAR_BORDER_COLOR)); + toolBar.setBorderPainted(true); toolbarDef.updateToolBar(toolBar); JPanel toolbarPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); diff --git a/designer_base/src/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java b/designer_base/src/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java index 23b62431ec..0377f0bd4a 100644 --- a/designer_base/src/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java +++ b/designer_base/src/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java @@ -1,6 +1,8 @@ package com.fr.design.data.datapane.connect; import com.fr.base.BaseUtils; +import com.fr.data.impl.AbstractDatabaseConnection; +import com.fr.data.impl.Connection; import com.fr.design.constants.UIConstants; import com.fr.data.core.db.TableProcedure; import com.fr.design.border.UIRoundedBorder; @@ -20,6 +22,7 @@ import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import java.awt.*; import java.awt.event.*; +import java.util.List; /** * 数据集编辑面板左边的部分 @@ -39,6 +42,12 @@ public class ConnectionTableProcedurePane extends BasicPane { public ConnectionTableProcedurePane() { this.setLayout(new BorderLayout(4, 4)); connectionComboBox = new ConnectionComboBoxPanel(com.fr.data.impl.Connection.class) { + + @Override + protected void filterConnection(Connection connection, String conName, List nameList) { + filter(connection, conName, nameList); + } + protected void refreshItems() { super.refreshItems(); if (tableViewList != null) { @@ -83,6 +92,10 @@ public class ConnectionTableProcedurePane extends BasicPane { this.setPreferredSize(new Dimension(WIDTH, getPreferredSize().height)); } + protected void filter(Connection connection, String conName, List nameList) { + connection.addConnection(nameList, conName, new Class[]{AbstractDatabaseConnection.class}); + } + protected JPanel createCheckBoxgroupPane() { JPanel checkBoxgroupPane = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(2); JPanel first = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); diff --git a/designer_base/src/com/fr/design/data/datapane/preview/PreviewTablePane.java b/designer_base/src/com/fr/design/data/datapane/preview/PreviewTablePane.java index 28e421b542..71e10728bd 100644 --- a/designer_base/src/com/fr/design/data/datapane/preview/PreviewTablePane.java +++ b/designer_base/src/com/fr/design/data/datapane/preview/PreviewTablePane.java @@ -6,6 +6,7 @@ package com.fr.design.data.datapane.preview; import com.fr.base.BaseUtils; import com.fr.base.FRContext; import com.fr.base.TableData; +import com.fr.data.TableDataSource; import com.fr.data.impl.DBTableData; import com.fr.data.impl.EmbeddedTableData; import com.fr.data.impl.storeproc.ProcedureDataModel; @@ -13,6 +14,7 @@ import com.fr.design.DesignerEnvManager; import com.fr.design.data.DesignTableDataManager; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; +import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.gui.frpane.UITabbedPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.iprogressbar.AutoProgressBar; @@ -362,7 +364,8 @@ public class PreviewTablePane extends BasicPane { } } connectionBar.close(); - previewTableData = DesignTableDataManager.previewTableDataNeedInputParameters(tableData, (int) maxPreviewNumberField.getValue(), true); + TableDataSource dataSource = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getTarget(); + previewTableData = DesignTableDataManager.previewTableDataNeedInputParameters(dataSource, tableData, (int) maxPreviewNumberField.getValue(), true); // parameterInputDialog // update之后的parameters,转成一个parameterMap,用于预览TableData PreviewTableModel previewModel = new PreviewTableModel(previewTableData.createDataModel(null), (int) maxPreviewNumberField.getValue()); diff --git a/designer_base/src/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java b/designer_base/src/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java index 75b3219ebd..947e17106b 100644 --- a/designer_base/src/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java +++ b/designer_base/src/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java @@ -5,7 +5,11 @@ import com.fr.base.FRContext; import com.fr.base.Parameter; import com.fr.base.ParameterHelper; import com.fr.data.core.db.TableProcedure; +import com.fr.data.impl.AbstractDatabaseConnection; +import com.fr.data.impl.Connection; import com.fr.data.impl.DBTableData; +import com.fr.data.impl.JDBCDatabaseConnection; +import com.fr.data.impl.JNDIDatabaseConnection; import com.fr.data.impl.NameDatabaseConnection; import com.fr.design.ExtraDesignClassManager; import com.fr.design.actions.UpdateAction; @@ -37,6 +41,7 @@ import com.fr.script.Calculator; import com.fr.stable.ArrayUtils; import com.fr.stable.ParameterProvider; import com.fr.stable.StringUtils; +import org.sqlite.JDBC; import javax.swing.*; import javax.swing.text.BadLocationException; @@ -102,7 +107,12 @@ public class DBTableDataPane extends AbstractTableDataPane { sqlSplitPane.add(box, BorderLayout.CENTER); // 左边的Panel,上面是选择DatabaseConnection的ComboBox,下面DatabaseConnection对应的Table - connectionTableProcedurePane = new ConnectionTableProcedurePane(); + connectionTableProcedurePane = new ConnectionTableProcedurePane() { + @Override + protected void filter(Connection connection, String conName, List nameList) { + connection.addConnection(nameList, conName, new Class[]{JDBCDatabaseConnection.class, JNDIDatabaseConnection.class}); + } + }; connectionTableProcedurePane.addDoubleClickListener(new DoubleClickSelectedNodeOnTreeListener() { @Override @@ -138,6 +148,7 @@ public class DBTableDataPane extends AbstractTableDataPane { this.add(mainSplitPane, BorderLayout.CENTER); } + private boolean isPreviewOrRefreshButton (FocusEvent e) { if (e.getOppositeComponent() != null) { String name = e.getOppositeComponent().getName(); diff --git a/designer_base/src/com/fr/design/data/tabledata/wrapper/AbstractTableDataWrapper.java b/designer_base/src/com/fr/design/data/tabledata/wrapper/AbstractTableDataWrapper.java index 90e2adfab7..17d42b0e15 100644 --- a/designer_base/src/com/fr/design/data/tabledata/wrapper/AbstractTableDataWrapper.java +++ b/designer_base/src/com/fr/design/data/tabledata/wrapper/AbstractTableDataWrapper.java @@ -58,7 +58,7 @@ public abstract class AbstractTableDataWrapper implements TableDataWrapper { EmbeddedTableData embeddedTableData = null; try { - embeddedTableData = DesignTableDataManager.previewTableDataNotNeedInputParameters(tabledata, TableData.RESULT_NOT_NEED, false); + embeddedTableData = DesignTableDataManager.previewTableDataNotNeedInputParameters(tds, tabledata, TableData.RESULT_NOT_NEED, false); } catch (Exception e) { if (e.getMessage()!=null) { DesignUtils.errorMessage(e.getMessage()); diff --git a/designer_base/src/com/fr/design/designer/IntervalConstants.java b/designer_base/src/com/fr/design/designer/IntervalConstants.java index 0f4256c4ec..1f210c70f5 100644 --- a/designer_base/src/com/fr/design/designer/IntervalConstants.java +++ b/designer_base/src/com/fr/design/designer/IntervalConstants.java @@ -7,7 +7,7 @@ public class IntervalConstants { public static final int INTERVAL_L1 = 10; - public static final int INTERVAL_L2 = 15; + public static final int INTERVAL_L2 = 13; public static final int INTERVAL_L3 = 155; @@ -19,4 +19,12 @@ public class IntervalConstants { public static final int INTERVAL_L7 = 8; + public static final int INTERVAL_W0 = 3; + + public static final int INTERVAL_W1 = 25; + + public static final int INTERVAL_W2 = 37; + + public static final int INTERVAL_W3 = 49; + } diff --git a/designer_base/src/com/fr/design/designer/TargetComponent.java b/designer_base/src/com/fr/design/designer/TargetComponent.java index 4eedfa0129..ef5369b659 100644 --- a/designer_base/src/com/fr/design/designer/TargetComponent.java +++ b/designer_base/src/com/fr/design/designer/TargetComponent.java @@ -1,16 +1,16 @@ package com.fr.design.designer; -import javax.swing.*; - +import com.fr.design.DesignState; import com.fr.design.event.TargetModifiedEvent; import com.fr.design.event.TargetModifiedListener; +import com.fr.design.mainframe.AuthorityEditPane; import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; -import com.fr.design.DesignState; import com.fr.design.menu.MenuDef; import com.fr.design.menu.ShortCut; import com.fr.design.menu.ToolBarDef; import com.fr.stable.StringUtils; -import com.fr.design.mainframe.*; + +import javax.swing.*; /** * 模板设计界面 @@ -31,7 +31,7 @@ public abstract class TargetComponent extends JComponent { public abstract void stopEditing(); - public final T getTarget() { + public T getTarget() { return target; } diff --git a/designer_base/src/com/fr/design/designer/creator/CRPropertyDescriptor.java b/designer_base/src/com/fr/design/designer/creator/CRPropertyDescriptor.java index 3155653243..e4729f0709 100644 --- a/designer_base/src/com/fr/design/designer/creator/CRPropertyDescriptor.java +++ b/designer_base/src/com/fr/design/designer/creator/CRPropertyDescriptor.java @@ -15,14 +15,15 @@ import java.beans.PropertyDescriptor; */ public final class CRPropertyDescriptor extends PropertyDescriptor { public static final String RENDERER = "renderer"; - - private PropertyChangeAdapter l; - + private boolean isSubProperty = false; + + private PropertyChangeAdapter l; + public CRPropertyDescriptor(String name, Class beanClass) throws IntrospectionException { super(name, beanClass); } - public CRPropertyDescriptor(String name, Class beanClass, String readMethod, String writeMethod) throws IntrospectionException{ + public CRPropertyDescriptor(String name, Class beanClass, String readMethod, String writeMethod) throws IntrospectionException { super(name, beanClass, readMethod, writeMethod); } @@ -33,17 +34,17 @@ public final class CRPropertyDescriptor extends PropertyDescriptor { } return this; } - - public CRPropertyDescriptor setPropertyChangeListener(PropertyChangeAdapter l) { - this.l = l; - return this; - } - public void firePropertyChanged() { - if (l != null) { - l.propertyChange(); - } - } + public CRPropertyDescriptor setPropertyChangeListener(PropertyChangeAdapter l) { + this.l = l; + return this; + } + + public void firePropertyChanged() { + if (l != null) { + l.propertyChange(); + } + } public CRPropertyDescriptor setEditorClass(Class clazz) { this.setPropertyEditorClass(clazz); @@ -59,4 +60,13 @@ public final class CRPropertyDescriptor extends PropertyDescriptor { this.setDisplayName(displayName); return this; } + + public CRPropertyDescriptor setSubLevel(boolean isSubProperty) { + this.isSubProperty = isSubProperty; + return this; + } + + public boolean isSubLevel() { + return isSubProperty; + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/editor/DoubleDeckValueEditorPane.java b/designer_base/src/com/fr/design/editor/DoubleDeckValueEditorPane.java index 77f50aa6d5..be285dd947 100644 --- a/designer_base/src/com/fr/design/editor/DoubleDeckValueEditorPane.java +++ b/designer_base/src/com/fr/design/editor/DoubleDeckValueEditorPane.java @@ -217,9 +217,9 @@ public class DoubleDeckValueEditorPane extends BasicPane implements UIObserver, String name = currentEditor.getName(); Object columnIndex = currentEditor.getValue(); //bug86542,这边为啥要new一个公式出来,只保留content,其他属性全不要了? -// if (ComparatorUtils.equals(name, Inter.getLocText("Formula"))) { -// columnIndex = new Formula(columnIndex == null ? "" : columnIndex.toString()); -// } + if (columnIndex == null && ComparatorUtils.equals(name, Inter.getLocText("Formula"))) { + columnIndex = ((FormulaEditor) currentEditor).getFormula(); + } return columnIndex; } diff --git a/designer_base/src/com/fr/design/editor/ValueEditorPane.java b/designer_base/src/com/fr/design/editor/ValueEditorPane.java index 0a7600e2f4..2b46f94fad 100644 --- a/designer_base/src/com/fr/design/editor/ValueEditorPane.java +++ b/designer_base/src/com/fr/design/editor/ValueEditorPane.java @@ -2,19 +2,17 @@ package com.fr.design.editor; import com.fr.base.Formula; import com.fr.design.DesignerEnvManager; +import com.fr.design.dialog.BasicPane; +import com.fr.design.editor.editor.*; import com.fr.design.event.GlobalNameListener; import com.fr.design.event.GlobalNameObserver; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.gui.imenu.UIMenuItem; +import com.fr.design.gui.imenu.UIMenuEastAttrItem; +import com.fr.design.gui.imenu.UIPopupEastAttrMenu; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; -import com.fr.design.dialog.BasicPane; -import com.fr.design.editor.editor.ColumnNameEditor; -import com.fr.design.editor.editor.Editor; -import com.fr.design.editor.editor.TextEditor; -import com.fr.design.editor.editor.XMLANameEditor; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; import com.fr.stable.StringUtils; @@ -139,14 +137,14 @@ public class ValueEditorPane extends BasicPane implements UIObserver, GlobalName private JPopupMenu createPopMenu() { - JPopupMenu scate = new JPopupMenu(); + JPopupMenu scate = new UIPopupEastAttrMenu(); if (this.cards == null) { return scate; } for (int i = 0; i < this.cards.length; i++) { - UIMenuItem item = new UIMenuItem(cards[i].getName()); + JMenuItem item = new UIMenuEastAttrItem(cards[i].getName()); final int j = i; item.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { @@ -165,9 +163,6 @@ public class ValueEditorPane extends BasicPane implements UIObserver, GlobalName } }); scate.add(item); - if (i < cards.length - 1) { - scate.addSeparator(); - } } return scate; } @@ -207,9 +202,10 @@ public class ValueEditorPane extends BasicPane implements UIObserver, GlobalName String name = currentEditor.getName(); Object columnIndex = currentEditor.getValue(); //bug86542,这边为啥要new一个公式出来,只保留content,其他属性全不要了? -// if (ComparatorUtils.equals(name, Inter.getLocText("Formula"))) { -// columnIndex = new Formula(columnIndex == null ? "" : columnIndex.toString()); -// } + //MoMeak:我也想注释了,但是有bug啊。。。 + if (columnIndex == null && ComparatorUtils.equals(name, Inter.getLocText("Formula"))) { + columnIndex = ((FormulaEditor) currentEditor).getFormula(); + } return columnIndex; } diff --git a/designer_base/src/com/fr/design/editor/editor/FormulaEditor.java b/designer_base/src/com/fr/design/editor/editor/FormulaEditor.java index 44d8c9f8cd..943fb3a66d 100644 --- a/designer_base/src/com/fr/design/editor/editor/FormulaEditor.java +++ b/designer_base/src/com/fr/design/editor/editor/FormulaEditor.java @@ -96,6 +96,10 @@ public class FormulaEditor extends Editor { }).setVisible(true); } + public Formula getFormula(){ + return formula; + } + /** * Return the value of the CellEditor. */ diff --git a/designer_base/src/com/fr/design/file/MutilTempalteTabPane.java b/designer_base/src/com/fr/design/file/MutilTempalteTabPane.java index 4fc8b0640a..44307b018e 100644 --- a/designer_base/src/com/fr/design/file/MutilTempalteTabPane.java +++ b/designer_base/src/com/fr/design/file/MutilTempalteTabPane.java @@ -373,7 +373,7 @@ public class MutilTempalteTabPane extends JComponent implements MouseListener, M private void paintDefaultBackground(Graphics2D g2d) { //画默认背景 g2d.setPaint(new GradientPaint(1, 1, new Color(217, 218, 221), 1, getHeight() - 1, new Color(217, 218, 221))); - g2d.fillRect(getX(), getY(), getWidth(), getHeight()); + g2d.fillRect(0, 0, getWidth(), getHeight()); } diff --git a/designer_base/src/com/fr/design/file/NewTemplatePane.java b/designer_base/src/com/fr/design/file/NewTemplatePane.java index 58cae2ab98..1900cda0d4 100644 --- a/designer_base/src/com/fr/design/file/NewTemplatePane.java +++ b/designer_base/src/com/fr/design/file/NewTemplatePane.java @@ -10,6 +10,7 @@ import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.awt.geom.Line2D; +import java.awt.geom.Rectangle2D; /** * Author : daisy @@ -45,6 +46,8 @@ public abstract class NewTemplatePane extends JComponent implements MouseListene public void paintComponent(Graphics g) { super.paintComponent(g); g2d = (Graphics2D) g; + g2d.setColor(UIConstants.COMBOBOX_BTN_NORMAL); + g2d.fill(new Rectangle2D.Double(0, 0, getWidth(),getHeight())); int sheetIconY = (getHeight() - newWorkBookIconMode.getIconHeight()) / 2; newWorkBookIconMode.paintIcon(this, g2d, newIconStartX, sheetIconY); // paintUnderLine(g2d); diff --git a/designer_base/src/com/fr/design/file/TemplateTreePane.java b/designer_base/src/com/fr/design/file/TemplateTreePane.java index e9009ff9fa..3c690a5c6b 100644 --- a/designer_base/src/com/fr/design/file/TemplateTreePane.java +++ b/designer_base/src/com/fr/design/file/TemplateTreePane.java @@ -5,8 +5,8 @@ package com.fr.design.file; import com.fr.base.FRContext; import com.fr.dav.LocalEnv; -import com.fr.design.gui.itree.filetree.TemplateFileTree; import com.fr.design.gui.icontainer.UIScrollPane; +import com.fr.design.gui.itree.filetree.TemplateFileTree; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; @@ -17,16 +17,18 @@ import com.fr.file.filetree.IOFileNodeFilter; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.Inter; -import com.fr.stable.ProductConstants; import com.fr.stable.CoreConstants; +import com.fr.stable.ProductConstants; import com.fr.stable.StableUtils; import com.fr.stable.project.ProjectConstants; +import com.sun.jna.platform.FileUtils; import javax.swing.*; import javax.swing.tree.DefaultMutableTreeNode; import java.awt.*; import java.awt.event.*; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.logging.Level; @@ -177,7 +179,7 @@ public class TemplateTreePane extends JPanel implements FileOperations { } if (nodeFile.exists()) { String path = StableUtils.pathJoin(new String[]{nodeFile.getEnvPath(), nodeFile.getPath()}); - FRContext.getCurrentEnv().deleteFile(nodeFile.getPath()); + moveToTrash(nodeFile); deleteHistory(path.replaceAll("/", "\\\\")); } else { JOptionPane.showMessageDialog(this, Inter.getLocText("Warning-Template_Do_Not_Exsit"), ProductConstants.PRODUCT_NAME, @@ -187,7 +189,6 @@ public class TemplateTreePane extends JPanel implements FileOperations { reportletsTree.refresh(); } - private void deleteHistory(String fileName) { int index = HistoryTemplateListPane.getInstance().contains(fileName); int size = HistoryTemplateListPane.getInstance().getHistoryCount(); @@ -304,4 +305,24 @@ public class TemplateTreePane extends JPanel implements FileOperations { } } + /** + * 文件回收 + * + * @param nodeFile 节点文件 + */ + private void moveToTrash(FileNodeFILE nodeFile) { + FileUtils fileUtils = FileUtils.getInstance(); + if (fileUtils.hasTrash()) { + try { + fileUtils.moveToTrash(new File[]{new File(StableUtils.pathJoin(nodeFile.getEnvPath(), nodeFile.getPath()))}); + } catch (IOException e) { + FRLogger.getLogger().info(e.getMessage()); + FRContext.getCurrentEnv().deleteFile(nodeFile.getPath()); + } + } else { + FRLogger.getLogger().info("No Trash Available"); + FRContext.getCurrentEnv().deleteFile(nodeFile.getPath()); + } + } + } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/formula/FormulaPane.java b/designer_base/src/com/fr/design/formula/FormulaPane.java index 9ef2e4b2be..156a2e2f2e 100644 --- a/designer_base/src/com/fr/design/formula/FormulaPane.java +++ b/designer_base/src/com/fr/design/formula/FormulaPane.java @@ -703,7 +703,7 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula { UIScrollPane desScrollPane = new UIScrollPane(descriptionTextArea); desScrollPane.setBorder(null); this.add(this.createNamePane(Inter.getLocText("FR-Designer_FormulaPane_Formula_Description") + ":", desScrollPane), BorderLayout.EAST); - descriptionTextArea.setBackground(new Color(255, 255, 225)); + descriptionTextArea.setBackground(Color.white); descriptionTextArea.setLineWrap(true); descriptionTextArea.setWrapStyleWord(true); descriptionTextArea.setEditable(false); diff --git a/designer_base/src/com/fr/design/gui/HyperlinkFilterHelper.java b/designer_base/src/com/fr/design/gui/HyperlinkFilterHelper.java new file mode 100644 index 0000000000..b0a1f27bc2 --- /dev/null +++ b/designer_base/src/com/fr/design/gui/HyperlinkFilterHelper.java @@ -0,0 +1,59 @@ +package com.fr.design.gui; + +import com.fr.design.file.HistoryTemplateListPane; +import com.fr.design.mainframe.BaseJForm; +import com.fr.design.mainframe.JTemplate; +import com.fr.general.ComparatorUtils; +import com.fr.general.Inter; + +/** + * Created by mengao on 2017/9/22. + * 单元格超链、图表超链在不同类型模版中,下拉选项不同 + */ +public class HyperlinkFilterHelper { + + public static boolean whetherAddHyperlink4cell(String itemName) { + JTemplate jTemplate = getCurrentEditingTemplate(); + if (jTemplate == null) { + return false; + } + //先屏蔽掉这个,之后还有别的 + String[] names = {Inter.getLocText("FR-Hyperlink_Chart_Float")}; + for (String name : names) { + if (!jTemplate.isJWorkBook() && ComparatorUtils.equals(itemName, name)) { + return false; + } + } + return whetherAddFormLink(jTemplate, itemName); + } + + public static boolean whetherAddHyperlink4Chart(String itemName) { + JTemplate jTemplate = getCurrentEditingTemplate(); + if (jTemplate == null) { + return false; + } + //先屏蔽掉这个,之后还有别的 + String[] names = {Inter.getLocText("FR-Hyperlink_Chart_Float"), Inter.getLocText("FR-Hyperlink_Chart_Cell")}; + for (String name : names) { + if (!jTemplate.isJWorkBook() && ComparatorUtils.equals(itemName, name)) { + if (jTemplate.getEditingReportIndex() == BaseJForm.ELEMENTCASE_TAB && ComparatorUtils.equals(itemName, names[0])) { + //表单报表块中图表悬浮元素超链,只屏蔽联动悬浮元素 + return false; + } else if (jTemplate.getEditingReportIndex() == BaseJForm.FORM_TAB) { + //表单图表超链屏蔽掉联动悬浮元素和联动单元格 + return false; + } + } + } + return whetherAddFormLink(jTemplate, itemName); + } + + private static JTemplate getCurrentEditingTemplate() { + return HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); + } + + private static boolean whetherAddFormLink(JTemplate jTemplate, String itemName) { + String formName = Inter.getLocText("Hyperlink-Form_link"); + return !(jTemplate.isJWorkBook() && ComparatorUtils.equals(itemName, formName)); + } +} diff --git a/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java b/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java index 474b1ca6ff..bccff1ad78 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java +++ b/designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java @@ -8,13 +8,12 @@ import com.fr.design.data.tabledata.tabledatapane.GlobalMultiTDTableDataPane; import com.fr.design.data.tabledata.tabledatapane.GlobalTreeTableDataPane; import com.fr.design.data.tabledata.tabledatapane.MultiTDTableDataPane; import com.fr.design.data.tabledata.tabledatapane.TreeTableDataPane; -import com.fr.design.file.HistoryTemplateListPane; +import com.fr.design.gui.HyperlinkFilterHelper; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilist.JNameEdList; import com.fr.design.gui.ilist.ListModelElement; import com.fr.design.gui.ilist.ModNameActionListener; import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.mainframe.JTemplate; import com.fr.design.menu.LineSeparator; import com.fr.design.menu.MenuDef; import com.fr.design.menu.ShortCut; @@ -384,7 +383,7 @@ public abstract class JListControlPane extends JControlPane { private void wrapActionListener(NameableCreator[] creators) { for (final NameableCreator creator : creators) { - if (!whetherAdd(creator.menuName())) { + if (!HyperlinkFilterHelper.whetherAddHyperlink4cell(creator.menuName())) { continue; } boolean isTrue = ComparatorUtils.equals(creator.menuName(), Inter.getLocText("Datasource-Stored_Procedure")) || @@ -414,22 +413,6 @@ public abstract class JListControlPane extends JControlPane { }); } } - - private boolean whetherAdd(String itemName) { - JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - if (jTemplate == null) { - return false; - } - //先屏蔽掉这个,之后还有别的 - String[] names = {Inter.getLocText("FR-Hyperlink_Chart_Float")}; - for (String name : names) { - if (!jTemplate.isJWorkBook() && ComparatorUtils.equals(itemName, name)) { - return false; - } - } - String formName = Inter.getLocText("Hyperlink-Form_link"); - return !(jTemplate.isJWorkBook() && ComparatorUtils.equals(itemName, formName)); - } } /* @@ -468,7 +451,7 @@ public abstract class JListControlPane extends JControlPane { this.setName(Inter.getLocText("FR-Action_Copy")); this.setMnemonic('C'); this.setSmallIcon(BaseUtils - .readIcon("/com/fr/base/images/cell/control/copy.png")); + .readIcon("/com/fr/design/images/m_edit/copy.png")); } @Override diff --git a/designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java b/designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java index 9a5bd6071a..68b3675b6e 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java +++ b/designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java @@ -178,7 +178,8 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH // 封装一层,加边框 JPanel toolBarPane = new JPanel(new BorderLayout()); toolBarPane.add(toolBar, BorderLayout.CENTER); - toolBarPane.setBorder(BorderFactory.createMatteBorder(1, 1, 0, 1, new Color(201, 198, 184))); + toolBarPane.setBorder(BorderFactory.createMatteBorder(1, 1, 0, 1, UIConstants.RULER_LINE_COLOR)); + leftContentPane.add(toolBarPane, BorderLayout.NORTH); // 顶部标签及add按钮 @@ -193,6 +194,16 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH topToolBar.setLayout(new BorderLayout()); ShortCut addItem = addItemShortCut().getShortCut(); addItem.intoJToolBar(topToolBar); + + JPanel leftTopPane = getLeftTopPane(topToolBar); + + leftTopPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 6, 0)); + leftPane.add(leftTopPane, BorderLayout.NORTH); + + return leftPane; + } + + protected JPanel getLeftTopPane (UIToolbar topToolBar) { double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] columnSize = { p, f}; @@ -200,11 +211,7 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH Component[][] components = new Component[][]{ new Component[]{new UILabel(getAddItemText()), topToolBar}, }; - JPanel leftTopPane = TableLayoutHelper.createTableLayoutPane(components,rowSize,columnSize); - leftTopPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 6, 0)); - leftPane.add(leftTopPane, BorderLayout.NORTH); - - return leftPane; + return TableLayoutHelper.createTableLayoutPane(components,rowSize,columnSize); } /** diff --git a/designer_base/src/com/fr/design/gui/controlpane/UIListControlPane.java b/designer_base/src/com/fr/design/gui/controlpane/UIListControlPane.java index 617619bc22..a148fd3b83 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/UIListControlPane.java +++ b/designer_base/src/com/fr/design/gui/controlpane/UIListControlPane.java @@ -11,7 +11,7 @@ import com.fr.design.data.tabledata.tabledatapane.GlobalMultiTDTableDataPane; import com.fr.design.data.tabledata.tabledatapane.GlobalTreeTableDataPane; import com.fr.design.data.tabledata.tabledatapane.MultiTDTableDataPane; import com.fr.design.data.tabledata.tabledatapane.TreeTableDataPane; -import com.fr.design.file.HistoryTemplateListPane; +import com.fr.design.gui.HyperlinkFilterHelper; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilist.ListModelElement; @@ -19,7 +19,6 @@ import com.fr.design.gui.ilist.ModNameActionListener; import com.fr.design.gui.ilist.UINameEdList; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; -import com.fr.design.mainframe.JTemplate; import com.fr.design.menu.LineSeparator; import com.fr.design.menu.MenuDef; import com.fr.design.menu.ShortCut; @@ -162,11 +161,15 @@ public abstract class UIListControlPane extends UIControlPane { if (creators.length == 1) { addItemShortCut = new AddItemUpdateAction(creators); } else { - addItemShortCut = new AddItemMenuDef(creators); + addItemShortCut = getAddItemMenuDef(creators); } return new AbsoluteEnableShortCut(addItemShortCut); } + protected AddItemMenuDef getAddItemMenuDef (NameableCreator[] creators) { + return new AddItemMenuDef(creators); + } + @Override protected ShortCut4JControlPane removeItemShortCut() { return new NormalEnableShortCut(new RemoveItemAction()); @@ -211,6 +214,7 @@ public abstract class UIListControlPane extends UIControlPane { @Override public void populate(Nameable[] nameableArray) { isPopulating = true; // 加一个标识位,避免切换单元格时,触发 saveSettings + nameableList.getCellEditor().stopCellEditing(); DefaultListModel listModel = (DefaultListModel) this.nameableList.getModel(); listModel.removeAllElements(); if (ArrayUtils.isEmpty(nameableArray)) { @@ -557,20 +561,8 @@ public abstract class UIListControlPane extends UIControlPane { } } - private boolean whetherAdd(String itemName) { - JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - if (jTemplate == null) { - return false; - } - //先屏蔽掉这个,之后还有别的 - String[] names = {Inter.getLocText("FR-Hyperlink_Chart_Float")}; - for (String name : names) { - if (!jTemplate.isJWorkBook() && ComparatorUtils.equals(itemName, name)) { - return false; - } - } - String formName = Inter.getLocText("Hyperlink-Form_link"); - return !(jTemplate.isJWorkBook() && ComparatorUtils.equals(itemName, formName)); + protected boolean whetherAdd(String itemName){ + return HyperlinkFilterHelper.whetherAddHyperlink4cell(itemName); } } @@ -591,6 +583,7 @@ public abstract class UIListControlPane extends UIControlPane { UIListControlPane.this.nameableList.getCellEditor() .stopCellEditing(); } catch (Exception ignored) { + // do nothing } // bug:在选中一个NameObject并删除,会遗留下Name. doBeforeRemove(); @@ -610,7 +603,7 @@ public abstract class UIListControlPane extends UIControlPane { this.setName(Inter.getLocText("FR-Action_Copy")); this.setMnemonic('C'); this.setSmallIcon(BaseUtils - .readIcon("/com/fr/base/images/cell/control/copy.png")); + .readIcon("/com/fr/design/images/m_edit/copy.png")); } @Override diff --git a/designer_base/src/com/fr/design/gui/controlpane/UINameableListCellRenderer.java b/designer_base/src/com/fr/design/gui/controlpane/UINameableListCellRenderer.java index 9f39e3071b..b66ee1ef23 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/UINameableListCellRenderer.java +++ b/designer_base/src/com/fr/design/gui/controlpane/UINameableListCellRenderer.java @@ -51,7 +51,7 @@ public class UINameableListCellRenderer extends } }; editButton.setIcon(listControlPane.isNewStyle() ? UIConstants.LIST_EDIT_ICON : UIConstants.CPT_ICON); - editButton.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 1, BORDER_COLOR)); + editButton.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 1, UIConstants.LIST_ITEM_SPLIT_LINE)); editButton.setHorizontalAlignment(SwingConstants.CENTER); label = new UILabel(); label.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 0)); @@ -62,7 +62,7 @@ public class UINameableListCellRenderer extends } private Border getNoFocusBorder() { - return BorderFactory.createMatteBorder(0, 0, 1, 0, BORDER_COLOR); + return BorderFactory.createMatteBorder(0, 0, 1, 0, UIConstants.LIST_ITEM_SPLIT_LINE); } private void setText(String t) { @@ -110,19 +110,6 @@ public class UINameableListCellRenderer extends setEnabled(list.isEnabled()); setFont(list.getFont()); - Border border = null; - if (cellHasFocus) { - if (isSelected) { - border = DefaultLookup.getBorder(this, ui, "List.focusSelectedCellHighlightBorder"); - } - if (border == null) { - border = DefaultLookup.getBorder(this, ui, "List.focusCellHighlightBorder"); - } - } else { - border = getNoFocusBorder(); - } - setBorder(border); - if (value instanceof ListModelElement) { Nameable wrappee = ((ListModelElement) value).wrapper; this.setText(((ListModelElement) value).wrapper.getName()); diff --git a/designer_base/src/com/fr/design/gui/core/WidgetOption.java b/designer_base/src/com/fr/design/gui/core/WidgetOption.java index e6326aa252..c7cff45afa 100644 --- a/designer_base/src/com/fr/design/gui/core/WidgetOption.java +++ b/designer_base/src/com/fr/design/gui/core/WidgetOption.java @@ -127,27 +127,27 @@ public abstract class WidgetOption implements Serializable { } public static final WidgetOption DATEEDITOR = WidgetOptionFactory.createByWidgetClass(Inter.getLocText(new String[]{"Date", "Widget"}), - BaseUtils.readIcon("/com/fr/web/images/form/resources/date_16.png"), + BaseUtils.readIcon("/com/fr/design/images/buttonicon/widget/date_16.png"), DateEditor.class); public static final WidgetOption TREE = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("Form-View_Tree"), - BaseUtils.readIcon("/com/fr/web/images/form/resources/tree_16.png"), TreeEditor.class); + BaseUtils.readIcon("/com/fr/design/images/buttonicon/widget/tree_16.png"), TreeEditor.class); - public static final WidgetOption TREECOMBOBOX = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Designer_Tree-ComboBox"), BaseUtils.readIcon("/com/fr/web/images/form/resources/comboboxtree.png"), + public static final WidgetOption TREECOMBOBOX = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Designer_Tree-ComboBox"), BaseUtils.readIcon("/com/fr/design/images/buttonicon/widget/comboboxtree.png"), TreeComboBoxEditor.class); public static final WidgetOption CHECKBOXGROUP = WidgetOptionFactory.createByWidgetClass( - Inter.getLocText(new String[]{"Form-CheckBoxGroup", "Widget"}), BaseUtils.readIcon("/com/fr/web/images/form/resources/checkbox_group_16.png"), CheckBoxGroup.class); + Inter.getLocText(new String[]{"Form-CheckBoxGroup", "Widget"}), BaseUtils.readIcon("/com/fr/design/images/buttonicon/widget/checkbox_group_16.png"), CheckBoxGroup.class); public static final WidgetOption RADIOGROUP = WidgetOptionFactory.createByWidgetClass( - Inter.getLocText(new String[]{"Form-RadioGroup", "Widget"}), BaseUtils.readIcon("/com/fr/web/images/form/resources/button_group_16.png"), + Inter.getLocText(new String[]{"Form-RadioGroup", "Widget"}), BaseUtils.readIcon("/com/fr/design/images/buttonicon/widget/button_group_16.png"), RadioGroup.class); public static final WidgetOption NUMBEREDITOR = WidgetOptionFactory.createByWidgetClass( - Inter.getLocText(new String[]{"Number", "Widget"}), BaseUtils.readIcon("/com/fr/web/images/form/resources/number_field_16.png"), NumberEditor.class); + Inter.getLocText(new String[]{"Number", "Widget"}), BaseUtils.readIcon("/com/fr/design/images/buttonicon/widget/number_field_16.png"), NumberEditor.class); public static final WidgetOption LABEL = WidgetOptionFactory.createByWidgetClass( - Inter.getLocText(new String[]{"Label", "Widget"}), BaseUtils.readIcon("/com/fr/web/images/form/resources/label_16.png"), + Inter.getLocText(new String[]{"Label", "Widget"}), BaseUtils.readIcon("/com/fr/design/images/buttonicon/widget/label_16.png"), Label.class); public static final WidgetOption BUTTON = WidgetOptionFactory.createByWidgetClass( @@ -155,23 +155,23 @@ public abstract class WidgetOption implements Serializable { Button.class); public static final WidgetOption FREEBUTTON = WidgetOptionFactory.createByWidgetClass( - Inter.getLocText(new String[]{"Form-Button", "Widget"}), BaseUtils.readIcon("/com/fr/web/images/form/resources/button_16.png"), + Inter.getLocText(new String[]{"Form-Button", "Widget"}), BaseUtils.readIcon("/com/fr/design/images/buttonicon/widget/button_16.png"), FreeButton.class); public static final WidgetOption MULTI_FILEEDITOR = WidgetOptionFactory.createByWidgetClass( - Inter.getLocText(new String[]{"File", "Widget"}), BaseUtils.readIcon("/com/fr/web/images/form/resources/files_up.png"), + Inter.getLocText(new String[]{"File", "Widget"}), BaseUtils.readIcon("/com/fr/design/images/buttonicon/widget/files_up.png"), MultiFileEditor.class); public static final WidgetOption COMBOBOX = WidgetOptionFactory.createByWidgetClass( - Inter.getLocText(new String[]{"Form-ComboBox", "Widget"}), BaseUtils.readIcon("/com/fr/web/images/form/resources/combo_box_16.png"), + Inter.getLocText(new String[]{"Form-ComboBox", "Widget"}), BaseUtils.readIcon("/com/fr/design/images/buttonicon/widget/combo_box_16.png"), ComboBox.class); public static final WidgetOption COMBOCHECKBOX = WidgetOptionFactory.createByWidgetClass( - Inter.getLocText(new String[]{"Form-ComboCheckBox", "Widget"}), BaseUtils.readIcon("/com/fr/web/images/form/resources/combo_check_16.png"), + Inter.getLocText(new String[]{"Form-ComboCheckBox", "Widget"}), BaseUtils.readIcon("/com/fr/design/images/buttonicon/widget/combo_check_16.png"), ComboCheckBox.class); public static final WidgetOption CHECKBOX = WidgetOptionFactory.createByWidgetClass( - Inter.getLocText(new String[]{"Form-CheckBox", "Widget"}), BaseUtils.readIcon("/com/fr/web/images/form/resources/check_box_16.png"), + Inter.getLocText(new String[]{"Form-CheckBox", "Widget"}), BaseUtils.readIcon("/com/fr/design/images/buttonicon/widget/check_box_16.png"), CheckBox.class); public static final WidgetOption LIST = WidgetOptionFactory.createByWidgetClass( @@ -183,16 +183,16 @@ public abstract class WidgetOption implements Serializable { TableTree.class); public static final WidgetOption TEXTEDITOR = WidgetOptionFactory.createByWidgetClass(Inter.getLocText(new String[]{"Text", "Widget"}) - , BaseUtils.readIcon("/com/fr/web/images/form/resources/text_field_16.png"), + , BaseUtils.readIcon("/com/fr/design/images/buttonicon/widget/text_field_16.png"), TextEditor.class); public static final WidgetOption TEXTAREA = WidgetOptionFactory.createByWidgetClass( - Inter.getLocText(new String[]{"Form-TextArea", "Widget"}), BaseUtils.readIcon("/com/fr/web/images/form/resources/text_area_16.png"), + Inter.getLocText(new String[]{"Form-TextArea", "Widget"}), BaseUtils.readIcon("/com/fr/design/images/buttonicon/widget/text_area_16.png"), TextArea.class); public static final WidgetOption PASSWORD = WidgetOptionFactory.createByWidgetClass( Inter.getLocText(new String[]{"Form-Password", "Widget"}), - BaseUtils.readIcon("/com/fr/web/images/form/resources/password_field_16.png"), Password.class); + BaseUtils.readIcon("/com/fr/design/images/buttonicon/widget/password_field_16.png"), Password.class); public static final WidgetOption IFRAMEDITOR = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Designer_Form-Iframe"), BaseUtils.readIcon("/com/fr/web/images/form/resources/iframe_16.png"), IframeEditor.class); diff --git a/designer_base/src/com/fr/design/gui/frpane/HyperlinkGroupPane.java b/designer_base/src/com/fr/design/gui/frpane/HyperlinkGroupPane.java index 6cd9522d99..882e0ce127 100644 --- a/designer_base/src/com/fr/design/gui/frpane/HyperlinkGroupPane.java +++ b/designer_base/src/com/fr/design/gui/frpane/HyperlinkGroupPane.java @@ -3,16 +3,19 @@ package com.fr.design.gui.frpane; import com.fr.design.ExtraDesignClassManager; import com.fr.design.designer.TargetComponent; import com.fr.design.fun.HyperlinkProvider; -import com.fr.design.gui.controlpane.JListControlPane; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.UIListControlPane; -import com.fr.design.mainframe.DesignerContext; import com.fr.design.module.DesignModuleFactory; +import com.fr.general.GeneralContext; import com.fr.general.Inter; import com.fr.general.NameObject; import com.fr.js.JavaScript; import com.fr.js.NameJavaScript; import com.fr.js.NameJavaScriptGroup; +import com.fr.plugin.context.PluginContext; +import com.fr.plugin.manage.PluginFilter; +import com.fr.plugin.observer.PluginEvent; +import com.fr.plugin.observer.PluginEventListener; import com.fr.stable.ListMap; import com.fr.stable.Nameable; @@ -33,6 +36,28 @@ public abstract class HyperlinkGroupPane extends UIListControlPane { super(); this.hyperlinkGroupPaneActionProvider = hyperlinkGroupPaneActionProvider; } + + @Override + protected void initComponentPane() { + super.initComponentPane(); + GeneralContext.listenPluginRunningChanged(new PluginEventListener() { + + @Override + public void on(PluginEvent event) { + + refreshNameableCreator(createNameableCreators()); + + } + }, new PluginFilter() { + + @Override + public boolean accept(PluginContext context) { + + return context.contain(HyperlinkProvider.XML_TAG); + } + }); + } + /** * 生成添加按钮的NameableCreator * diff --git a/designer_base/src/com/fr/design/gui/frpane/RegPane.java b/designer_base/src/com/fr/design/gui/frpane/RegPane.java index c992147f59..7da0e683a3 100644 --- a/designer_base/src/com/fr/design/gui/frpane/RegPane.java +++ b/designer_base/src/com/fr/design/gui/frpane/RegPane.java @@ -75,7 +75,8 @@ public class RegPane extends BasicPane { regComboBox = new UIComboBox(regType); regComboBox.setRenderer(listCellRender); - JPanel contentPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{new UILabel(Inter.getLocText("FR-Designer_Input_Rule")), regComboBox}}, TableLayoutHelper.FILL_LASTCOLUMN, 18, 7); + JPanel contentPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{ + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Input_Rule")), regComboBox}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); JPanel jPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); jPanel.add(contentPane, BorderLayout.NORTH); diff --git a/designer_base/src/com/fr/design/gui/frpane/UICorrelationComboBoxPane.java b/designer_base/src/com/fr/design/gui/frpane/UICorrelationComboBoxPane.java index b2e30f41f5..3ed7994b93 100644 --- a/designer_base/src/com/fr/design/gui/frpane/UICorrelationComboBoxPane.java +++ b/designer_base/src/com/fr/design/gui/frpane/UICorrelationComboBoxPane.java @@ -1,28 +1,14 @@ package com.fr.design.gui.frpane; -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.Container; -import java.awt.Dimension; -import java.awt.LayoutManager; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.JFrame; -import javax.swing.JPanel; -import javax.swing.JPopupMenu; -import javax.swing.SwingUtilities; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; - import com.fr.base.BaseUtils; -import com.fr.design.constants.UIConstants; import com.fr.design.beans.BasicBeanPane; +import com.fr.design.constants.UIConstants; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.dialog.DialogActionListener; +import com.fr.design.dialog.UIDialog; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; -import com.fr.design.file.HistoryTemplateListPane; +import com.fr.design.gui.HyperlinkFilterHelper; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.imenu.UIMenuItem; import com.fr.design.gui.imenutable.UIMenuNameableCreator; @@ -30,11 +16,7 @@ import com.fr.design.gui.imenutable.UIMenuTable; import com.fr.design.hyperlink.ReportletHyperlinkPane; import com.fr.design.hyperlink.WebHyperlinkPane; import com.fr.design.javascript.EmailPane; -import com.fr.design.mainframe.BaseJForm; -import com.fr.design.mainframe.JTemplate; -import com.fr.design.dialog.DialogActionAdapter; -import com.fr.design.dialog.DialogActionListener; -import com.fr.design.dialog.UIDialog; +import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; import com.fr.js.AbstractJavaScript; @@ -43,7 +25,15 @@ import com.fr.js.ReportletHyperlink; import com.fr.js.WebHyperlink; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; -import com.fr.design.utils.gui.GUICoreUtils; + +import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.List; public class UICorrelationComboBoxPane extends JPanel implements UIObserver { private static final Dimension DIALOG_SIZE = new Dimension(500, 500); @@ -98,7 +88,7 @@ public class UICorrelationComboBoxPane extends JPanel implements UIObserver { if (values.size() > 1) { for (UIMenuNameableCreator value : values) { final String itemName = value.getName(); - if(!whetherAdd(itemName)){ + if(!HyperlinkFilterHelper.whetherAddHyperlink4Chart(itemName)){ continue; } UIMenuItem item = new UIMenuItem(itemName); @@ -135,25 +125,6 @@ public class UICorrelationComboBoxPane extends JPanel implements UIObserver { initAddButtonListener(); } - private boolean whetherAdd(String itemName){ - JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - //先屏蔽掉这个,之后还有别的 - String[] names = {Inter.getLocText("FR-Hyperlink_Chart_Float"), Inter.getLocText("FR-Hyperlink_Chart_Cell")}; - for (String name : names){ - if(!jTemplate.isJWorkBook() && ComparatorUtils.equals(itemName,name)){ - if(jTemplate.getEditingReportIndex() == BaseJForm.ELEMENTCASE_TAB && ComparatorUtils.equals(itemName, names[0])){ - //表单报表块中图表悬浮元素超链,只屏蔽联动悬浮元素 - return false; - } else if(jTemplate.getEditingReportIndex() == BaseJForm.FORM_TAB) { - //表单图表超链屏蔽掉联动悬浮元素和联动单元格 - return false; - } - } - } - String formName = Inter.getLocText("Hyperlink-Form_link"); - return !(jTemplate.isJWorkBook() && ComparatorUtils.equals(itemName, formName)); - } - private String createUnrepeatedName(String prefix) { List all = tablePane.updateBean(); // richer:生成的名字从1开始. kunsnat: 添加属性从0开始. diff --git a/designer_base/src/com/fr/design/gui/ibutton/UIButton.java b/designer_base/src/com/fr/design/gui/ibutton/UIButton.java index 776a6a284a..91602372da 100644 --- a/designer_base/src/com/fr/design/gui/ibutton/UIButton.java +++ b/designer_base/src/com/fr/design/gui/ibutton/UIButton.java @@ -36,7 +36,7 @@ public class UIButton extends JButton implements UIObserver { private CellBorderStyle border = null; protected UIObserverListener uiObserverListener; - private static final int TOOLTIP_INIT_DELAY = 1000; // 延迟 1s 显示提示文字 + private static final int TOOLTIP_INIT_DELAY = 300; // 延迟 0.3s 显示提示文字 public UIButton() { this(StringUtils.EMPTY); diff --git a/designer_base/src/com/fr/design/gui/ibutton/UIButtonGroup.java b/designer_base/src/com/fr/design/gui/ibutton/UIButtonGroup.java index 62fe66af08..a8ad8f0956 100644 --- a/designer_base/src/com/fr/design/gui/ibutton/UIButtonGroup.java +++ b/designer_base/src/com/fr/design/gui/ibutton/UIButtonGroup.java @@ -8,11 +8,14 @@ import com.fr.design.utils.gui.GUICoreUtils; import com.fr.stable.ArrayUtils; import com.fr.stable.Constants; import com.fr.stable.StringUtils; +import sun.swing.SwingUtilities2; import javax.swing.*; import javax.swing.border.Border; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; +import javax.swing.plaf.basic.BasicHTML; +import javax.swing.text.View; import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; @@ -41,6 +44,10 @@ public class UIButtonGroup extends JPanel implements GlobalNameObserver { this(iconArray, null); } + public UIButtonGroup(Icon[][] iconArray) { + this(iconArray, null); + } + public UIButtonGroup(Icon[] iconArray, T[] objects) { if (!ArrayUtils.isEmpty(objects) && iconArray.length == objects.length) { this.objectList = Arrays.asList(objects); @@ -77,6 +84,42 @@ public class UIButtonGroup extends JPanel implements GlobalNameObserver { } } + public UIButtonGroup(Icon[][] iconArray, T[] objects) { + if (!ArrayUtils.isEmpty(objects) && iconArray.length == objects.length) { + this.objectList = Arrays.asList(objects); + } + labelButtonList = new ArrayList(iconArray.length); + this.setLayout(getGridLayout(iconArray.length)); + this.setBorder(getGroupBorder()); + for (int i = 0; i < iconArray.length; i++) { + final int index = i; + Icon[] icon = iconArray[i]; + final UIToggleButton labelButton = new UIToggleButton(icon) { + @Override + protected MouseListener getMouseListener() { + return new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + isClick = true; + if (!isEnabled()) { + return; + } + if (globalNameListener != null) { + globalNameListener.setGlobalName(buttonGroupName); + } + setSelectedWithFireChanged(index); + } + }; + } + + public boolean shouldResponseNameListener() { + return false; + } + }; + initButton(labelButton); + } + } + public boolean hasClick() { return isClick; } @@ -145,6 +188,24 @@ public class UIButtonGroup extends JPanel implements GlobalNameObserver { } }; + labelButton.setUI(new UIButtonUI() { + protected void paintText(Graphics g, AbstractButton b, String text, Rectangle textRec) { + View v = (View) b.getClientProperty(BasicHTML.propertyKey); + if (v != null) { + v.paint(g, textRec); + return; + } + FontMetrics fm = SwingUtilities2.getFontMetrics(b, g); + int mnemonicIndex = b.getDisplayedMnemonicIndex(); + if (isPressed(b)) { + g.setColor(Color.white); + } else { + g.setColor(Color.black); + } + + SwingUtilities2.drawStringUnderlineCharAt(b, g, text, mnemonicIndex, textRec.x + getTextShiftOffset(), textRec.y + fm.getAscent() + getTextShiftOffset()); + } + }); initButton(labelButton); } } diff --git a/designer_base/src/com/fr/design/gui/ibutton/UIButtonUI.java b/designer_base/src/com/fr/design/gui/ibutton/UIButtonUI.java index fb7605612c..a93841ff32 100644 --- a/designer_base/src/com/fr/design/gui/ibutton/UIButtonUI.java +++ b/designer_base/src/com/fr/design/gui/ibutton/UIButtonUI.java @@ -68,6 +68,10 @@ public class UIButtonUI extends BasicButtonUI { } private void paintText(Graphics g, AbstractButton b, String text) { + paintText(g, b, text ,textRec); + } + + protected void paintText(Graphics g, AbstractButton b, String text, Rectangle textRec) { View v = (View) b.getClientProperty(BasicHTML.propertyKey); if (v != null) { v.paint(g, textRec); @@ -156,7 +160,7 @@ public class UIButtonUI extends BasicButtonUI { paintModelIcon(model, icon, g, c); } - private void paintModelIcon(ButtonModel model, Icon icon, Graphics g, JComponent c) { + protected void paintModelIcon(ButtonModel model, Icon icon, Graphics g, JComponent c) { if (model.isPressed() && model.isArmed()) { icon.paintIcon(c, g, iconRec.x + getTextShiftOffset(), iconRec.y + getTextShiftOffset()); diff --git a/designer_base/src/com/fr/design/gui/ibutton/UIHeadGroup.java b/designer_base/src/com/fr/design/gui/ibutton/UIHeadGroup.java index 3e7c488c14..28957a87ce 100644 --- a/designer_base/src/com/fr/design/gui/ibutton/UIHeadGroup.java +++ b/designer_base/src/com/fr/design/gui/ibutton/UIHeadGroup.java @@ -23,8 +23,8 @@ public class UIHeadGroup extends JPanel { public UIHeadGroup(String[] textArray) { labelButtonList = new ArrayList(textArray.length); - this.setBackground(UIConstants.NORMAL_BACKGROUND); - this.setLayout(new GridLayout(0, textArray.length, 1, 0)); + this.setBackground(UIConstants.TREE_BACKGROUND); + this.setLayout(new GridLayout(0, textArray.length, 0, 0)); // this.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1)); for (int i = 0; i < textArray.length; i++) { final int index = i; diff --git a/designer_base/src/com/fr/design/gui/ibutton/UIToggleButton.java b/designer_base/src/com/fr/design/gui/ibutton/UIToggleButton.java index 0a766e2e91..c51a72acdf 100644 --- a/designer_base/src/com/fr/design/gui/ibutton/UIToggleButton.java +++ b/designer_base/src/com/fr/design/gui/ibutton/UIToggleButton.java @@ -3,12 +3,13 @@ package com.fr.design.gui.ibutton; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Shape; +import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.geom.RoundRectangle2D; -import javax.swing.Icon; +import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; @@ -46,6 +47,26 @@ public class UIToggleButton extends UIButton implements GlobalNameObserver{ addMouseListener(getMouseListener()); } + /** + * 需要反白的按钮接口 + * support icons[normalIcon, selectedIcon] + * @param icons + */ + public UIToggleButton(Icon[] icons) { + super(icons[0], null, icons[1]); + setSelectedIcon(icons[1]); + setExtraPainted(true); + addActionListener(new AbstractAction() { + @Override + public void actionPerformed(ActionEvent e) { + if (!UIToggleButton.super.isSelected()) { + UIToggleButton.super.setSelected(!UIToggleButton.super.isSelected()); + } + } + }); + addMouseListener(getMouseListener()); + } + public void setGlobalName(String name){ toggleButtonName = name ; } @@ -66,6 +87,7 @@ public class UIToggleButton extends UIButton implements GlobalNameObserver{ @Override public void setSelected(boolean isSelected) { + super.setSelected(isSelected); if (this.isSelected != isSelected) { this.isSelected = isSelected; repaint(); @@ -100,7 +122,7 @@ public class UIToggleButton extends UIButton implements GlobalNameObserver{ @Override public void mouseClicked(MouseEvent e) { if (isEnabled() && !isEventBannded) { - setSelectedWithFireListener(!isSelected()); + setSelectedWithFireListener(!isSelected()); } } }; diff --git a/designer_base/src/com/fr/design/gui/icombobox/LazyComboBox.java b/designer_base/src/com/fr/design/gui/icombobox/LazyComboBox.java index 5ff9330295..2d69c2fc83 100644 --- a/designer_base/src/com/fr/design/gui/icombobox/LazyComboBox.java +++ b/designer_base/src/com/fr/design/gui/icombobox/LazyComboBox.java @@ -175,8 +175,10 @@ public abstract class LazyComboBox extends UIComboBox implements PopupMenuListen this.item = item; this.setting = true; + textField.setSetting(true); String newText = (item == null) ? "" : item.toString(); textField.setText(newText); + textField.setSetting(false); this.setting = false; } diff --git a/designer_base/src/com/fr/design/gui/icombobox/UIComboBoxRenderer.java b/designer_base/src/com/fr/design/gui/icombobox/UIComboBoxRenderer.java index 4be4fdcf09..9e5a0c3b9f 100644 --- a/designer_base/src/com/fr/design/gui/icombobox/UIComboBoxRenderer.java +++ b/designer_base/src/com/fr/design/gui/icombobox/UIComboBoxRenderer.java @@ -26,9 +26,16 @@ public class UIComboBoxRenderer extends DefaultListCellRenderer { public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { cellHasFocus = cellHasFocus && !this.isEnabled(); JLabel renderer =(JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); - renderer.setForeground(Color.black); - list.setSelectionBackground(UIConstants.COMBOBOX_BTN_PRESS); - list.setSelectionForeground(Color.black); + renderer.setOpaque(true); + list.setSelectionBackground(UIConstants.NORMAL_BLUE); + list.setSelectionForeground(Color.WHITE); + if (isSelected) { + renderer.setForeground(list.getSelectionForeground()); + renderer.setBackground(list.getSelectionBackground()); + } else { + renderer.setForeground(list.getForeground()); + renderer.setBackground(list.getBackground()); + } renderer.setText(" " + renderer.getText()); return renderer; } diff --git a/designer_base/src/com/fr/design/gui/ispinner/UISpinner.java b/designer_base/src/com/fr/design/gui/ispinner/UISpinner.java index 124a1acf34..2ffd53e19f 100644 --- a/designer_base/src/com/fr/design/gui/ispinner/UISpinner.java +++ b/designer_base/src/com/fr/design/gui/ispinner/UISpinner.java @@ -6,8 +6,9 @@ import com.fr.design.event.GlobalNameObserver; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.ibutton.UIButtonUI; import com.fr.design.gui.itextfield.UINumberField; -import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.design.utils.gui.GUIPaintUtils; import com.fr.stable.Constants; import com.fr.stable.StringUtils; @@ -16,6 +17,7 @@ import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; +import javax.swing.plaf.ButtonUI; import java.awt.*; import java.awt.event.*; @@ -164,6 +166,34 @@ public class UISpinner extends JPanel implements UIObserver, GlobalNameObserver } } + private class ButtionUI extends UIButtonUI { + private boolean isNormalPaint = true; + + @Override + protected void doExtraPainting(UIButton b, Graphics2D g2d, int w, int h, String selectedRoles) { + if (isPressed(b) && b.isPressedPainted()) { + isNormalPaint = false; + Color pressColor = UIConstants.COMBOBOX_BTN_PRESS; + GUIPaintUtils.fillPressed(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles), pressColor); + } else if (isRollOver(b)) { + isNormalPaint = false; + Color hoverColor = UIConstants.COMBOBOX_BTN_ROLLOVER; + GUIPaintUtils.fillRollOver(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles), b.isPressedPainted(), hoverColor); + } else if (b.isNormalPainted()) { + isNormalPaint = true; + GUIPaintUtils.fillNormal(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles), b.isPressedPainted()); + } + } + + @Override + protected void paintModelIcon(ButtonModel model, Icon icon, Graphics g, JComponent c) { + if (isNormalPaint) { + g.setColor(UIConstants.COMBOBOX_BTN_NORMAL); + g.fillRect(0, 0, c.getWidth(), c.getHeight()); + } + super.paintModelIcon(model, icon, g, c); + } + } private void initComponents() { textField = initNumberField(); @@ -174,12 +204,22 @@ public class UISpinner extends JPanel implements UIObserver, GlobalNameObserver public boolean shouldResponseChangeListener() { return false; } + + @Override + public ButtonUI getUI() { + return new ButtionUI(); + } }; preButton.setRoundBorder(true, Constants.LEFT); nextButton = new UIButton(UIConstants.ARROW_DOWN_ICON) { public boolean shouldResponseChangeListener() { return false; } + + @Override + public ButtonUI getUI() { + return new ButtionUI(); + } }; nextButton.setRoundBorder(true, Constants.LEFT); setLayout(new BorderLayout()); diff --git a/designer_base/src/com/fr/design/gui/itextfield/UITextField.java b/designer_base/src/com/fr/design/gui/itextfield/UITextField.java index 7df91335c2..b6936623d1 100644 --- a/designer_base/src/com/fr/design/gui/itextfield/UITextField.java +++ b/designer_base/src/com/fr/design/gui/itextfield/UITextField.java @@ -26,6 +26,9 @@ public class UITextField extends JTextField implements UIObserver, GlobalNameObs private GlobalNameListener globalNameListener = null; private Dimension preferredSize = null; + //有些情况下setText的时候不希望触发attributeChange,添加一个属性标识 + private boolean isSetting = false; + public UITextField() { super(); InputEventBaseOnOS.addBasicEditInputMap(this); @@ -78,6 +81,13 @@ public class UITextField extends JTextField implements UIObserver, GlobalNameObs } } + public boolean isSetting() { + return isSetting; + } + + public void setSetting(boolean setting) { + isSetting = setting; + } public void setPreferredSize(Dimension preferredSize) { this.preferredSize = preferredSize; @@ -88,6 +98,9 @@ public class UITextField extends JTextField implements UIObserver, GlobalNameObs } protected void attributeChange() { + if(isSetting){ + return; + } if (globalNameListener != null && shouldResponseNameListener()) { globalNameListener.setGlobalName(textFeildName); } diff --git a/designer_base/src/com/fr/design/gui/itoolbar/UIToolBarUI.java b/designer_base/src/com/fr/design/gui/itoolbar/UIToolBarUI.java index 8d3a66d459..431a5508bd 100644 --- a/designer_base/src/com/fr/design/gui/itoolbar/UIToolBarUI.java +++ b/designer_base/src/com/fr/design/gui/itoolbar/UIToolBarUI.java @@ -1,31 +1,16 @@ package com.fr.design.gui.itoolbar; -import java.awt.Component; -import java.awt.Dialog; -import java.awt.Frame; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.Window; -import java.awt.event.WindowListener; +import com.fr.design.gui.ibutton.UIToolButtonBorder; +import com.fr.design.gui.icheckbox.UICheckBox; -import javax.swing.AbstractButton; -import javax.swing.JComponent; -import javax.swing.JDialog; -import javax.swing.JRadioButton; -import javax.swing.JToolBar; -import javax.swing.RootPaneContainer; -import javax.swing.SwingUtilities; +import javax.swing.*; import javax.swing.border.Border; import javax.swing.plaf.ComponentUI; import javax.swing.plaf.UIResource; import javax.swing.plaf.metal.MetalToolBarUI; - -import com.fr.design.constants.UIConstants; -import com.fr.design.gui.ibutton.UIToolButtonBorder; -import com.fr.design.gui.icheckbox.UICheckBox; - -import static com.fr.design.utils.ThemeUtils.BACK_COLOR; +import java.awt.*; +import java.awt.event.WindowListener; public class UIToolBarUI extends MetalToolBarUI { public static final String IS_TOOL_BAR_BUTTON_KEY = "JToolBar.isToolbarButton"; @@ -91,7 +76,7 @@ public class UIToolBarUI extends MetalToolBarUI { */ public void paint(Graphics g, JComponent c) { Graphics2D g2 = (Graphics2D) g; - g2.setColor(BACK_COLOR); + g2.setColor(Color.WHITE); g2.fillRect(0, 0, c.getWidth(), c.getHeight()); } diff --git a/designer_base/src/com/fr/design/gui/itree/checkboxtree/NullTristateCheckBox.java b/designer_base/src/com/fr/design/gui/itree/checkboxtree/NullTristateCheckBox.java index 0642f96f4a..bd1747c8ac 100644 --- a/designer_base/src/com/fr/design/gui/itree/checkboxtree/NullTristateCheckBox.java +++ b/designer_base/src/com/fr/design/gui/itree/checkboxtree/NullTristateCheckBox.java @@ -65,7 +65,6 @@ public class NullTristateCheckBox extends TristateCheckBox { // @Override public void updateUI() { - super.updateUI(); clearAttribute(); } diff --git a/designer_base/src/com/fr/design/gui/style/BackgroundPane.java b/designer_base/src/com/fr/design/gui/style/BackgroundPane.java index a1841a9544..6e7ffd28da 100644 --- a/designer_base/src/com/fr/design/gui/style/BackgroundPane.java +++ b/designer_base/src/com/fr/design/gui/style/BackgroundPane.java @@ -140,6 +140,7 @@ public class BackgroundPane extends AbstractBasicStylePane { * Populate background. */ public void populateBean(Background background) { + resetPaneList(); for (int i = 0; i < paneList.length; i++) { BackgroundQuickPane pane = paneList[i]; if (pane.accept(background)) { @@ -151,6 +152,12 @@ public class BackgroundPane extends AbstractBasicStylePane { } } + private void resetPaneList() { + for (BackgroundQuickPane pane : paneList) { + pane.reset(); + } + } + /** * Update background. */ diff --git a/designer_base/src/com/fr/design/gui/style/BorderPane.java b/designer_base/src/com/fr/design/gui/style/BorderPane.java index d5a3bd9146..a78c4fd7e2 100644 --- a/designer_base/src/com/fr/design/gui/style/BorderPane.java +++ b/designer_base/src/com/fr/design/gui/style/BorderPane.java @@ -203,21 +203,16 @@ public class BorderPane extends AbstractBasicStylePane implements GlobalNameObse CellBorderStyle cellBorderStyle = this.update(); HashSet borderSet = new HashSet(Arrays.asList(BORDERARRAY)); + style = style.deriveBackground(backgroundPane.update()); if (backgroundPane.currentPane != backgroundPane.paneList[1]){ if (borderSet.contains(globalNameListener.getGlobalName())) { style = style.deriveBorder(cellBorderStyle.getTopStyle(), cellBorderStyle.getTopColor(), cellBorderStyle.getBottomStyle(), cellBorderStyle.getBottomColor(), cellBorderStyle.getLeftStyle(), cellBorderStyle.getLeftColor(), cellBorderStyle.getRightStyle(), cellBorderStyle.getRightColor()); - style = style.deriveBackground(backgroundPane.update()); - } else { - style = style.deriveBackground(backgroundPane.update()); } }else { if (borderSet.contains(globalNameListener.getGlobalName()) && !((ColorBackgroundQuickPane) backgroundPane.currentPane).isBackGroundColor()){ style = style.deriveBorder(cellBorderStyle.getTopStyle(), cellBorderStyle.getTopColor(), cellBorderStyle.getBottomStyle(), cellBorderStyle.getBottomColor(), cellBorderStyle.getLeftStyle(), cellBorderStyle.getLeftColor(), cellBorderStyle.getRightStyle(), cellBorderStyle.getRightColor()); - style = style.deriveBackground(backgroundPane.update()); - } else { - style = style.deriveBackground(backgroundPane.update()); } } diff --git a/designer_base/src/com/fr/design/gui/style/FormatPane.java b/designer_base/src/com/fr/design/gui/style/FormatPane.java index 43fcd247fa..5ab39647f4 100644 --- a/designer_base/src/com/fr/design/gui/style/FormatPane.java +++ b/designer_base/src/com/fr/design/gui/style/FormatPane.java @@ -323,7 +323,7 @@ public class FormatPane extends AbstractBasicStylePane implements GlobalNameObs public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { int contents = getFormatContents(); - String[] items = FormatField.getInstance().getFormatArray(contents); + String[] items = FormatField.getInstance().getFormatArray(contents, false); CardLayout cardLayout = (CardLayout) centerPane.getLayout(); if (isTextOrNull()) { diff --git a/designer_base/src/com/fr/design/gui/style/NumberDragBar.java b/designer_base/src/com/fr/design/gui/style/NumberDragBar.java index 0fa223a791..95596db4c5 100644 --- a/designer_base/src/com/fr/design/gui/style/NumberDragBar.java +++ b/designer_base/src/com/fr/design/gui/style/NumberDragBar.java @@ -53,6 +53,8 @@ public class NumberDragBar extends JComponent { @Override protected void paintComponent(Graphics g) { int width = this.getWidth(); + //x值在这里计算,setValue时,有时会因为组件还没画,获取到的是0 + x = (value - minValue) * (width - WIDTH_ADJUST) / (maxValue - minValue) + X_ADJUST; Graphics2D g2 = (Graphics2D)g; RenderingHints qualityHints = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); qualityHints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); @@ -118,8 +120,8 @@ public class NumberDragBar extends JComponent { if(getWidth() <= 0) { Thread.sleep(500); } - int width = getWidth(); - x = (value - minValue) * (width - WIDTH_ADJUST) / (maxValue - minValue) + X_ADJUST; +// int width = getWidth(); +// x = (value - minValue) * (width - WIDTH_ADJUST) / (maxValue - minValue) + X_ADJUST; validate(); repaint(); revalidate(); diff --git a/designer_base/src/com/fr/design/icon/IconPathConstants.java b/designer_base/src/com/fr/design/icon/IconPathConstants.java index 4a86bcf6f1..ec5fcded3f 100644 --- a/designer_base/src/com/fr/design/icon/IconPathConstants.java +++ b/designer_base/src/com/fr/design/icon/IconPathConstants.java @@ -1 +1 @@ -package com.fr.design.icon; /** * Created by IntelliJ IDEA. * Author : Richer * Version: 6.5.6 * Date: 12-12-18 * Time: 上午9:42 * 用于保存所有图标路径的类 */ public class IconPathConstants { private IconPathConstants() { } public static final String ADD_POPMENU_ICON_PATH = "/com/fr/design/images/control/addPopup.png"; public static final String DS_ICON_PATH = "/com/fr/design/images/data/datasource.png"; public static final String CLASS_TD_ICON_PATH = "/com/fr/design/images/data/source/classTableData.png"; public static final String EMB_TD_ICON_PATH = "/com/fr/design/images/data/dataTable.png"; public static final String DS_RELATION_TD_ICON_PATH = "/com/fr/design/images/data/multi.png"; public static final String FILE_TD_ICON_PATH = "/com/fr/design/images/data/file.png"; public static final String DS_TREE_TD_ICON_PATH = "/com/fr/design/images/data/tree.png"; public static final String DS_QUERY_ICON_PATH = "/com/fr/design/images/data/database.png"; public static final String PREVIEW_ICON_PATH = "/com/fr/design/images/m_file/preview.png"; public static final String TD_EDIT_ICON_PATH = "/com/fr/design/images/control/edit.png"; public static final String TD_EL_SHARE_HELP_ICON_PATH = "/com/fr/design/images/control/help_open.png"; public static final String TD_EL_SHARE_CLOSE_ICON_PATH = "/com/fr/design/images/control/help_close.png"; public static final String TD_REMOVE_ICON_PATH = "/com/fr/base/images/cell/control/remove.png"; public static final String TD_CONNECTION_ICON_PATH = "/com/fr/design/images/m_web/connection.png"; public static final String SP_SHOW_ICON_PATH = "/com/fr/design/images/data/store_procedure.png"; public static final String STD_SHOW_ICON_PATH = "/com/fr/design/images/data/dock/serverdatabase.png"; public static final String XMLA_ICON_PATH = "/com/fr/design/images/data/cube.png"; public static final String FORBID_ICON_PATH ="/com/fr/web/images/form/forbid.png"; } \ No newline at end of file +package com.fr.design.icon; /** * Created by IntelliJ IDEA. * Author : Richer * Version: 6.5.6 * Date: 12-12-18 * Time: 上午9:42 * 用于保存所有图标路径的类 */ public class IconPathConstants { private IconPathConstants() { } public static final String ADD_POPMENU_ICON_PATH = "/com/fr/design/images/control/addPopup.png"; public static final String DS_ICON_PATH = "/com/fr/design/images/data/datasource.png"; public static final String CLASS_TD_ICON_PATH = "/com/fr/design/images/data/source/classTableData.png"; public static final String EMB_TD_ICON_PATH = "/com/fr/design/images/data/dataTable.png"; public static final String DS_RELATION_TD_ICON_PATH = "/com/fr/design/images/data/multi.png"; public static final String FILE_TD_ICON_PATH = "/com/fr/design/images/data/file.png"; public static final String DS_TREE_TD_ICON_PATH = "/com/fr/design/images/data/tree.png"; public static final String DS_QUERY_ICON_PATH = "/com/fr/design/images/data/database.png"; public static final String PREVIEW_ICON_PATH = "/com/fr/design/images/m_file/preview.png"; public static final String TD_EDIT_ICON_PATH = "/com/fr/design/images/control/edit.png"; public static final String TD_EL_SHARE_HELP_ICON_PATH = "/com/fr/design/images/control/help_open.png"; public static final String TD_EL_SHARE_CLOSE_ICON_PATH = "/com/fr/design/images/control/help_close.png"; public static final String TD_REMOVE_ICON_PATH = "/com/fr/design/images/control/tab/remove.png"; public static final String TD_CONNECTION_ICON_PATH = "/com/fr/design/images/m_web/connection.png"; public static final String SP_SHOW_ICON_PATH = "/com/fr/design/images/data/store_procedure.png"; public static final String STD_SHOW_ICON_PATH = "/com/fr/design/images/data/dock/serverdatabase.png"; public static final String XMLA_ICON_PATH = "/com/fr/design/images/data/cube.png"; public static final String FORBID_ICON_PATH = "/com/fr/web/images/form/forbid.png"; } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/images/buttonicon/card_layout_16.png b/designer_base/src/com/fr/design/images/buttonicon/card_layout_16.png new file mode 100644 index 0000000000..1b9a5df8fa Binary files /dev/null and b/designer_base/src/com/fr/design/images/buttonicon/card_layout_16.png differ diff --git a/designer_base/src/com/fr/design/images/buttonicon/layout_absolute_new.png b/designer_base/src/com/fr/design/images/buttonicon/layout_absolute_new.png new file mode 100644 index 0000000000..66ea68149c Binary files /dev/null and b/designer_base/src/com/fr/design/images/buttonicon/layout_absolute_new.png differ diff --git a/designer_base/src/com/fr/design/images/buttonicon/leftNormal.png b/designer_base/src/com/fr/design/images/buttonicon/leftNormal.png index 883288d2f6..e23f392bbb 100644 Binary files a/designer_base/src/com/fr/design/images/buttonicon/leftNormal.png and b/designer_base/src/com/fr/design/images/buttonicon/leftNormal.png differ diff --git a/designer_base/src/com/fr/design/images/buttonicon/list_pressed.png b/designer_base/src/com/fr/design/images/buttonicon/list_pressed.png index de264df1ed..9914c24d3f 100644 Binary files a/designer_base/src/com/fr/design/images/buttonicon/list_pressed.png and b/designer_base/src/com/fr/design/images/buttonicon/list_pressed.png differ diff --git a/designer_base/src/com/fr/design/images/buttonicon/new_form3.png b/designer_base/src/com/fr/design/images/buttonicon/new_form3.png new file mode 100644 index 0000000000..cbf9e82c6d Binary files /dev/null and b/designer_base/src/com/fr/design/images/buttonicon/new_form3.png differ diff --git a/designer_base/src/com/fr/design/images/buttonicon/report_16.png b/designer_base/src/com/fr/design/images/buttonicon/report_16.png new file mode 100644 index 0000000000..4a2b136cd7 Binary files /dev/null and b/designer_base/src/com/fr/design/images/buttonicon/report_16.png differ diff --git a/designer_base/src/com/fr/design/images/buttonicon/widget/button_16.png b/designer_base/src/com/fr/design/images/buttonicon/widget/button_16.png new file mode 100644 index 0000000000..4c293a7001 Binary files /dev/null and b/designer_base/src/com/fr/design/images/buttonicon/widget/button_16.png differ diff --git a/designer_base/src/com/fr/design/images/buttonicon/widget/button_group_16.png b/designer_base/src/com/fr/design/images/buttonicon/widget/button_group_16.png new file mode 100644 index 0000000000..1f2f8d7158 Binary files /dev/null and b/designer_base/src/com/fr/design/images/buttonicon/widget/button_group_16.png differ diff --git a/designer_base/src/com/fr/design/images/buttonicon/widget/check_box_16.png b/designer_base/src/com/fr/design/images/buttonicon/widget/check_box_16.png new file mode 100644 index 0000000000..1c505d3a5f Binary files /dev/null and b/designer_base/src/com/fr/design/images/buttonicon/widget/check_box_16.png differ diff --git a/designer_base/src/com/fr/design/images/buttonicon/widget/checkbox_group_16.png b/designer_base/src/com/fr/design/images/buttonicon/widget/checkbox_group_16.png new file mode 100644 index 0000000000..17cd1fcde6 Binary files /dev/null and b/designer_base/src/com/fr/design/images/buttonicon/widget/checkbox_group_16.png differ diff --git a/designer_base/src/com/fr/design/images/buttonicon/widget/combo_box_16.png b/designer_base/src/com/fr/design/images/buttonicon/widget/combo_box_16.png new file mode 100644 index 0000000000..4554959ff3 Binary files /dev/null and b/designer_base/src/com/fr/design/images/buttonicon/widget/combo_box_16.png differ diff --git a/designer_base/src/com/fr/design/images/buttonicon/widget/combo_check_16.png b/designer_base/src/com/fr/design/images/buttonicon/widget/combo_check_16.png new file mode 100644 index 0000000000..71380190ab Binary files /dev/null and b/designer_base/src/com/fr/design/images/buttonicon/widget/combo_check_16.png differ diff --git a/designer_base/src/com/fr/design/images/buttonicon/widget/comboboxtree.png b/designer_base/src/com/fr/design/images/buttonicon/widget/comboboxtree.png new file mode 100644 index 0000000000..8d0db5c314 Binary files /dev/null and b/designer_base/src/com/fr/design/images/buttonicon/widget/comboboxtree.png differ diff --git a/designer_base/src/com/fr/design/images/buttonicon/widget/date_16.png b/designer_base/src/com/fr/design/images/buttonicon/widget/date_16.png new file mode 100644 index 0000000000..1603e56980 Binary files /dev/null and b/designer_base/src/com/fr/design/images/buttonicon/widget/date_16.png differ diff --git a/designer_base/src/com/fr/design/images/buttonicon/widget/files_up.png b/designer_base/src/com/fr/design/images/buttonicon/widget/files_up.png new file mode 100644 index 0000000000..6b5ee56b9c Binary files /dev/null and b/designer_base/src/com/fr/design/images/buttonicon/widget/files_up.png differ diff --git a/designer_base/src/com/fr/design/images/buttonicon/widget/label_16.png b/designer_base/src/com/fr/design/images/buttonicon/widget/label_16.png new file mode 100644 index 0000000000..023406cd8c Binary files /dev/null and b/designer_base/src/com/fr/design/images/buttonicon/widget/label_16.png differ diff --git a/designer_base/src/com/fr/design/images/buttonicon/widget/number_field_16.png b/designer_base/src/com/fr/design/images/buttonicon/widget/number_field_16.png new file mode 100644 index 0000000000..19b688df43 Binary files /dev/null and b/designer_base/src/com/fr/design/images/buttonicon/widget/number_field_16.png differ diff --git a/designer_base/src/com/fr/design/images/buttonicon/widget/password_field_16.png b/designer_base/src/com/fr/design/images/buttonicon/widget/password_field_16.png new file mode 100644 index 0000000000..e6bc297723 Binary files /dev/null and b/designer_base/src/com/fr/design/images/buttonicon/widget/password_field_16.png differ diff --git a/designer_base/src/com/fr/design/images/buttonicon/widget/text_area_16.png b/designer_base/src/com/fr/design/images/buttonicon/widget/text_area_16.png new file mode 100644 index 0000000000..4b57472dc2 Binary files /dev/null and b/designer_base/src/com/fr/design/images/buttonicon/widget/text_area_16.png differ diff --git a/designer_base/src/com/fr/design/images/buttonicon/widget/text_field_16.png b/designer_base/src/com/fr/design/images/buttonicon/widget/text_field_16.png new file mode 100644 index 0000000000..553a908460 Binary files /dev/null and b/designer_base/src/com/fr/design/images/buttonicon/widget/text_field_16.png differ diff --git a/designer_base/src/com/fr/design/images/buttonicon/widget/tree_16.png b/designer_base/src/com/fr/design/images/buttonicon/widget/tree_16.png new file mode 100644 index 0000000000..5e442d2d82 Binary files /dev/null and b/designer_base/src/com/fr/design/images/buttonicon/widget/tree_16.png differ diff --git a/designer_base/src/com/fr/design/images/control/edit.png b/designer_base/src/com/fr/design/images/control/edit.png index 7491cb9c23..14ff765e43 100644 Binary files a/designer_base/src/com/fr/design/images/control/edit.png and b/designer_base/src/com/fr/design/images/control/edit.png differ diff --git a/designer_base/src/com/fr/design/images/control/sortAsc.png b/designer_base/src/com/fr/design/images/control/sortAsc.png index a5be47df3b..9fcdee421e 100644 Binary files a/designer_base/src/com/fr/design/images/control/sortAsc.png and b/designer_base/src/com/fr/design/images/control/sortAsc.png differ diff --git a/designer_base/src/com/fr/design/images/control/tab/remove.png b/designer_base/src/com/fr/design/images/control/tab/remove.png new file mode 100644 index 0000000000..6fb2baac51 Binary files /dev/null and b/designer_base/src/com/fr/design/images/control/tab/remove.png differ diff --git a/designer_base/src/com/fr/design/images/data/source/dataDictionary.png b/designer_base/src/com/fr/design/images/data/source/dataDictionary.png index 2f0fc8c870..516d368b27 100644 Binary files a/designer_base/src/com/fr/design/images/data/source/dataDictionary.png and b/designer_base/src/com/fr/design/images/data/source/dataDictionary.png differ diff --git a/designer_base/src/com/fr/design/images/expand/asc_selected.png b/designer_base/src/com/fr/design/images/expand/asc_selected.png new file mode 100644 index 0000000000..021bd2a495 Binary files /dev/null and b/designer_base/src/com/fr/design/images/expand/asc_selected.png differ diff --git a/designer_base/src/com/fr/design/images/expand/cellAttr.gif b/designer_base/src/com/fr/design/images/expand/cellAttr.gif index ce34c2b300..1211f79850 100644 Binary files a/designer_base/src/com/fr/design/images/expand/cellAttr.gif and b/designer_base/src/com/fr/design/images/expand/cellAttr.gif differ diff --git a/designer_base/src/com/fr/design/images/expand/des_selected.png b/designer_base/src/com/fr/design/images/expand/des_selected.png new file mode 100644 index 0000000000..de36181059 Binary files /dev/null and b/designer_base/src/com/fr/design/images/expand/des_selected.png differ diff --git a/designer_base/src/com/fr/design/images/expand/landspace_selected@1x.png b/designer_base/src/com/fr/design/images/expand/landspace_selected@1x.png new file mode 100644 index 0000000000..05939a67b9 Binary files /dev/null and b/designer_base/src/com/fr/design/images/expand/landspace_selected@1x.png differ diff --git a/designer_base/src/com/fr/design/images/expand/none16x16_selected@1x.png b/designer_base/src/com/fr/design/images/expand/none16x16_selected@1x.png new file mode 100644 index 0000000000..24daf102b0 Binary files /dev/null and b/designer_base/src/com/fr/design/images/expand/none16x16_selected@1x.png differ diff --git a/designer_base/src/com/fr/design/images/expand/vertical_selected@1x.png b/designer_base/src/com/fr/design/images/expand/vertical_selected@1x.png new file mode 100644 index 0000000000..0c78083bc6 Binary files /dev/null and b/designer_base/src/com/fr/design/images/expand/vertical_selected@1x.png differ diff --git a/designer_base/src/com/fr/design/images/gui/color/foreground.png b/designer_base/src/com/fr/design/images/gui/color/foreground.png index 1803c11179..faac2e1ace 100644 Binary files a/designer_base/src/com/fr/design/images/gui/color/foreground.png and b/designer_base/src/com/fr/design/images/gui/color/foreground.png differ diff --git a/designer_base/src/com/fr/design/images/gui/color/foreground2.png b/designer_base/src/com/fr/design/images/gui/color/foreground2.png new file mode 100644 index 0000000000..1803c11179 Binary files /dev/null and b/designer_base/src/com/fr/design/images/gui/color/foreground2.png differ diff --git a/designer_base/src/com/fr/design/images/lookandfeel/FileIcon.png b/designer_base/src/com/fr/design/images/lookandfeel/FileIcon.png index 7b797d4ee6..fcaca10b7a 100644 Binary files a/designer_base/src/com/fr/design/images/lookandfeel/FileIcon.png and b/designer_base/src/com/fr/design/images/lookandfeel/FileIcon.png differ diff --git a/designer_base/src/com/fr/design/images/m_edit/redo.png b/designer_base/src/com/fr/design/images/m_edit/redo.png index d9225f68b3..f6b77b4f47 100644 Binary files a/designer_base/src/com/fr/design/images/m_edit/redo.png and b/designer_base/src/com/fr/design/images/m_edit/redo.png differ diff --git a/designer_base/src/com/fr/design/images/m_edit/undo.png b/designer_base/src/com/fr/design/images/m_edit/undo.png index 2276c3384b..f86a17441d 100644 Binary files a/designer_base/src/com/fr/design/images/m_edit/undo.png and b/designer_base/src/com/fr/design/images/m_edit/undo.png differ diff --git a/designer_base/src/com/fr/design/images/m_file/excel.png b/designer_base/src/com/fr/design/images/m_file/excel.png index c327467639..7e04e70730 100644 Binary files a/designer_base/src/com/fr/design/images/m_file/excel.png and b/designer_base/src/com/fr/design/images/m_file/excel.png differ diff --git a/designer_base/src/com/fr/design/images/m_file/export.png b/designer_base/src/com/fr/design/images/m_file/export.png index f0908eae2a..c56ee44199 100644 Binary files a/designer_base/src/com/fr/design/images/m_file/export.png and b/designer_base/src/com/fr/design/images/m_file/export.png differ diff --git a/designer_base/src/com/fr/design/images/m_file/pageSetup.png b/designer_base/src/com/fr/design/images/m_file/pageSetup.png index 7e9788f89b..06fa9dd287 100644 Binary files a/designer_base/src/com/fr/design/images/m_file/pageSetup.png and b/designer_base/src/com/fr/design/images/m_file/pageSetup.png differ diff --git a/designer_base/src/com/fr/design/images/m_file/save.png b/designer_base/src/com/fr/design/images/m_file/save.png index 92c3333755..1db40d0b40 100644 Binary files a/designer_base/src/com/fr/design/images/m_file/save.png and b/designer_base/src/com/fr/design/images/m_file/save.png differ diff --git a/designer_base/src/com/fr/design/images/m_format/cellAttr.png b/designer_base/src/com/fr/design/images/m_format/cellAttr.png index 9243c13435..5cd5db7165 100644 Binary files a/designer_base/src/com/fr/design/images/m_format/cellAttr.png and b/designer_base/src/com/fr/design/images/m_format/cellAttr.png differ diff --git a/designer_base/src/com/fr/design/images/m_format/cellstyle/bold_white.png b/designer_base/src/com/fr/design/images/m_format/cellstyle/bold_white.png new file mode 100644 index 0000000000..f10c6bef13 Binary files /dev/null and b/designer_base/src/com/fr/design/images/m_format/cellstyle/bold_white.png differ diff --git a/designer_base/src/com/fr/design/images/m_format/cellstyle/h_center_normal_white.png b/designer_base/src/com/fr/design/images/m_format/cellstyle/h_center_normal_white.png new file mode 100644 index 0000000000..2f7432769b Binary files /dev/null and b/designer_base/src/com/fr/design/images/m_format/cellstyle/h_center_normal_white.png differ diff --git a/designer_base/src/com/fr/design/images/m_format/cellstyle/h_left_normal_white.png b/designer_base/src/com/fr/design/images/m_format/cellstyle/h_left_normal_white.png new file mode 100644 index 0000000000..94a2be8dc2 Binary files /dev/null and b/designer_base/src/com/fr/design/images/m_format/cellstyle/h_left_normal_white.png differ diff --git a/designer_base/src/com/fr/design/images/m_format/cellstyle/h_right_normal_white.png b/designer_base/src/com/fr/design/images/m_format/cellstyle/h_right_normal_white.png new file mode 100644 index 0000000000..e8d21e9d06 Binary files /dev/null and b/designer_base/src/com/fr/design/images/m_format/cellstyle/h_right_normal_white.png differ diff --git a/designer_base/src/com/fr/design/images/m_format/cellstyle/italic_white.png b/designer_base/src/com/fr/design/images/m_format/cellstyle/italic_white.png new file mode 100644 index 0000000000..936a3e7840 Binary files /dev/null and b/designer_base/src/com/fr/design/images/m_format/cellstyle/italic_white.png differ diff --git a/designer_base/src/com/fr/design/images/m_format/cellstyle/underline_white.png b/designer_base/src/com/fr/design/images/m_format/cellstyle/underline_white.png new file mode 100644 index 0000000000..86e06dad0b Binary files /dev/null and b/designer_base/src/com/fr/design/images/m_format/cellstyle/underline_white.png differ diff --git a/designer_base/src/com/fr/design/images/m_format/highlight.png b/designer_base/src/com/fr/design/images/m_format/highlight.png index 7491cb9c23..14ff765e43 100644 Binary files a/designer_base/src/com/fr/design/images/m_format/highlight.png and b/designer_base/src/com/fr/design/images/m_format/highlight.png differ diff --git a/designer_base/src/com/fr/design/images/m_insert/chart.png b/designer_base/src/com/fr/design/images/m_insert/chart.png index 504ca94847..c6de0fe5e0 100644 Binary files a/designer_base/src/com/fr/design/images/m_insert/chart.png and b/designer_base/src/com/fr/design/images/m_insert/chart.png differ diff --git a/designer_base/src/com/fr/design/images/m_insert/float.png b/designer_base/src/com/fr/design/images/m_insert/float.png index 48d5ee59c7..a84c636d34 100644 Binary files a/designer_base/src/com/fr/design/images/m_insert/float.png and b/designer_base/src/com/fr/design/images/m_insert/float.png differ diff --git a/designer_base/src/com/fr/design/images/m_insert/floatPop.png b/designer_base/src/com/fr/design/images/m_insert/floatPop.png index 91600bd0ff..46dca4f871 100644 Binary files a/designer_base/src/com/fr/design/images/m_insert/floatPop.png and b/designer_base/src/com/fr/design/images/m_insert/floatPop.png differ diff --git a/designer_base/src/com/fr/design/images/m_insert/hyperLink.png b/designer_base/src/com/fr/design/images/m_insert/hyperLink.png index a23db4f76a..b81a666d5a 100644 Binary files a/designer_base/src/com/fr/design/images/m_insert/hyperLink.png and b/designer_base/src/com/fr/design/images/m_insert/hyperLink.png differ diff --git a/designer_base/src/com/fr/design/images/m_insert/insertRow.png b/designer_base/src/com/fr/design/images/m_insert/insertRow.png index 9b681aa70b..680879833c 100644 Binary files a/designer_base/src/com/fr/design/images/m_insert/insertRow.png and b/designer_base/src/com/fr/design/images/m_insert/insertRow.png differ diff --git a/designer_base/src/com/fr/design/images/m_insert/subReport.png b/designer_base/src/com/fr/design/images/m_insert/subReport.png index 6b999b0ff0..89d3df9ca0 100644 Binary files a/designer_base/src/com/fr/design/images/m_insert/subReport.png and b/designer_base/src/com/fr/design/images/m_insert/subReport.png differ diff --git a/designer_base/src/com/fr/design/images/m_report/allow_authority_edit.png b/designer_base/src/com/fr/design/images/m_report/allow_authority_edit.png index 86932458f8..b6053b72cf 100644 Binary files a/designer_base/src/com/fr/design/images/m_report/allow_authority_edit.png and b/designer_base/src/com/fr/design/images/m_report/allow_authority_edit.png differ diff --git a/designer_base/src/com/fr/design/images/m_report/exportAttr.png b/designer_base/src/com/fr/design/images/m_report/exportAttr.png index f0908eae2a..c56ee44199 100644 Binary files a/designer_base/src/com/fr/design/images/m_report/exportAttr.png and b/designer_base/src/com/fr/design/images/m_report/exportAttr.png differ diff --git a/designer_base/src/com/fr/design/images/m_report/p.png b/designer_base/src/com/fr/design/images/m_report/p.png index 1256e9fd1d..d944f88d20 100644 Binary files a/designer_base/src/com/fr/design/images/m_report/p.png and b/designer_base/src/com/fr/design/images/m_report/p.png differ diff --git a/designer_base/src/com/fr/design/images/m_report/reportEngineAttr.png b/designer_base/src/com/fr/design/images/m_report/reportEngineAttr.png index 4ffcaba050..7d1389bfd7 100644 Binary files a/designer_base/src/com/fr/design/images/m_report/reportEngineAttr.png and b/designer_base/src/com/fr/design/images/m_report/reportEngineAttr.png differ diff --git a/designer_base/src/com/fr/design/images/m_web/datasource.png b/designer_base/src/com/fr/design/images/m_web/datasource.png index 4b8bd89ab4..2ff090e33d 100644 Binary files a/designer_base/src/com/fr/design/images/m_web/datasource.png and b/designer_base/src/com/fr/design/images/m_web/datasource.png differ diff --git a/designer_base/src/com/fr/design/images/m_web/edit.png b/designer_base/src/com/fr/design/images/m_web/edit.png index a6b49911d9..8af26fa1e8 100644 Binary files a/designer_base/src/com/fr/design/images/m_web/edit.png and b/designer_base/src/com/fr/design/images/m_web/edit.png differ diff --git a/designer_base/src/com/fr/design/images/m_web/function.png b/designer_base/src/com/fr/design/images/m_web/function.png index 5b85a0c7a5..5f8119e09d 100644 Binary files a/designer_base/src/com/fr/design/images/m_web/function.png and b/designer_base/src/com/fr/design/images/m_web/function.png differ diff --git a/designer_base/src/com/fr/design/images/m_web/style.png b/designer_base/src/com/fr/design/images/m_web/style.png index 2f42e1e4ca..e000c81b7c 100644 Binary files a/designer_base/src/com/fr/design/images/m_web/style.png and b/designer_base/src/com/fr/design/images/m_web/style.png differ diff --git a/designer_base/src/com/fr/design/images/server/platform_16_16.png b/designer_base/src/com/fr/design/images/server/platform_16_16.png new file mode 100644 index 0000000000..3c3c808339 Binary files /dev/null and b/designer_base/src/com/fr/design/images/server/platform_16_16.png differ diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index 26dbee0b67..938f9b1640 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -548,7 +548,7 @@ FR-Designer_Function_Description_Area_Text=The class must inherit 'com.fr.script FR-Designer_PageSetup_Horizontal=Horizontal FR-Designer_PageSetup_Vertical=Vertical FR-Designer_Gradient_Direction=Gradient Direction -FR-Designer_Drag_To_Select_Gradient=\\ Drag the button below to choose gradient area, click it to choose color +FR-Designer_Drag_To_Select_Gradient=Drag the button below to choose gradient area, click it to choose color FR-Designer_Display_Value=Display Value FR-Designer_Actual_Value=Actual Value FR-Designer_CellWrite_ToolTip=Tool Tip of Cell diff --git a/designer_base/src/com/fr/design/locale/designer_en_US.properties b/designer_base/src/com/fr/design/locale/designer_en_US.properties index bc15eaf28c..53b7873e48 100644 --- a/designer_base/src/com/fr/design/locale/designer_en_US.properties +++ b/designer_base/src/com/fr/design/locale/designer_en_US.properties @@ -550,7 +550,7 @@ FR-Designer_Function_Description_Area_Text=The class must inherit 'com.fr.script FR-Designer_PageSetup_Horizontal=Horizontal FR-Designer_PageSetup_Vertical=Vertical FR-Designer_Gradient_Direction=Gradient Direction -FR-Designer_Drag_To_Select_Gradient=\\ Drag the button below to choose gradient area, click it to choose color +FR-Designer_Drag_To_Select_Gradient=Drag the button below to choose gradient area, click it to choose color FR-Designer_Display_Value=Display Value FR-Designer_Actual_Value=Actual Value FR-Designer_CellWrite_ToolTip=Tool Tip of Cell diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index 8a11e4a6d9..57c6eb3bb9 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -526,7 +526,7 @@ FR-Designer_Function_Description_Area_Text=\u3053\u306E\u30AF\u30E9\u30B9\u306F\ FR-Designer_PageSetup_Horizontal=\u6A2A\u65B9\u5411 FR-Designer_PageSetup_Vertical=\u7E26\u65B9\u5411 FR-Designer_Gradient_Direction=\u65B9\u5411\u3092\u5F90\u3005\u306B\u5909\u5316 -FR-Designer_Drag_To_Select_Gradient=\\ \u4E0B\u65B9\u306E\u30DC\u30BF\u30F3\u3092\u30D7\u30EB\u30C0\u30A6\u30F3\u3057\u3066\u6F38\u6B21\u5909\u5316\u30A8\u30EA\u30A2\u3092\u9078\u629E\u3057\u3001\u30AF\u30EA\u30C3\u30AF\u3057 +FR-Designer_Drag_To_Select_Gradient=\u4E0B\u65B9\u306E\u30DC\u30BF\u30F3\u3092\u30D7\u30EB\u30C0\u30A6\u30F3\u3057\u3066\u6F38\u6B21\u5909\u5316\u30A8\u30EA\u30A2\u3092\u9078\u629E\u3057\u3001\u30AF\u30EA\u30C3\u30AF\u3057 FR-Designer_Display_Value=\u8868\u793A\u5024 FR-Designer_Actual_Value=\u5B9F\u969B\u5024 FR-Designer_CellWrite_ToolTip=\u30BB\u30EB\u30D2\u30F3\u30C8 diff --git a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties index fe99d8df87..37f64cf57b 100644 --- a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties +++ b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties @@ -522,7 +522,7 @@ FR-Designer_Function_Description_Area_Text=\uD574\uB2F9\uD074\uB798\uC2A4\uB294\ FR-Designer_PageSetup_Horizontal=\uAC00\uB85C FR-Designer_PageSetup_Vertical=\uC138\uB85C FR-Designer_Gradient_Direction=\uADF8\uB77C\uB370\uC774\uC158 \uBC29\uD5A5 -FR-Designer_Drag_To_Select_Gradient=\\\uD558\uB2E8\uD0A4\uB97C\uB4DC\uB798\uADF8\uD558\uC5EC\uADF8\uB77C\uB370\uC774\uC158\uC601\uC5ED\uC744\uC120\uD0DD\uD558\uACE0\uD0A4\uB97C\uD074\uB9AD\uD558\uC5EC\uD574\uB2F9\uC0C9\uC120\uD0DD +FR-Designer_Drag_To_Select_Gradient=\uD558\uB2E8\uD0A4\uB97C\uB4DC\uB798\uADF8\uD558\uC5EC\uADF8\uB77C\uB370\uC774\uC158\uC601\uC5ED\uC744\uC120\uD0DD\uD558\uACE0\uD0A4\uB97C\uD074\uB9AD\uD558\uC5EC\uD574\uB2F9\uC0C9\uC120\uD0DD FR-Designer_Display_Value=\uAC12\uBCF4\uC774\uAE30 FR-Designer_Actual_Value=\uC2E4\uC81C\uAC12 FR-Designer_CellWrite_ToolTip=\uB0B4\uC6A9\uC54C\uB9BC diff --git a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties index 99db2255d6..8d9517cddd 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties @@ -556,7 +556,7 @@ FR-Designer_Function_Description_Area_Text=\u8BE5\u7C7B\u5FC5\u987B\u7EE7\u627F" FR-Designer_PageSetup_Horizontal=\u6A2A\u5411 FR-Designer_PageSetup_Vertical=\u7EB5\u5411 FR-Designer_Gradient_Direction=\u6E10\u53D8\u65B9\u5411 -FR-Designer_Drag_To_Select_Gradient=\\ \u62D6\u52A8\u4E0B\u65B9\u6309\u94AE\u9009\u62E9\u6E10\u53D8\u533A\u57DF\uFF0C\u5355\u51FB\u6309\u94AE\u9009\u62E9\u5BF9\u5E94\u989C\u8272 +FR-Designer_Drag_To_Select_Gradient=\u62D6\u52A8\u4E0B\u65B9\u6309\u94AE\u9009\u62E9\u6E10\u53D8\u533A\u57DF\uFF0C\u5355\u51FB\u6309\u94AE\u9009\u62E9\u5BF9\u5E94\u989C\u8272 FR-Designer_Display_Value=\u663E\u793A\u503C FR-Designer_Actual_Value=\u5B9E\u9645\u503C FR-Designer_CellWrite_ToolTip=\u5185\u5BB9\u63D0\u793A diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties index 9e5d26792e..41cb4bed8c 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties @@ -543,7 +543,7 @@ FR-Designer_Function_Description_Area_Text=\u8A72\u985E\u5FC5\u9808\u7E7C\u627F" FR-Designer_PageSetup_Horizontal=\u6A2A\u5411 FR-Designer_PageSetup_Vertical=\u7E31\u5411 FR-Designer_Gradient_Direction=\u6F38\u8B8A\u65B9\u5411 -FR-Designer_Drag_To_Select_Gradient=\\ \u62D6\u52D5\u4E0B\u767C\u90A3\u500B\u6309\u9215\u61F8\u8457\u5340\u57DF\uFF0C\u55AE\u64CA\u6309\u9215\u9078\u64C7\u984F\u8272 +FR-Designer_Drag_To_Select_Gradient=\u62D6\u52D5\u4E0B\u767C\u90A3\u500B\u6309\u9215\u61F8\u8457\u5340\u57DF\uFF0C\u55AE\u64CA\u6309\u9215\u9078\u64C7\u984F\u8272 FR-Designer_Display_Value=\u986F\u793A\u503C FR-Designer_Actual_Value=\u5BE6\u969B\u503C FR-Designer_CellWrite_ToolTip=\u5167\u5BB9\u63D0\u793A diff --git a/designer_base/src/com/fr/design/mainframe/DesignerContext.java b/designer_base/src/com/fr/design/mainframe/DesignerContext.java index dddb560272..1bf541f3ae 100644 --- a/designer_base/src/com/fr/design/mainframe/DesignerContext.java +++ b/designer_base/src/com/fr/design/mainframe/DesignerContext.java @@ -36,7 +36,8 @@ public class DesignerContext { private static Hashtable prop = new Hashtable(); private static Hashtable beans = new Hashtable(); - ; + + private static boolean refreshOnTargetModified = false; /** * Return the main design frame from context @@ -136,4 +137,20 @@ public class DesignerContext { public static void setReportWritePane(BasicDialog dlg){ reportWriteThread.set(dlg); } + + /** + * 在修改 Target 时,刷新右侧属性面板 + */ + public static void enableRefreshOnTargetModified() { + refreshOnTargetModified = true; + } + + /** + * 在修改 Target 时,是否刷新右侧属性面板。仅可刷新一次,取值后重置为 false + */ + public static boolean isRefreshOnTargetModifiedEnabled() { + boolean isRefresh = refreshOnTargetModified; + refreshOnTargetModified = false; + return isRefresh; + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/mainframe/DesignerFrame.java b/designer_base/src/com/fr/design/mainframe/DesignerFrame.java index f28c43de77..5135cf2998 100644 --- a/designer_base/src/com/fr/design/mainframe/DesignerFrame.java +++ b/designer_base/src/com/fr/design/mainframe/DesignerFrame.java @@ -10,12 +10,17 @@ import com.fr.design.DesignModelAdapter; import com.fr.design.DesignState; import com.fr.design.DesignerEnvManager; import com.fr.design.ExtraDesignClassManager; +import com.fr.design.actions.help.alphafine.AlphaFineConfigManager; import com.fr.design.constants.UIConstants; import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.datapane.TableDataTreePane; import com.fr.design.event.TargetModifiedEvent; import com.fr.design.event.TargetModifiedListener; -import com.fr.design.file.*; +import com.fr.design.file.HistoryTemplateListPane; +import com.fr.design.file.MutilTempalteTabPane; +import com.fr.design.file.NewTemplatePane; +import com.fr.design.file.SaveSomeTemplatePane; +import com.fr.design.file.TemplateTreePane; import com.fr.design.fun.TitlePlaceProcessor; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.imenu.UIMenuHighLight; @@ -54,8 +59,20 @@ import javax.swing.border.MatteBorder; import java.awt.*; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; -import java.awt.dnd.*; -import java.awt.event.*; +import java.awt.dnd.DnDConstants; +import java.awt.dnd.DropTarget; +import java.awt.dnd.DropTargetDragEvent; +import java.awt.dnd.DropTargetDropEvent; +import java.awt.dnd.DropTargetEvent; +import java.awt.dnd.DropTargetListener; +import java.awt.event.ComponentAdapter; +import java.awt.event.ComponentEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.awt.event.WindowListener; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; @@ -65,115 +82,226 @@ import java.util.List; import java.util.logging.Level; public class DesignerFrame extends JFrame implements JTemplateActionListener, TargetModifiedListener { - private static final long serialVersionUID = -8732559571067484460L; - private static final int LEFT_ALIGN_GAP = -5; - private static final int MENU_HEIGHT = 26; - private static final Integer SECOND_LAYER = new Integer(100); - private static final Integer TOP_LAYER = new Integer((200)); - - public static final String DESIGNER_FRAME_NAME = "designer_frame"; - public static final Dimension MIN_SIZE = new Dimension(100, 100); - - private static java.util.List> appList = new java.util.ArrayList>(); - - private ToolBarMenuDock ad; - - private DesktopCardPane centerTemplateCardPane; - - private JPanel toolbarPane; - private JComponent toolbarComponent; - - private JPanel menuPane; - private JMenuBar menuBar; - private JPanel eastCenterPane; - private UIToolbar combineUp; - private NewTemplatePane newWorkBookPane = null; - private Icon closeMode = UIConstants.CLOSE_OF_AUTHORITY; - private JLayeredPane layeredPane = this.getLayeredPane(); - private JPanel basePane = new JPanel(); - // 上面的虚线 - private DottedLine upDottedLine; - // 下面的虚线 - private DottedLine downDottedLine; - - // 左边的虚线 - private DottedLine leftDottedLine; - - // 右边的虚线 - private DottedLine rightDottedLine; - - private int contentWidth = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth()); - private int contentHeight = (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight()); - - private WindowAdapter windowAdapter = new WindowAdapter() { - public void windowOpened(WindowEvent e) { - HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().setComposite(); - reCalculateFrameSize(); - HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().doResize(); - - } - - @Override - public void windowClosing(WindowEvent e) { - SaveSomeTemplatePane saveSomeTempaltePane = new SaveSomeTemplatePane(true); - // 只有一个文件未保存时 - if (HistoryTemplateListPane.getInstance().getHistoryCount() == 1) { - int choose = saveSomeTempaltePane.saveLastOneTemplate(); - if (choose != JOptionPane.CANCEL_OPTION) { - DesignerFrame.this.exit(); - } - } else { - if (saveSomeTempaltePane.showSavePane()) { - DesignerFrame.this.exit(); - } - } - } - - }; - - private JComponent closeButton = new JComponent() { - protected void paintComponent(Graphics g) { - g.setColor(UIConstants.NORMAL_BACKGROUND); - g.fillArc(0, 0, UIConstants.CLOSE_AUTHORITY_HEIGHT_AND_WIDTH, UIConstants.CLOSE_AUTHORITY_HEIGHT_AND_WIDTH, - 0, 360); - closeMode.paintIcon(this, g, 0, 0); - } - }; - - /** - * 注册app. - * - * @param app - * 注册app. - */ - public static void registApp(App app) { - if (app != null) { - appList.add(app); - } - } - + public static final String DESIGNER_FRAME_NAME = "designer_frame"; + public static final Dimension MIN_SIZE = new Dimension(100, 100); + private static final long serialVersionUID = -8732559571067484460L; + private static final int LEFT_ALIGN_GAP = -5; + private static final int MENU_HEIGHT = 26; + private static final Integer SECOND_LAYER = new Integer(100); + private static final Integer TOP_LAYER = new Integer((200)); + private static java.util.List> appList = new java.util.ArrayList>(); + + private ToolBarMenuDock ad; + + private DesktopCardPane centerTemplateCardPane; + + private JPanel toolbarPane; + private JComponent toolbarComponent; + + private JPanel menuPane; + private JMenuBar menuBar; + private JPanel eastCenterPane; + private UIToolbar combineUp; + private NewTemplatePane newWorkBookPane = null; + private Icon closeMode = UIConstants.CLOSE_OF_AUTHORITY; + private JLayeredPane layeredPane = this.getLayeredPane(); + private JPanel basePane = new JPanel(); + // 上面的虚线 + private DottedLine upDottedLine; + // 下面的虚线 + private DottedLine downDottedLine; + + // 左边的虚线 + private DottedLine leftDottedLine; + + // 右边的虚线 + private DottedLine rightDottedLine; + + private int contentWidth = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth()); + private int contentHeight = (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight()); + + private WindowAdapter windowAdapter = new WindowAdapter() { + public void windowOpened(WindowEvent e) { + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().setComposite(); + reCalculateFrameSize(); + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().doResize(); + + } + + @Override + public void windowClosing(WindowEvent e) { + SaveSomeTemplatePane saveSomeTempaltePane = new SaveSomeTemplatePane(true); + // 只有一个文件未保存时 + if (HistoryTemplateListPane.getInstance().getHistoryCount() == 1) { + int choose = saveSomeTempaltePane.saveLastOneTemplate(); + if (choose != JOptionPane.CANCEL_OPTION) { + DesignerFrame.this.exit(); + } + } else { + if (saveSomeTempaltePane.showSavePane()) { + DesignerFrame.this.exit(); + } + } + } + + }; + + private JComponent closeButton = new JComponent() { + protected void paintComponent(Graphics g) { + g.setColor(UIConstants.NORMAL_BACKGROUND); + g.fillArc(0, 0, UIConstants.CLOSE_AUTHORITY_HEIGHT_AND_WIDTH, UIConstants.CLOSE_AUTHORITY_HEIGHT_AND_WIDTH, + 0, 360); + closeMode.paintIcon(this, g, 0, 0); + } + }; + private MouseListener closeMouseListener = new MouseAdapter() { + public void mousePressed(MouseEvent e) { + closeMode = UIConstants.CLOSE_PRESS_AUTHORITY; + closeButton.setBackground(UIConstants.NORMAL_BACKGROUND); + closeButton.repaint(); + } + + public void mouseExited(MouseEvent e) { + closeMode = UIConstants.CLOSE_OF_AUTHORITY; + closeButton.setBackground(UIConstants.NORMAL_BACKGROUND); + closeButton.repaint(); + } + + public void mouseMoved(MouseEvent e) { + closeMode = UIConstants.CLOSE_OVER_AUTHORITY; + closeButton.setBackground(UIConstants.NORMAL_BACKGROUND); + closeButton.repaint(); + } + + public void mouseReleased(MouseEvent e) { + if (BaseUtils.isAuthorityEditing()) { + BaseUtils.setAuthorityEditing(false); + WestRegionContainerPane.getInstance().replaceDownPane( + TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter())); + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().refreshEastPropertiesPane(); + DesignerContext.getDesignerFrame().resetToolkitByPlus( + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getToolBarMenuDockPlus()); + needToAddAuhtorityPaint(); + refreshDottedLine(); + fireAuthorityStateToNomal(); + } + } + + public void mouseEntered(MouseEvent e) { + closeMode = UIConstants.CLOSE_OVER_AUTHORITY; + closeButton.setBackground(UIConstants.NORMAL_BACKGROUND); + closeButton.repaint(); + } + }; + + public DesignerFrame(ToolBarMenuDock ad) { + + setName(DESIGNER_FRAME_NAME); + this.ad = ad; + this.initTitleIcon(); + this.setTitle();// james:因为有默认的了 + // set this to context. + DesignerContext.setDesignerFrame(this); + + // the content pane + basePane.setLayout(new BorderLayout()); + toolbarPane = new JPanel() { + public Dimension getPreferredSize() { + Dimension dim = super.getPreferredSize(); + // dim.height = TOOLBAR_HEIGHT; + return dim; + } + }; + toolbarPane.setLayout(FRGUIPaneFactory.createBorderLayout()); + JPanel eastPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + eastPane.add(ad.createLargeToolbar(), BorderLayout.WEST); + eastCenterPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + eastCenterPane.add(combineUp = combineUpTooBar(null), BorderLayout.NORTH); + JPanel panel = FRGUIPaneFactory.createBorderLayout_S_Pane(); + panel.add(newWorkBookPane = ad.getNewTemplatePane(), BorderLayout.WEST); + panel.add(MutilTempalteTabPane.getInstance(), BorderLayout.CENTER); + eastCenterPane.add(panel, BorderLayout.CENTER); + + eastPane.add(eastCenterPane, BorderLayout.CENTER); + toolbarPane.add(eastPane, BorderLayout.NORTH); + toolbarPane.add(new UIMenuHighLight(), BorderLayout.SOUTH); + + JPanel centerPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + centerPane.add(centerTemplateCardPane = new DesktopCardPane(), BorderLayout.CENTER); + centerPane.add(toolbarPane, BorderLayout.NORTH); + + + basePane.add(centerPane, BorderLayout.CENTER); + laoyoutWestPane(); +// JPanel eastRegionPane = new JPanel(new BorderLayout()); +// eastRegionPane.add(EastRegionContainerPane.getInstance(), BorderLayout.CENTER); +// eastRegionPane.add(JSliderPane.getInstance(), BorderLayout.SOUTH); +// basePane.add(eastRegionPane, BorderLayout.EAST); + + basePane.add(EastRegionContainerPane.getInstance(), BorderLayout.EAST); + basePane.setBounds(0, 0, contentWidth, contentHeight); + + // 数值越小。越在底层 + layeredPane.add(basePane); + // 调整Window大小 + modWindowBounds(); + + + // p:检查所有按钮的可见性和是否可以编辑性. + checkToolbarMenuEnable(); + + // window close listener. + this.addWindowListeners(getFrameListeners()); + + this.addComponentListener(new ComponentAdapter() { + public void componentResized(ComponentEvent e) { + reCalculateFrameSize(); + if (BaseUtils.isAuthorityEditing()) { + doResize(); + } + } + }); + this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); + this.setVisible(false); + this.setExtendedState(JFrame.MAXIMIZED_BOTH); + this.setDropTarget(new DropTarget(this, DnDConstants.ACTION_MOVE, new FileDropTargetListener(), true)); + closeMode = UIConstants.CLOSE_OF_AUTHORITY; + initMenuPane(); + } + + /** + * 注册app. + * + * @param app 注册app. + */ + public static void registApp(App app) { + if (app != null) { + appList.add(app); + } + } + public static void removeApp(App app) { - + if (app != null) { appList.remove(app); } } - protected DesktopCardPane getCenterTemplateCardPane() { - return centerTemplateCardPane; - } - - /** - * 初始menuPane的方法 方便OEM时修改该组件 - */ - protected void initMenuPane(){ - menuPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - menuPane.add(new UIMenuHighLight(), BorderLayout.SOUTH); - menuPane.add(initNorthEastPane(ad), BorderLayout.EAST); - basePane.add(menuPane, BorderLayout.NORTH); - this.resetToolkitByPlus(null); - } - + protected DesktopCardPane getCenterTemplateCardPane() { + return centerTemplateCardPane; + } + + /** + * 初始menuPane的方法 方便OEM时修改该组件 + */ + protected void initMenuPane() { + menuPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + menuPane.add(new UIMenuHighLight(), BorderLayout.SOUTH); + menuPane.add(initNorthEastPane(ad), BorderLayout.EAST); + basePane.add(menuPane, BorderLayout.NORTH); + this.resetToolkitByPlus(null); + } + /** * @param ad * @return @@ -184,658 +312,532 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta final JPanel northEastPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); //优先级为-1,保证最后全面刷新一次 GeneralContext.listenPluginRunningChanged(new PluginEventListener(-1) { - + @Override public void on(PluginEvent event) { - + refreshNorthEastPane(northEastPane, ad); DesignUtils.refreshDesignerFrame(FRContext.getCurrentEnv()); } }, new PluginFilter() { - + @Override public boolean accept(PluginContext context) { - + return context.contain(PluginModule.ExtraDesign); } }); refreshNorthEastPane(northEastPane, ad); - return northEastPane; - } - + return northEastPane; + } + private void refreshNorthEastPane(JPanel northEastPane, ToolBarMenuDock ad) { - + northEastPane.removeAll(); TitlePlaceProcessor processor = ExtraDesignClassManager.getInstance().getSingle(TitlePlaceProcessor.MARK_STRING); if (processor == null) { processor = new DefaultTitlePlace(); } processor.hold(northEastPane, LogMessageBar.getInstance(), ad.createBBSLoginPane()); - if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isEnabled()) { - northEastPane.add(ad.createAlphafinePane(), BorderLayout.CENTER); - } + if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isEnabled()) { + northEastPane.add(ad.createAlphaFinePane(), BorderLayout.CENTER); + } } - - public DesignerFrame(ToolBarMenuDock ad) { - - setName(DESIGNER_FRAME_NAME); - this.ad = ad; - this.initTitleIcon(); - this.setTitle();// james:因为有默认的了 - // set this to context. - DesignerContext.setDesignerFrame(this); - - // the content pane - basePane.setLayout(new BorderLayout()); - toolbarPane = new JPanel() { - public Dimension getPreferredSize() { - Dimension dim = super.getPreferredSize(); - // dim.height = TOOLBAR_HEIGHT; - return dim; - } - }; - toolbarPane.setLayout(FRGUIPaneFactory.createBorderLayout()); - JPanel eastPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - eastPane.add(ad.createLargeToolbar(), BorderLayout.WEST); - eastCenterPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - eastCenterPane.add(combineUp = combineUpTooBar(null), BorderLayout.NORTH); - JPanel panel = FRGUIPaneFactory.createBorderLayout_S_Pane(); - panel.add(newWorkBookPane =ad.getNewTemplatePane(), BorderLayout.WEST); - panel.add(MutilTempalteTabPane.getInstance(), BorderLayout.CENTER); - eastCenterPane.add(panel, BorderLayout.CENTER); - - eastPane.add(eastCenterPane, BorderLayout.CENTER); - toolbarPane.add(eastPane, BorderLayout.NORTH); - toolbarPane.add(new UIMenuHighLight(), BorderLayout.SOUTH); - - JPanel centerPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - centerPane.add(centerTemplateCardPane = new DesktopCardPane(), BorderLayout.CENTER); - centerPane.add(toolbarPane, BorderLayout.NORTH); - - - basePane.add(centerPane, BorderLayout.CENTER); - laoyoutWestPane(); -// JPanel eastRegionPane = new JPanel(new BorderLayout()); -// eastRegionPane.add(EastRegionContainerPane.getInstance(), BorderLayout.CENTER); -// eastRegionPane.add(JSliderPane.getInstance(), BorderLayout.SOUTH); -// basePane.add(eastRegionPane, BorderLayout.EAST); - basePane.add(EastRegionContainerPane.getInstance(), BorderLayout.EAST); - basePane.setBounds(0, 0, contentWidth, contentHeight); - - // 数值越小。越在底层 - layeredPane.add(basePane); - // 调整Window大小 - modWindowBounds(); - - - - // p:检查所有按钮的可见性和是否可以编辑性. - checkToolbarMenuEnable(); - - // window close listener. - this.addWindowListeners(getFrameListeners()); - - this.addComponentListener(new ComponentAdapter() { - public void componentResized(ComponentEvent e) { - reCalculateFrameSize(); - if (BaseUtils.isAuthorityEditing()) { - doResize(); - } - } - }); - this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); - this.setVisible(false); - this.setExtendedState(JFrame.MAXIMIZED_BOTH); - this.setDropTarget(new DropTarget(this, DnDConstants.ACTION_MOVE, new FileDropTargetListener(), true)); - closeMode = UIConstants.CLOSE_OF_AUTHORITY; - initMenuPane(); - } - - public void initTitleIcon() { - try { - @SuppressWarnings("unchecked") - List image = ICODecoder.read(DesignerFrame.class - .getResourceAsStream("/com/fr/base/images/oem/logo.ico")); - this.setIconImages(image); - } catch (IOException e) { - FRContext.getLogger().error(e.getMessage(), e); - this.setIconImage(BaseUtils.readImage("/com/fr/base/images/oem/logo.png")); - } - } - - private void addWindowListeners(ArrayList listeners){ - for(WindowListener listener : listeners){ - this.addWindowListener(listener); - } - } - - protected ArrayList getFrameListeners(){ - ArrayList arrayList = new ArrayList(); - arrayList.add(windowAdapter); - return arrayList; - } - - - protected void laoyoutWestPane(){ - basePane.add(WestRegionContainerPane.getInstance(), BorderLayout.WEST); - } - - // 调整windows大小 - private void reCalculateFrameSize() { - contentHeight = layeredPane.getHeight(); - contentWidth = layeredPane.getWidth(); - layeredPane.remove(basePane); - basePane.setBounds(0, 0, contentWidth, contentHeight); - layeredPane.add(basePane); - layeredPane.repaint(); - } - - /** - * 更新 - */ - public void populateAuthorityArea() { - int centerWidth = contentWidth - WestRegionContainerPane.getInstance().getContainerWidth() - - EastRegionContainerPane.getInstance().getContainerWidth(); - // 上面的虚线 - upDottedLine = new DottedLine(UIScrollBar.HORIZONTAL, centerWidth); - upDottedLine.setBounds(WestRegionContainerPane.getInstance().getContainerWidth(), MENU_HEIGHT - 1, centerWidth, - 3); - - // 下面的虚线 - downDottedLine = new DottedLine(UIScrollBar.HORIZONTAL, centerWidth); - downDottedLine.setBounds(WestRegionContainerPane.getInstance().getContainerWidth(), contentHeight - 3, - centerWidth, 3); - - // 左边的虚线 - leftDottedLine = new DottedLine(UIScrollBar.VERTICAL, contentHeight - MENU_HEIGHT); - leftDottedLine.setBounds(WestRegionContainerPane.getInstance().getContainerWidth(), MENU_HEIGHT, 3, - contentHeight - MENU_HEIGHT); - - rightDottedLine = new DottedLine(UIScrollBar.VERTICAL, contentHeight - MENU_HEIGHT); - rightDottedLine.setBounds(contentWidth - EastRegionContainerPane.getInstance().getContainerWidth() - 3, - MENU_HEIGHT, 3, contentHeight - MENU_HEIGHT); - - } - - private void addDottedLine() { - layeredPane.add(upDottedLine, SECOND_LAYER); - layeredPane.add(downDottedLine, SECOND_LAYER); - layeredPane.add(leftDottedLine, SECOND_LAYER); - layeredPane.add(rightDottedLine, SECOND_LAYER); - layeredPane.add(closeButton, TOP_LAYER); - } - - private void removeDottedLine() { - layeredPane.remove(upDottedLine); - layeredPane.remove(downDottedLine); - layeredPane.remove(leftDottedLine); - layeredPane.remove(rightDottedLine); - layeredPane.remove(closeButton); - } - - public JLayeredPane getContentFrame() { - return layeredPane; - } - - /** - * 刷新 - */ - public void refreshDottedLine() { - if (BaseUtils.isAuthorityEditing()) { - populateAuthorityArea(); - populateCloseButton(); - addDottedLine(); - } else { - removeDottedLine(); - } - layeredPane.repaint(); - } - - /** - * 刷新DottedLine - */ - public void doResize() { - removeDottedLine(); - populateAuthorityArea(); - populateCloseButton(); - addDottedLine(); - } - - private MouseListener closeMouseListener = new MouseAdapter() { - public void mousePressed(MouseEvent e) { - closeMode = UIConstants.CLOSE_PRESS_AUTHORITY; - closeButton.setBackground(UIConstants.NORMAL_BACKGROUND); - closeButton.repaint(); - } - - public void mouseExited(MouseEvent e) { - closeMode = UIConstants.CLOSE_OF_AUTHORITY; - closeButton.setBackground(UIConstants.NORMAL_BACKGROUND); - closeButton.repaint(); - } - - public void mouseMoved(MouseEvent e) { - closeMode = UIConstants.CLOSE_OVER_AUTHORITY; - closeButton.setBackground(UIConstants.NORMAL_BACKGROUND); - closeButton.repaint(); - } - - public void mouseReleased(MouseEvent e) { - if (BaseUtils.isAuthorityEditing()) { - BaseUtils.setAuthorityEditing(false); - WestRegionContainerPane.getInstance().replaceDownPane( - TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter())); - HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().refreshEastPropertiesPane(); - DesignerContext.getDesignerFrame().resetToolkitByPlus( - HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getToolBarMenuDockPlus()); - needToAddAuhtorityPaint(); - refreshDottedLine(); - fireAuthorityStateToNomal(); - } - } - - public void mouseEntered(MouseEvent e) { - closeMode = UIConstants.CLOSE_OVER_AUTHORITY; - closeButton.setBackground(UIConstants.NORMAL_BACKGROUND); - closeButton.repaint(); - } - }; - - /** - * 刷新CloseButton - */ - public void populateCloseButton() { - - closeButton.addMouseListener(closeMouseListener); - closeButton.setBackground(UIConstants.NORMAL_BACKGROUND); - closeButton.setBorder(null); - int x = contentWidth - EastRegionContainerPane.getInstance().getContainerWidth() - closeMode.getIconWidth() / 2; - int y = MENU_HEIGHT - closeMode.getIconHeight() / 2; - closeButton.setBounds(x, y, UIConstants.CLOSE_AUTHORITY_HEIGHT_AND_WIDTH, - UIConstants.CLOSE_AUTHORITY_HEIGHT_AND_WIDTH); - } - - /** - * 退出权限编辑时,将所有的做过权限编辑的状态,作为一个状态赋给报、报表主体 - */ - private void fireAuthorityStateToNomal() { - java.util.List> opendedTemplate = HistoryTemplateListPane.getInstance().getHistoryList(); - for (int i = 0; i < opendedTemplate.size(); i++) { - // 如果在权限编辑时做过操作,则将做过的操作作为一个整体状态赋给正在报表 - if (opendedTemplate.get(i).isDoSomethingInAuthority()) { - opendedTemplate.get(i).fireAuthorityStateToNomal(); - } - } - } - - public void setCloseMode(Icon closeMode) { - this.closeMode = closeMode; - } - - private UIToolbar combineUpTooBar(JComponent[] toolbar4Form) { - combineUp = new UIToolbar(FlowLayout.LEFT); - combineUp.setBorder(new MatteBorder(new Insets(0, LEFT_ALIGN_GAP, 1, 0), UIConstants.LINE_COLOR)); - combineUp.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 2)); - UIButton[] fixButtons = ad.createUp(); - for (int i = 0; i < fixButtons.length; i++) { - combineUp.add(fixButtons[i]); - } - if (!BaseUtils.isAuthorityEditing()) { - combineUp.addSeparator(new Dimension(2, 16)); - if (toolbar4Form != null) { - for (int i = 0; i < toolbar4Form.length; i++) { - combineUp.add(toolbar4Form[i]); - } - } - } - - //添加分享按钮 - addShareButton(); - - //添加插件中的按钮 - addExtraButtons(); - - return combineUp; - } - - private void addExtraButtons(){ - JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - if(jt == null){ - return; - } - - - UIButton[] extraButtons = jt.createExtraButtons(); - for (int i = 0; i < extraButtons.length; i++) { - combineUp.add(extraButtons[i]); - } - if (extraButtons.length > 0) { - combineUp.addSeparator(new Dimension(2, 16)); - } - } - - private void addShareButton(){ - JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - if(jt == null){ - return; - } - - combineUp.addSeparator(new Dimension(2, 16)); - UIButton[] shareButtons = jt.createShareButton(); - for (int i = 0; i < shareButtons.length; i++) { - combineUp.add(shareButtons[i]); - } - } - - /** - * 检查 - * - * @param flag - * 组件是否可见 - * @param al - * 组件名称 - */ - public void checkCombineUp(boolean flag, ArrayList al) { - combineUp.checkComponentsByNames(flag, al); - - } - - /** - * 刷新工具条. - */ - public void refreshToolbar() { - this.ad.updateToolBarDef(); - } - - /** - * 重置相关的工具条. - * - * @param plus - * 工具条中相关信息 - */ - public void resetToolkitByPlus(ToolBarMenuDockPlus plus) { - if (plus == null) { - plus = ToolBarMenuDock.NULLAVOID; - } - - DesignState designState = new DesignState(plus); - MenuManager.getInstance().setMenus4Designer(designState); - if (menuBar != null) { - menuPane.remove(menuBar); - } - menuPane.add(menuBar = ad.createJMenuBar(plus), BorderLayout.CENTER); - - if (combineUp != null) { - eastCenterPane.remove(combineUp); - combineUp = null; - } - - // 保存撤销那些按钮的面板 - eastCenterPane.add(combineUp = combineUpTooBar(ad.resetUpToolBar(plus)), BorderLayout.NORTH); - - if (toolbarComponent != null) { - toolbarPane.remove(toolbarComponent); - } - - // 颜色,字体那些按钮的工具栏 - toolbarPane.add(toolbarComponent = ad.resetToolBar(toolbarComponent, plus), BorderLayout.CENTER); - - this.checkToolbarMenuEnable(); - this.validate(); - layeredPane.repaint(); - } - - public JComponent getToolbarComponent() { - return this.toolbarComponent; - } - - /** - * 判断是否在权限编辑状态,若是在权限编辑状态,则需要有虚线框和关闭突变 - */ - public void needToAddAuhtorityPaint() { - - newWorkBookPane.setButtonGray(BaseUtils.isAuthorityEditing()); - } - - /** - * 检查工具条. - */ - private void checkToolbarMenuEnable() { - if (this.ad != null) { - this.ad.updateMenuDef(); - this.ad.updateToolBarDef(); - } - } - - /** - * 设置标题 - */ - public void setTitle() { + + public void initTitleIcon() { + try { + @SuppressWarnings("unchecked") + List image = ICODecoder.read(DesignerFrame.class + .getResourceAsStream("/com/fr/base/images/oem/logo.ico")); + this.setIconImages(image); + } catch (IOException e) { + FRContext.getLogger().error(e.getMessage(), e); + this.setIconImage(BaseUtils.readImage("/com/fr/base/images/oem/logo.png")); + } + } + + private void addWindowListeners(ArrayList listeners) { + for (WindowListener listener : listeners) { + this.addWindowListener(listener); + } + } + + protected ArrayList getFrameListeners() { + ArrayList arrayList = new ArrayList(); + arrayList.add(windowAdapter); + return arrayList; + } + + protected void laoyoutWestPane() { + basePane.add(WestRegionContainerPane.getInstance(), BorderLayout.WEST); + } + + // 调整windows大小 + private void reCalculateFrameSize() { + contentHeight = layeredPane.getHeight(); + contentWidth = layeredPane.getWidth(); + layeredPane.remove(basePane); + basePane.setBounds(0, 0, contentWidth, contentHeight); + layeredPane.add(basePane); + layeredPane.repaint(); + } + + /** + * 更新 + */ + public void populateAuthorityArea() { + int centerWidth = contentWidth - WestRegionContainerPane.getInstance().getContainerWidth() + - EastRegionContainerPane.getInstance().getContainerWidth(); + // 上面的虚线 + upDottedLine = new DottedLine(UIScrollBar.HORIZONTAL, centerWidth); + upDottedLine.setBounds(WestRegionContainerPane.getInstance().getContainerWidth(), MENU_HEIGHT - 1, centerWidth, + 3); + + // 下面的虚线 + downDottedLine = new DottedLine(UIScrollBar.HORIZONTAL, centerWidth); + downDottedLine.setBounds(WestRegionContainerPane.getInstance().getContainerWidth(), contentHeight - 3, + centerWidth, 3); + + // 左边的虚线 + leftDottedLine = new DottedLine(UIScrollBar.VERTICAL, contentHeight - MENU_HEIGHT); + leftDottedLine.setBounds(WestRegionContainerPane.getInstance().getContainerWidth(), MENU_HEIGHT, 3, + contentHeight - MENU_HEIGHT); + + rightDottedLine = new DottedLine(UIScrollBar.VERTICAL, contentHeight - MENU_HEIGHT); + rightDottedLine.setBounds(contentWidth - EastRegionContainerPane.getInstance().getContainerWidth() - 3, + MENU_HEIGHT, 3, contentHeight - MENU_HEIGHT); + + } + + private void addDottedLine() { + layeredPane.add(upDottedLine, SECOND_LAYER); + layeredPane.add(downDottedLine, SECOND_LAYER); + layeredPane.add(leftDottedLine, SECOND_LAYER); + layeredPane.add(rightDottedLine, SECOND_LAYER); + layeredPane.add(closeButton, TOP_LAYER); + } + + private void removeDottedLine() { + layeredPane.remove(upDottedLine); + layeredPane.remove(downDottedLine); + layeredPane.remove(leftDottedLine); + layeredPane.remove(rightDottedLine); + layeredPane.remove(closeButton); + } + + public JLayeredPane getContentFrame() { + return layeredPane; + } + + /** + * 刷新 + */ + public void refreshDottedLine() { + if (BaseUtils.isAuthorityEditing()) { + populateAuthorityArea(); + populateCloseButton(); + addDottedLine(); + } else { + removeDottedLine(); + } + layeredPane.repaint(); + } + + /** + * 刷新DottedLine + */ + public void doResize() { + removeDottedLine(); + populateAuthorityArea(); + populateCloseButton(); + addDottedLine(); + } + + /** + * 刷新CloseButton + */ + public void populateCloseButton() { + + closeButton.addMouseListener(closeMouseListener); + closeButton.setBackground(UIConstants.NORMAL_BACKGROUND); + closeButton.setBorder(null); + int x = contentWidth - EastRegionContainerPane.getInstance().getContainerWidth() - closeMode.getIconWidth() / 2; + int y = MENU_HEIGHT - closeMode.getIconHeight() / 2; + closeButton.setBounds(x, y, UIConstants.CLOSE_AUTHORITY_HEIGHT_AND_WIDTH, + UIConstants.CLOSE_AUTHORITY_HEIGHT_AND_WIDTH); + } + + /** + * 退出权限编辑时,将所有的做过权限编辑的状态,作为一个状态赋给报、报表主体 + */ + private void fireAuthorityStateToNomal() { + java.util.List> opendedTemplate = HistoryTemplateListPane.getInstance().getHistoryList(); + for (int i = 0; i < opendedTemplate.size(); i++) { + // 如果在权限编辑时做过操作,则将做过的操作作为一个整体状态赋给正在报表 + if (opendedTemplate.get(i).isDoSomethingInAuthority()) { + opendedTemplate.get(i).fireAuthorityStateToNomal(); + } + } + } + + public void setCloseMode(Icon closeMode) { + this.closeMode = closeMode; + } + + private UIToolbar combineUpTooBar(JComponent[] toolbar4Form) { + combineUp = new UIToolbar(FlowLayout.LEFT); + combineUp.setBorder(new MatteBorder(new Insets(0, LEFT_ALIGN_GAP, 1, 0), UIConstants.LINE_COLOR)); + combineUp.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 2)); + UIButton[] fixButtons = ad.createUp(); + for (int i = 0; i < fixButtons.length; i++) { + combineUp.add(fixButtons[i]); + } + if (!BaseUtils.isAuthorityEditing()) { + combineUp.addSeparator(new Dimension(2, 16)); + if (toolbar4Form != null) { + for (int i = 0; i < toolbar4Form.length; i++) { + combineUp.add(toolbar4Form[i]); + } + } + } + + //添加分享按钮 + addShareButton(); + + //添加插件中的按钮 + addExtraButtons(); + + return combineUp; + } + + private void addExtraButtons() { + JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); + if (jt == null) { + return; + } + + + UIButton[] extraButtons = jt.createExtraButtons(); + for (int i = 0; i < extraButtons.length; i++) { + combineUp.add(extraButtons[i]); + } + if (extraButtons.length > 0) { + combineUp.addSeparator(new Dimension(2, 16)); + } + } + + private void addShareButton() { + JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); + if (jt == null) { + return; + } + + combineUp.addSeparator(new Dimension(2, 16)); + UIButton[] shareButtons = jt.createShareButton(); + for (int i = 0; i < shareButtons.length; i++) { + combineUp.add(shareButtons[i]); + } + } + + /** + * 检查 + * + * @param flag 组件是否可见 + * @param al 组件名称 + */ + public void checkCombineUp(boolean flag, ArrayList al) { + combineUp.checkComponentsByNames(flag, al); + + } + + /** + * 刷新工具条. + */ + public void refreshToolbar() { + this.ad.updateToolBarDef(); + } + + /** + * 重置相关的工具条. + * + * @param plus 工具条中相关信息 + */ + public void resetToolkitByPlus(ToolBarMenuDockPlus plus) { + if (plus == null) { + plus = ToolBarMenuDock.NULLAVOID; + } + + DesignState designState = new DesignState(plus); + MenuManager.getInstance().setMenus4Designer(designState); + if (menuBar != null) { + menuPane.remove(menuBar); + } + menuPane.add(menuBar = ad.createJMenuBar(plus), BorderLayout.CENTER); + + if (combineUp != null) { + eastCenterPane.remove(combineUp); + combineUp = null; + } + + // 保存撤销那些按钮的面板 + eastCenterPane.add(combineUp = combineUpTooBar(ad.resetUpToolBar(plus)), BorderLayout.NORTH); + + if (toolbarComponent != null) { + toolbarPane.remove(toolbarComponent); + } + + // 颜色,字体那些按钮的工具栏 + toolbarPane.add(toolbarComponent = ad.resetToolBar(toolbarComponent, plus), BorderLayout.CENTER); + + this.checkToolbarMenuEnable(); + this.validate(); + layeredPane.repaint(); + } + + public JComponent getToolbarComponent() { + return this.toolbarComponent; + } + + /** + * 判断是否在权限编辑状态,若是在权限编辑状态,则需要有虚线框和关闭突变 + */ + public void needToAddAuhtorityPaint() { + + newWorkBookPane.setButtonGray(BaseUtils.isAuthorityEditing()); + } + + /** + * 检查工具条. + */ + private void checkToolbarMenuEnable() { + if (this.ad != null) { + this.ad.updateMenuDef(); + this.ad.updateToolBarDef(); + } + } + + /** + * 设置标题 + */ + public void setTitle() { JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); StringBuilder defaultTitleSB = new StringBuilder(); defaultTitleSB.append(ProductConstants.PRODUCT_NAME); - defaultTitleSB.append(" "); - defaultTitleSB.append(ProductConstants.BRANCH); - // james:标识登录的用户和登录的ENV - String envName = DesignerEnvManager.getEnvManager().getCurEnvName(); - Env env = DesignerEnvManager.getEnvManager().getEnv(envName); - if (env != null) { - defaultTitleSB.append(env.getUser()).append('@').append(envName).append('['); - defaultTitleSB.append(env.getEnvDescription()); - defaultTitleSB.append(']'); - if (editingTemplate != null) { - String path = editingTemplate.getEditingFILE().getPath(); - if (!editingTemplate.getEditingFILE().exists()) { - path = FILEFactory.MEM_PREFIX + path; - } else if (path.startsWith(ProjectConstants.REPORTLETS_NAME)) { - path = env.getPath() + File.separator + path; - } - defaultTitleSB.append(" " + path); - } - - } - setTitle(defaultTitleSB.toString()); - } - - /** - * modify window bounds. - */ - private void modWindowBounds() { - // set the window bounds to the same as last closed - DesignerEnvManager designerEnvManager = DesignerEnvManager.getEnvManager(); - Rectangle windowBounds = designerEnvManager.getWindowBounds(); - if (windowBounds != null) { - int locX = windowBounds.x; - int locY = windowBounds.y; - - if (!OperatingSystem.isWindows()) { - locX = Math.max(1, locX); - locY = Math.max(1, locY); - } - - this.setLocation(new Point(locX, locY)); - - int width = windowBounds.width; - int height = windowBounds.height; - if (width > MIN_SIZE.width && height > MIN_SIZE.height) { - this.setSize(width, height); - } else { - GUICoreUtils.setWindowFullScreen(this); - } - } else { - GUICoreUtils.setWindowFullScreen(this); - } - } - - + defaultTitleSB.append(" "); + defaultTitleSB.append(ProductConstants.BRANCH); + // james:标识登录的用户和登录的ENV + String envName = DesignerEnvManager.getEnvManager().getCurEnvName(); + Env env = DesignerEnvManager.getEnvManager().getEnv(envName); + if (env != null) { + defaultTitleSB.append(env.getUser()).append('@').append(envName).append('['); + defaultTitleSB.append(env.getEnvDescription()); + defaultTitleSB.append(']'); + if (editingTemplate != null) { + String path = editingTemplate.getEditingFILE().getPath(); + if (!editingTemplate.getEditingFILE().exists()) { + path = FILEFactory.MEM_PREFIX + path; + } else if (path.startsWith(ProjectConstants.REPORTLETS_NAME)) { + path = env.getPath() + File.separator + path; + } + defaultTitleSB.append(" " + path); + } + + } + setTitle(defaultTitleSB.toString()); + } + + /** + * modify window bounds. + */ + private void modWindowBounds() { + // set the window bounds to the same as last closed + DesignerEnvManager designerEnvManager = DesignerEnvManager.getEnvManager(); + Rectangle windowBounds = designerEnvManager.getWindowBounds(); + if (windowBounds != null) { + int locX = windowBounds.x; + int locY = windowBounds.y; + + if (!OperatingSystem.isWindows()) { + locX = Math.max(1, locX); + locY = Math.max(1, locY); + } + + this.setLocation(new Point(locX, locY)); + + int width = windowBounds.width; + int height = windowBounds.height; + if (width > MIN_SIZE.width && height > MIN_SIZE.height) { + this.setSize(width, height); + } else { + GUICoreUtils.setWindowFullScreen(this); + } + } else { + GUICoreUtils.setWindowFullScreen(this); + } + } + + /** * 报表运行环境改变时,需要刷新某些面板 * * @param env 环境 */ public void refreshEnv(Env env) { - + this.setTitle(); DesignerFrameFileDealerPane.getInstance().refreshDockingView(); TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()); TemplateTreePane.getInstance().refreshDockingView(); DesignTableDataManager.clearGlobalDs(); - EastRegionContainerPane.getInstance().refreshDownPane(); - } - - /** - * 返回选中的模板. - */ - public JTemplate getSelectedJTemplate() { - return this.centerTemplateCardPane.getSelectedJTemplate(); - } - - /** - * 保存当前编辑的模板 - */ - - public void saveCurrentEditingTemplate() { - JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - if (editingTemplate == null) { - return; - } - if (editingTemplate.isSaved()) {// isSaved == true表示已经保存过,或者新建的一张模板 - if (editingTemplate.getEditingFILE().exists()) {// 表示磁盘上的某一张已经保存过的模板,要添加到历史中 - // HistoryTemplateListPane.getInstance().addHistory(); - } - } else { - editingTemplate.stopEditing(); - if (!editingTemplate.getEditingFILE().exists()) { - int returnVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), - Inter.getLocText("Utils-Would_you_like_to_save") + " \"" + editingTemplate.getEditingFILE() - + "\" ?", ProductConstants.PRODUCT_NAME, JOptionPane.YES_NO_OPTION, - JOptionPane.QUESTION_MESSAGE); - if (returnVal == JOptionPane.YES_OPTION && editingTemplate.saveTemplate()) { - editingTemplate.saveTemplate(); - FRLogger.getLogger().log( - Level.INFO, - Inter.getLocText(new String[] { "Template", "already-saved" }, new String[] { - editingTemplate.getEditingFILE().getName(), "." })); - } - } else { - if (editingTemplate.saveTemplate()) { - editingTemplate.saveTemplate(); - FRLogger.getLogger().log( - Level.INFO, - Inter.getLocText(new String[] { "Template", "already-saved" }, new String[] { - editingTemplate.getEditingFILE().getName(), "." })); - } - } - } - } - - /** - * 添加新建模板, 并激活. - */ - public void addAndActivateJTemplate() { - addAndActivateJTemplate(ad.createNewTemplate()); - layeredPane.repaint(); - } - - /** - * 添加 模板, 并激活. - * - * @param jt - * 添加的模板. - */ - public void addAndActivateJTemplate(JTemplate jt) { - if (jt == null || jt.getEditingFILE() == null) { - return; - } - jt.addJTemplateActionListener(this); - jt.addTargetModifiedListener(this); - centerTemplateCardPane.showJTemplate(jt); - setTitle(); - layeredPane.repaint(); - } - - /** - * 激活已经存在的模板 - * - * @param jt - * 模板 - */ - public void activateJTemplate(JTemplate jt) { - if (jt == null || jt.getEditingFILE() == null) { - return; - } - centerTemplateCardPane.showJTemplate(jt); - setTitle(); - layeredPane.repaint(); - } - - /** - * 对象侦听 - * - * @param e - * 事件 - */ - public void targetModified(TargetModifiedEvent e) { - this.checkToolbarMenuEnable(); - } - - /** - * 模板关闭时 处理. - * - * @param jt - * 模板 - */ - public void templateClosed(JTemplate jt) { - } - - /** - * 模板打开时 处理. - * - * @param jt - * 模板 - */ - public void templateOpened(JTemplate jt) { - } - - /** - * 模板保存时 处理. - * - * @param jt - * 模板 - */ - public void templateSaved(JTemplate jt) { - this.checkToolbarMenuEnable(); - } - - /** - * 打开模板文件,如果是已经打开的就激活此模板所对应的JInternalFrame - * - * @param tplFile - * 文件 - */ - public void openTemplate(FILE tplFile) { - // 测试连接,如果连接失败,则提示 - try { - if (FRContext.getCurrentEnv() != null - && !FRContext.getCurrentEnv().testServerConnectionWithOutShowMessagePane()) { - JOptionPane.showMessageDialog( - DesignerContext.getDesignerFrame(), - Inter.getLocText(new String[] { "FR-Chart-Server_disconnected", "FR-Server-Design_template_unopened" }, new String[] { - ",", "!" }), Inter.getLocText("FR-Server-All_Error"), JOptionPane.ERROR_MESSAGE); - return; - } - } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); - } - - // p:判断一下,如何文件为空或者文件不存在,直接返回. - if (tplFile == null || !tplFile.exists()) { - JOptionPane.showMessageDialog(this, Inter.getLocText("Warning-Template_Do_Not_Exsit"), - ProductConstants.PRODUCT_NAME, JOptionPane.INFORMATION_MESSAGE); - DesignerFrameFileDealerPane.getInstance().refresh(); - return; - } + EastRegionContainerPane.getInstance().refreshDownPane(); + } + + /** + * 返回选中的模板. + */ + public JTemplate getSelectedJTemplate() { + return this.centerTemplateCardPane.getSelectedJTemplate(); + } + + /** + * 保存当前编辑的模板 + */ + + public void saveCurrentEditingTemplate() { + JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); + if (editingTemplate == null) { + return; + } + if (editingTemplate.isSaved()) {// isSaved == true表示已经保存过,或者新建的一张模板 + if (editingTemplate.getEditingFILE().exists()) {// 表示磁盘上的某一张已经保存过的模板,要添加到历史中 + // HistoryTemplateListPane.getInstance().addHistory(); + } + } else { + editingTemplate.stopEditing(); + if (!editingTemplate.getEditingFILE().exists()) { + int returnVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), + Inter.getLocText("Utils-Would_you_like_to_save") + " \"" + editingTemplate.getEditingFILE() + + "\" ?", ProductConstants.PRODUCT_NAME, JOptionPane.YES_NO_OPTION, + JOptionPane.QUESTION_MESSAGE); + if (returnVal == JOptionPane.YES_OPTION && editingTemplate.saveTemplate()) { + editingTemplate.saveTemplate(); + FRLogger.getLogger().log( + Level.INFO, + Inter.getLocText(new String[]{"Template", "already-saved"}, new String[]{ + editingTemplate.getEditingFILE().getName(), "."})); + } + } else { + if (editingTemplate.saveTemplate()) { + editingTemplate.saveTemplate(); + FRLogger.getLogger().log( + Level.INFO, + Inter.getLocText(new String[]{"Template", "already-saved"}, new String[]{ + editingTemplate.getEditingFILE().getName(), "."})); + } + } + } + } + + /** + * 添加新建模板, 并激活. + */ + public void addAndActivateJTemplate() { + addAndActivateJTemplate(ad.createNewTemplate()); + layeredPane.repaint(); + } + + /** + * 添加 模板, 并激活. + * + * @param jt 添加的模板. + */ + public void addAndActivateJTemplate(JTemplate jt) { + if (jt == null || jt.getEditingFILE() == null) { + return; + } + jt.addJTemplateActionListener(this); + jt.addTargetModifiedListener(this); + centerTemplateCardPane.showJTemplate(jt); + setTitle(); + layeredPane.repaint(); + } + + /** + * 激活已经存在的模板 + * + * @param jt 模板 + */ + public void activateJTemplate(JTemplate jt) { + if (jt == null || jt.getEditingFILE() == null) { + return; + } + centerTemplateCardPane.showJTemplate(jt); + setTitle(); + layeredPane.repaint(); + } + + /** + * 对象侦听 + * + * @param e 事件 + */ + public void targetModified(TargetModifiedEvent e) { + this.checkToolbarMenuEnable(); + } + + /** + * 模板关闭时 处理. + * + * @param jt 模板 + */ + public void templateClosed(JTemplate jt) { + } + + /** + * 模板打开时 处理. + * + * @param jt 模板 + */ + public void templateOpened(JTemplate jt) { + } + + /** + * 模板保存时 处理. + * + * @param jt 模板 + */ + public void templateSaved(JTemplate jt) { + this.checkToolbarMenuEnable(); + } + + /** + * 打开模板文件,如果是已经打开的就激活此模板所对应的JInternalFrame + * + * @param tplFile 文件 + */ + public void openTemplate(FILE tplFile) { + // 测试连接,如果连接失败,则提示 + try { + if (FRContext.getCurrentEnv() != null + && !FRContext.getCurrentEnv().testServerConnectionWithOutShowMessagePane()) { + JOptionPane.showMessageDialog( + DesignerContext.getDesignerFrame(), + Inter.getLocText(new String[]{"FR-Chart-Server_disconnected", "FR-Server-Design_template_unopened"}, new String[]{ + ",", "!"}), Inter.getLocText("FR-Server-All_Error"), JOptionPane.ERROR_MESSAGE); + return; + } + } catch (Exception e) { + FRLogger.getLogger().error(e.getMessage()); + } + + // p:判断一下,如何文件为空或者文件不存在,直接返回. + if (tplFile == null || !tplFile.exists()) { + JOptionPane.showMessageDialog(this, Inter.getLocText("Warning-Template_Do_Not_Exsit"), + ProductConstants.PRODUCT_NAME, JOptionPane.INFORMATION_MESSAGE); + DesignerFrameFileDealerPane.getInstance().refresh(); + return; + } try { openFile(tplFile); @@ -844,209 +846,198 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta addAndActivateJTemplate(); } - } - - /** - * 是否不合版本的设计器 - * - * @param jt - * 当前模板 - * - * @return 是否不合版本 - * - * - * @date 2014-10-14-下午6:30:37 - */ - private boolean inValidDesigner(JTemplate jt) { - return jt.isOldDesigner() || (!jt.isJWorkBook() && jt.isNewDesigner()); - } - - /** - * 打开指定的文件 - * - * @param tplFile - * 指定的文件 - * - * - * @date 2014-10-14-下午6:31:05 - */ - private void openFile(FILE tplFile) { - String fileName = tplFile.getName(); - int indexOfLastDot = fileName.lastIndexOf(CoreConstants.DOT); - if (indexOfLastDot < 0) { - return; - } - String fileExtention = fileName.substring(indexOfLastDot + 1); - for (int i = 0, len = appList.size(); i < len; i++) { - App app = appList.get(i); - String[] defaultAppExtentions = app.defaultExtentions(); - boolean opened = false; - for (int j = 0; j < defaultAppExtentions.length; j++) { - if (defaultAppExtentions[j].equalsIgnoreCase(fileExtention)) { - JTemplate jt = null; - try { - jt = app.openTemplate(tplFile); - } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage(), e); - } - if (jt == null) { - return; - } - // 新的form不往前兼容 - if (inValidDesigner(jt)) { - this.addAndActivateJTemplate(); - MutilTempalteTabPane.getInstance().setTemTemplate( - HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); - } else { - activeTemplate(tplFile, jt); - } - opened = true; - break; - } - } - if (opened) { - break; - } - } - } - - /** - * 激活指定的模板 - * - * @param tplFile - * 模板文件 - * @param jt - * 当前报表 - * - * - * @date 2014-10-14-下午6:31:23 - */ - private void activeTemplate(FILE tplFile, JTemplate jt) { - // 如果该模板已经打开,则进行激活就可以了 - String fullName = StableUtils.pathJoin(new String[] { ProjectConstants.REPORTLETS_NAME, tplFile.getName() }); - if (tplFile instanceof FileNodeFILE) { - fullName = ((FileNodeFILE) tplFile).getEnvPath() + "/" + tplFile.getPath(); - } - // 如果是从文件夹打开的文件,不是从设计器文件树打开的文件,则直接取path就行 - if (tplFile instanceof FileFILE) { - fullName = tplFile.getPath(); - } - fullName = fullName.replaceAll("/", "\\\\"); - int index = HistoryTemplateListPane.getInstance().contains(fullName); - if (index != -1) { - this.activateJTemplate(HistoryTemplateListPane.getInstance().getHistoryList().get(index)); - } else { - this.addAndActivateJTemplate(jt); - } - - } - - /** - * Exit退出 - */ - public void exit() { - Thread thread = new Thread() { - @Override - public void run() { - DesignerEnvManager.doEndMapSaveWorkersIndesign(); - } - }; - thread.start(); - - try { - thread.join(); - } catch (InterruptedException e) { - FRLogger.getLogger().error("Map Thread Error"); - } - - DesignerEnvManager.getEnvManager().setLastOpenFile( - HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getEditingFILE().getPath()); - - DesignerEnvManager.getEnvManager().setLastWestRegionToolPaneY( - WestRegionContainerPane.getInstance().getToolPaneY()); - DesignerEnvManager.getEnvManager().setLastWestRegionContainerWidth( - WestRegionContainerPane.getInstance().getContainerWidth()); - DesignerEnvManager.getEnvManager().setLastEastRegionToolPaneY( - EastRegionContainerPane.getInstance().getToolPaneY()); - DesignerEnvManager.getEnvManager().setLastEastRegionContainerWidth( - EastRegionContainerPane.getInstance().getContainerWidth()); - - DesignerEnvManager.getEnvManager().saveXMLFile(); - - Env currentEnv = FRContext.getCurrentEnv(); - try { - currentEnv.signOut(); - GeneralContext.fireEnvSignOutListener(); - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage(), e); - } - this.setVisible(false); - this.dispose(); - - this.ad.shutDown(); - - System.exit(0); - } - - // harry:添加程序外拖拽文件进来打开的功能 - class FileDropTargetListener implements DropTargetListener { - - @Override - public void dragEnter(DropTargetDragEvent event) { - } - - @Override - public void dragExit(DropTargetEvent event) { - } - - @Override - public void dragOver(DropTargetDragEvent event) { - } - - @Override - public void dropActionChanged(DropTargetDragEvent event) { - if (!isDragAcceptable(event)) { - event.rejectDrag(); - return; - } - } - - @SuppressWarnings("unchecked") - @Override - public void drop(DropTargetDropEvent event) { - if (!isDropAcceptable(event)) { - event.rejectDrop(); - return; - } - - event.acceptDrop(DnDConstants.ACTION_MOVE); - Transferable transferable = event.getTransferable(); - DataFlavor[] flavors = transferable.getTransferDataFlavors(); - for (int i = 0; i < flavors.length; i++) { - DataFlavor d = flavors[i]; - try { - if (ComparatorUtils.equals(d, DataFlavor.javaFileListFlavor)) { - List fileList = (List) transferable.getTransferData(d); - Iterator iterator = fileList.iterator(); - while (iterator.hasNext()) { - File f = iterator.next(); - DesignerContext.getDesignerFrame().openTemplate(new FileFILE(f)); - } - } - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage(), e); - } - } - event.dropComplete(true); - } - - public boolean isDragAcceptable(DropTargetDragEvent event) { - return (event.getDropAction() & DnDConstants.ACTION_COPY_OR_MOVE) != 0; - } - - public boolean isDropAcceptable(DropTargetDropEvent event) { - return (event.getDropAction() & DnDConstants.ACTION_COPY_OR_MOVE) != 0; - } - } + } + + /** + * 是否不合版本的设计器 + * + * @param jt 当前模板 + * @return 是否不合版本 + * @date 2014-10-14-下午6:30:37 + */ + private boolean inValidDesigner(JTemplate jt) { + return jt.isOldDesigner() || (!jt.isJWorkBook() && jt.isNewDesigner()); + } + + /** + * 打开指定的文件 + * + * @param tplFile 指定的文件 + * @date 2014-10-14-下午6:31:05 + */ + private void openFile(FILE tplFile) { + String fileName = tplFile.getName(); + int indexOfLastDot = fileName.lastIndexOf(CoreConstants.DOT); + if (indexOfLastDot < 0) { + return; + } + String fileExtention = fileName.substring(indexOfLastDot + 1); + for (int i = 0, len = appList.size(); i < len; i++) { + App app = appList.get(i); + String[] defaultAppExtentions = app.defaultExtentions(); + boolean opened = false; + for (int j = 0; j < defaultAppExtentions.length; j++) { + if (defaultAppExtentions[j].equalsIgnoreCase(fileExtention)) { + JTemplate jt = null; + try { + jt = app.openTemplate(tplFile); + } catch (Exception e) { + FRLogger.getLogger().error(e.getMessage(), e); + } + if (jt == null) { + return; + } + // 新的form不往前兼容 + if (inValidDesigner(jt)) { + this.addAndActivateJTemplate(); + MutilTempalteTabPane.getInstance().setTemTemplate( + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()); + } else { + activeTemplate(tplFile, jt); + } + opened = true; + break; + } + } + if (opened) { + break; + } + } + } + + /** + * 激活指定的模板 + * + * @param tplFile 模板文件 + * @param jt 当前报表 + * @date 2014-10-14-下午6:31:23 + */ + private void activeTemplate(FILE tplFile, JTemplate jt) { + // 如果该模板已经打开,则进行激活就可以了 + String fullName = StableUtils.pathJoin(new String[]{ProjectConstants.REPORTLETS_NAME, tplFile.getName()}); + if (tplFile instanceof FileNodeFILE) { + fullName = ((FileNodeFILE) tplFile).getEnvPath() + "/" + tplFile.getPath(); + } + // 如果是从文件夹打开的文件,不是从设计器文件树打开的文件,则直接取path就行 + if (tplFile instanceof FileFILE) { + fullName = tplFile.getPath(); + } + fullName = fullName.replaceAll("/", "\\\\"); + int index = HistoryTemplateListPane.getInstance().contains(fullName); + if (index != -1) { + this.activateJTemplate(HistoryTemplateListPane.getInstance().getHistoryList().get(index)); + } else { + this.addAndActivateJTemplate(jt); + } + + } + + /** + * Exit退出 + */ + public void exit() { + Thread thread = new Thread() { + @Override + public void run() { + DesignerEnvManager.doEndMapSaveWorkersIndesign(); + } + }; + thread.start(); + + try { + thread.join(); + } catch (InterruptedException e) { + FRLogger.getLogger().error("Map Thread Error"); + } + + DesignerEnvManager.getEnvManager().setLastOpenFile( + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getEditingFILE().getPath()); + + DesignerEnvManager.getEnvManager().setLastWestRegionToolPaneY( + WestRegionContainerPane.getInstance().getToolPaneY()); + DesignerEnvManager.getEnvManager().setLastWestRegionContainerWidth( + WestRegionContainerPane.getInstance().getContainerWidth()); + DesignerEnvManager.getEnvManager().setLastEastRegionToolPaneY( + EastRegionContainerPane.getInstance().getToolPaneY()); + DesignerEnvManager.getEnvManager().setLastEastRegionContainerWidth( + EastRegionContainerPane.getInstance().getContainerWidth()); + + DesignerEnvManager.getEnvManager().saveXMLFile(); + + Env currentEnv = FRContext.getCurrentEnv(); + try { + currentEnv.signOut(); + GeneralContext.fireEnvSignOutListener(); + } catch (Exception e) { + FRContext.getLogger().error(e.getMessage(), e); + } + this.setVisible(false); + this.dispose(); + + this.ad.shutDown(); + + System.exit(0); + } + + // harry:添加程序外拖拽文件进来打开的功能 + class FileDropTargetListener implements DropTargetListener { + + @Override + public void dragEnter(DropTargetDragEvent event) { + } + + @Override + public void dragExit(DropTargetEvent event) { + } + + @Override + public void dragOver(DropTargetDragEvent event) { + } + + @Override + public void dropActionChanged(DropTargetDragEvent event) { + if (!isDragAcceptable(event)) { + event.rejectDrag(); + return; + } + } + + @SuppressWarnings("unchecked") + @Override + public void drop(DropTargetDropEvent event) { + if (!isDropAcceptable(event)) { + event.rejectDrop(); + return; + } + + event.acceptDrop(DnDConstants.ACTION_MOVE); + Transferable transferable = event.getTransferable(); + DataFlavor[] flavors = transferable.getTransferDataFlavors(); + for (int i = 0; i < flavors.length; i++) { + DataFlavor d = flavors[i]; + try { + if (ComparatorUtils.equals(d, DataFlavor.javaFileListFlavor)) { + List fileList = (List) transferable.getTransferData(d); + Iterator iterator = fileList.iterator(); + while (iterator.hasNext()) { + File f = iterator.next(); + DesignerContext.getDesignerFrame().openTemplate(new FileFILE(f)); + } + } + } catch (Exception e) { + FRContext.getLogger().error(e.getMessage(), e); + } + } + event.dropComplete(true); + } + + public boolean isDragAcceptable(DropTargetDragEvent event) { + return (event.getDropAction() & DnDConstants.ACTION_COPY_OR_MOVE) != 0; + } + + public boolean isDropAcceptable(DropTargetDropEvent event) { + return (event.getDropAction() & DnDConstants.ACTION_COPY_OR_MOVE) != 0; + } + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java b/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java index f89a0766f8..0c780fe941 100644 --- a/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java +++ b/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java @@ -79,10 +79,13 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt private DesignerFrameFileDealerPane() { setLayout(new BorderLayout()); toolBar = ToolBarDef.createJToolBar(); - toolBar.setBorder(BorderFactory.createEmptyBorder(3, 0, 4, 0)); + toolBar.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, UIConstants.TOOLBAR_BORDER_COLOR)); + toolBar.setBorderPainted(true); JPanel tooBarPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - - tooBarPane.add(toolBar, BorderLayout.CENTER); + JPanel parent = new JPanel(new BorderLayout()); + parent.add(toolBar, BorderLayout.CENTER); + parent.setBorder(BorderFactory.createEmptyBorder(3, 0, 4, 0)); + tooBarPane.add(parent, BorderLayout.CENTER); tooBarPane.add(new UIMenuHighLight(), BorderLayout.SOUTH); add(tooBarPane, BorderLayout.NORTH); diff --git a/designer_base/src/com/fr/design/mainframe/JSliderPane.java b/designer_base/src/com/fr/design/mainframe/JSliderPane.java index bccf3c8f86..d056551399 100644 --- a/designer_base/src/com/fr/design/mainframe/JSliderPane.java +++ b/designer_base/src/com/fr/design/mainframe/JSliderPane.java @@ -438,6 +438,7 @@ class JSliderPaneUI extends BasicSliderUI { private static final int FOUR = 4; private static final int FIVE = 5; private static final int SIX = 6; + private static final int MID_X_SHIFT = 2; // 中点标记的水平位置偏移 public JSliderPaneUI(UISlider b) { super(b); @@ -455,10 +456,7 @@ class JSliderPaneUI extends BasicSliderUI { Graphics2D g2d = (Graphics2D) g; g2d.translate(knobBounds.x, knobBounds.y); -// g2d.setColor(slider.getBackground()); -// g2d.fillRect(0, FOUR, FOUR, 9); g2d.setColor(new Color(51, 51, 52)); - g2d.drawRoundRect(0, SIX, FOUR, 9, 2, 2); g2d.fillRoundRect(0, SIX, FOUR, 9, 2, 2); } @@ -477,7 +475,7 @@ class JSliderPaneUI extends BasicSliderUI { g2.fillRect(0, -cy, cw + 10, cy * 4); g.setColor(new Color(216, 216, 216)); g.drawLine(0, cy, cw + 3, cy); - g.drawLine(FIVE + cw / 2, cy - FOUR, FIVE + cw / 2, cy + FOUR); + g.drawLine(MID_X_SHIFT + cw / 2, cy - FOUR, MID_X_SHIFT + cw / 2, cy + FOUR); } else { super.paintTrack(g); } diff --git a/designer_base/src/com/fr/design/mainframe/backgroundpane/BackgroundQuickPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/BackgroundQuickPane.java index 1b796c438b..850132d863 100644 --- a/designer_base/src/com/fr/design/mainframe/backgroundpane/BackgroundQuickPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/BackgroundQuickPane.java @@ -21,6 +21,8 @@ public abstract class BackgroundQuickPane extends BasicBeanPane impl @Override public abstract String title4PopupWindow(); + public abstract void reset(); + /** * 组件是否需要响应添加的观察者事件 * diff --git a/designer_base/src/com/fr/design/mainframe/backgroundpane/ColorBackgroundQuickPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/ColorBackgroundQuickPane.java index 7839d0cdb1..8d5af78d5c 100644 --- a/designer_base/src/com/fr/design/mainframe/backgroundpane/ColorBackgroundQuickPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/ColorBackgroundQuickPane.java @@ -29,8 +29,8 @@ public class ColorBackgroundQuickPane extends BackgroundQuickPane { public void populateBean(Background background) { ColorBackground colorBackgroud = (ColorBackground) background; - isBackGroundColor = false; this.detailColorSelectPane.setColor(colorBackgroud.getColor()); + isBackGroundColor = false; } public Background updateBean() { @@ -50,8 +50,9 @@ public class ColorBackgroundQuickPane extends BackgroundQuickPane { public void registerChangeListener(final UIObserverListener listener) { detailColorSelectPane.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { - listener.doChange(); isBackGroundColor = true; + listener.doChange(); + isBackGroundColor = false; } }); } @@ -76,4 +77,9 @@ public class ColorBackgroundQuickPane extends BackgroundQuickPane { public String title4PopupWindow() { return Inter.getLocText("Color"); } + + @Override + public void reset() { + this.detailColorSelectPane.setColor(null); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/mainframe/backgroundpane/GradientBackgroundQuickPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/GradientBackgroundQuickPane.java index 97ba9cbe7c..dc7fd94167 100644 --- a/designer_base/src/com/fr/design/mainframe/backgroundpane/GradientBackgroundQuickPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/GradientBackgroundQuickPane.java @@ -119,4 +119,19 @@ public class GradientBackgroundQuickPane extends BackgroundQuickPane { return Inter.getLocText("Gradient-Color"); } + @Override + public void reset() { + this.gradientBar.getSelectColorPointBtnP1().setColorInner(Color.WHITE); + this.gradientBar.getSelectColorPointBtnP2().setColorInner(Color.BLACK); + directionPane.setSelectedItem(0); + int startValue = 4; + int endValue = this.gradientBarWidth; + gradientBar.setStartValue(startValue); + gradientBar.setEndValue(endValue); + if(this.gradientBar.getSelectColorPointBtnP1() != null && this.gradientBar.getSelectColorPointBtnP2() != null){ + this.gradientBar.getSelectColorPointBtnP1().setX(startValue); + this.gradientBar.getSelectColorPointBtnP2().setX(endValue); + } + } + } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java index 4dafe476a4..22fa2c1e28 100644 --- a/designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java @@ -179,4 +179,10 @@ public class ImageBackgroundQuickPane extends BackgroundQuickPane { public String title4PopupWindow() { return Inter.getLocText("FR-Background_Image"); } + + @Override + public void reset() { + imageLayoutPane.setSelectedIndex(0); + previewPane.setImage(null); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/mainframe/backgroundpane/NullBackgroundQuickPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/NullBackgroundQuickPane.java index 60d39ed2d6..ff4b0b590f 100644 --- a/designer_base/src/com/fr/design/mainframe/backgroundpane/NullBackgroundQuickPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/NullBackgroundQuickPane.java @@ -51,4 +51,9 @@ public class NullBackgroundQuickPane extends BackgroundQuickPane { return Inter.getLocText("Background-Null"); } + @Override + public void reset() { + // do nothing + } + } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java index 86a96a2cbf..4b51108bde 100644 --- a/designer_base/src/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java @@ -215,4 +215,11 @@ public class PatternBackgroundQuickPane extends BackgroundQuickPane { public String title4PopupWindow() { return Inter.getLocText("FR-Designer_Background-Pattern"); } + + @Override + public void reset() { + patternButtonArray[0].setSelected(true); + foregroundColorPane.setSelectObject(null); + backgroundColorPane.setSelectObject(null); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/mainframe/backgroundpane/TextureBackgroundQuickPane.java b/designer_base/src/com/fr/design/mainframe/backgroundpane/TextureBackgroundQuickPane.java index 33e09057b6..fc0ae8f8a2 100644 --- a/designer_base/src/com/fr/design/mainframe/backgroundpane/TextureBackgroundQuickPane.java +++ b/designer_base/src/com/fr/design/mainframe/backgroundpane/TextureBackgroundQuickPane.java @@ -169,4 +169,10 @@ public class TextureBackgroundQuickPane extends BackgroundQuickPane { public String title4PopupWindow() { return Inter.getLocText("Background-Texture"); } + + @Override + public void reset() { + this.texturePaint = null; + textureButtonArray[0].setSelected(true); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index a8305a49ac..258a9e22bb 100644 --- a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -5,17 +5,33 @@ package com.fr.design.mainframe.toolbar; import com.fr.base.BaseUtils; import com.fr.base.FRContext; -import com.fr.base.FRCoreContext; import com.fr.design.DesignState; import com.fr.design.ExtraDesignClassManager; import com.fr.design.actions.UpdateAction; -import com.fr.design.actions.community.*; -import com.fr.design.actions.file.*; +import com.fr.design.actions.community.BBSAction; +import com.fr.design.actions.community.BugAction; +import com.fr.design.actions.community.NeedAction; +import com.fr.design.actions.community.QuestionAction; +import com.fr.design.actions.community.SignAction; +import com.fr.design.actions.community.UpAction; +import com.fr.design.actions.community.VideoAction; +import com.fr.design.actions.file.CloseCurrentTemplateAction; +import com.fr.design.actions.file.ExitDesignerAction; +import com.fr.design.actions.file.OpenRecentReportMenuDef; +import com.fr.design.actions.file.OpenTemplateAction; +import com.fr.design.actions.file.PreferenceAction; +import com.fr.design.actions.file.SwitchExistEnv; import com.fr.design.actions.help.AboutAction; import com.fr.design.actions.help.TutorialAction; import com.fr.design.actions.help.WebDemoAction; import com.fr.design.actions.help.alphafine.AlphaFineAction; -import com.fr.design.actions.server.*; +import com.fr.design.actions.help.alphafine.AlphaFineConfigManager; +import com.fr.design.actions.server.ConnectionListAction; +import com.fr.design.actions.server.FunctionManagerAction; +import com.fr.design.actions.server.GlobalParameterAction; +import com.fr.design.actions.server.GlobalTableDataAction; +import com.fr.design.actions.server.PlatformManagerAction; +import com.fr.design.actions.server.PluginManagerAction; import com.fr.design.file.NewTemplatePane; import com.fr.design.fun.MenuHandler; import com.fr.design.fun.TableDataPaneProcessor; @@ -35,7 +51,6 @@ import com.fr.env.RemoteEnv; import com.fr.general.ComparatorUtils; import com.fr.general.GeneralContext; import com.fr.general.Inter; -import com.fr.general.VT4FR; import com.fr.plugin.context.PluginContext; import com.fr.plugin.context.PluginRuntime; import com.fr.plugin.manage.PluginFilter; @@ -48,8 +63,11 @@ import com.fr.stable.StringUtils; import javax.swing.*; import java.awt.*; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.Locale; +import java.util.Set; /** * @author richer @@ -61,12 +79,63 @@ import java.util.List; * 还有docking的状态的保存,下次打开设计器,也应该是这样的 */ public abstract class ToolBarMenuDock { + public static final int PANLE_HEIGNT = 26; + public static final ToolBarMenuDockPlus NULLAVOID = new ToolBarMenuDockPlus() { + + @Override + public ToolBarDef[] toolbars4Target() { + return new ToolBarDef[0]; + } + + + @Override + public ShortCut[] shortcut4FileMenu() { + return new ShortCut[0]; + } + + @Override + public MenuDef[] menus4Target() { + return new MenuDef[0]; + } + + @Override + public JPanel[] toolbarPanes4Form() { + return new JPanel[0]; + } + + public JComponent[] toolBarButton4Form() { + return new JComponent[0]; + } + + public JComponent toolBar4Authority() { + return new JPanel(); + } + + @Override + public int getMenuState() { + return DesignState.WORK_SHEET; + } + + public int getToolBarHeight() { + return PANLE_HEIGNT; + } + + /** + * 导出菜单的子菜单 ,目前用于图表设计器 + * + * @return 子菜单 + */ + public ShortCut[] shortcut4ExportMenu() { + return new ShortCut[0]; + } + + }; private static final String FINEREPORT = "FineReport"; private static final int MENUBAR_HEIGHT = 22; - public static final int PANLE_HEIGNT = 26; private MenuDef[] menus; private ToolBarDef toolBarDef; private List shortCutsList; + /** * 更新菜单 */ @@ -118,6 +187,10 @@ public abstract class ToolBarMenuDock { return jMenuBar; } + ////////////////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////menu below///////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////////// + /** * 生成报表设计和表单设计的编辑区域 * @@ -127,10 +200,6 @@ public abstract class ToolBarMenuDock { return null; } - ////////////////////////////////////////////////////////////////////////////////////////// - ///////////////////////////////menu below///////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////////////////////// - public MenuDef[] menus(final ToolBarMenuDockPlus plus) { java.util.List menuList = new java.util.ArrayList(); // 添加文件菜单 @@ -164,6 +233,7 @@ public abstract class ToolBarMenuDock { /** * 获取所有actionmodel + * * @param menuList */ private void addAllUpdateActionsToList(List menuList) { @@ -175,6 +245,7 @@ public abstract class ToolBarMenuDock { /** * 递归获取所有UpdateAction + * * @param menuDef */ private void addUpdateActionToList(MenuDef menuDef, int level) { @@ -195,11 +266,11 @@ public abstract class ToolBarMenuDock { } } - public void addCommunityMenuDef(java.util.List menuList){ + public void addCommunityMenuDef(java.util.List menuList) { Locale locale = FRContext.getLocale(); - Locale [] locales =supportCommunityLocales(); - for(int i = 0; i < locales.length; i++) { - if(locale.equals(locales[i])){ + Locale[] locales = supportCommunityLocales(); + for (int i = 0; i < locales.length; i++) { + if (locale.equals(locales[i])) { menuList.add(createCommunityMenuDef()); break; } @@ -218,13 +289,13 @@ public abstract class ToolBarMenuDock { // 给菜单加插件入口 for (MenuDef m : menuDefs) { switch (m.getAnchor()) { - case MenuHandler.TEMPLATE : + case MenuHandler.TEMPLATE: insertMenu(m, MenuHandler.TEMPLATE, new TemplateTargetAction(plus)); break; - case MenuHandler.INSERT : + case MenuHandler.INSERT: insertMenu(m, MenuHandler.INSERT); break; - case MenuHandler.CELL : + case MenuHandler.CELL: insertMenu(m, MenuHandler.CELL); break; default: @@ -271,7 +342,7 @@ public abstract class ToolBarMenuDock { addSwitchExistEnvAction(menuDef); - menuDef.addShortCut( new ExitDesignerAction()); + menuDef.addShortCut(new ExitDesignerAction()); insertMenu(menuDef, MenuHandler.FILE); return menuDef; @@ -293,7 +364,7 @@ public abstract class ToolBarMenuDock { menuDef.addShortCut(new SwitchExistEnv()); } - protected ShortCut openTemplateAction(){ + protected ShortCut openTemplateAction() { return new OpenTemplateAction(); } @@ -308,17 +379,15 @@ public abstract class ToolBarMenuDock { * 创建论坛登录面板, chart那边不需要 * * @return 面板组件 - * */ - public Component createBBSLoginPane(){ + public Component createBBSLoginPane() { return new UILabel(); } - public Component createAlphafinePane(){ + public Component createAlphaFinePane() { return new UILabel(); } - protected MenuDef createServerMenuDef(ToolBarMenuDockPlus plus) { MenuDef menuDef = new MenuDef(Inter.getLocText("FR-Designer_M-Server"), 'S'); @@ -361,6 +430,7 @@ public abstract class ToolBarMenuDock { /** * 创建帮助子菜单 + * * @return 帮组菜单的子菜单 */ public ShortCut[] createHelpShortCuts() { @@ -372,25 +442,22 @@ public abstract class ToolBarMenuDock { shortCuts.add(new TutorialAction()); } shortCuts.add(SeparatorDef.DEFAULT); - //shortCuts.add(new TutorialAction()); shortCuts.add(SeparatorDef.DEFAULT); - if (ComparatorUtils.equals(ProductConstants.APP_NAME,FINEREPORT)) { - - // mod by anchore 16/11/17 去掉反馈 - //shortCuts.add(new FeedBackAction()); + if (ComparatorUtils.equals(ProductConstants.APP_NAME, FINEREPORT)) { shortCuts.add(SeparatorDef.DEFAULT); + } + if (AlphaFineConfigManager.isALPHALicAvailable()) { + shortCuts.add(new AlphaFineAction()); shortCuts.add(SeparatorDef.DEFAULT); - // shortCuts.add(new ForumAction()); } shortCuts.add(SeparatorDef.DEFAULT); - shortCuts.add(new AlphaFineAction()); - shortCuts.add(SeparatorDef.DEFAULT); shortCuts.add(new AboutAction()); return shortCuts.toArray(new ShortCut[shortCuts.size()]); } /** * 创建社区子菜单 + * * @return 社区菜单的子菜单 */ public ShortCut[] createCommunityShortCuts() { @@ -405,6 +472,7 @@ public abstract class ToolBarMenuDock { shortCuts.add(new SignAction()); return shortCuts.toArray(new ShortCut[shortCuts.size()]); } + public MenuDef createHelpMenuDef() { MenuDef menuDef = new MenuDef(Inter.getLocText("FR-Designer_Help"), 'H'); ShortCut[] otherHelpShortCuts = createHelpShortCuts(); @@ -414,6 +482,7 @@ public abstract class ToolBarMenuDock { insertMenu(menuDef, MenuHandler.HELP); return menuDef; } + public MenuDef createCommunityMenuDef() { MenuDef menuDef = new MenuDef(Inter.getLocText("FR-Designer_COMMUNITY"), 'C'); ShortCut[] otherCommunityShortCuts = createCommunityShortCuts(); @@ -423,6 +492,7 @@ public abstract class ToolBarMenuDock { insertMenu(menuDef, MenuHandler.BBS); return menuDef; } + /** * 生成工具栏 * @@ -460,7 +530,6 @@ public abstract class ToolBarMenuDock { } } - protected JPanel polyToolBar(String text) { JPanel panel = new JPanel(new BorderLayout()) { public Dimension getPreferredSize() { @@ -477,7 +546,6 @@ public abstract class ToolBarMenuDock { return panel; } - /** * 重置上面的工具栏 * @@ -488,7 +556,6 @@ public abstract class ToolBarMenuDock { return plus.toolBarButton4Form(); } - /** * 创建大的工具按钮 * @@ -507,62 +574,11 @@ public abstract class ToolBarMenuDock { return new UIButton[0]; } - protected void refreshLargeToolbarState() { } - public static final ToolBarMenuDockPlus NULLAVOID = new ToolBarMenuDockPlus() { - - @Override - public ToolBarDef[] toolbars4Target() { - return new ToolBarDef[0]; - } - - - @Override - public ShortCut[] shortcut4FileMenu() { - return new ShortCut[0]; - } - - @Override - public MenuDef[] menus4Target() { - return new MenuDef[0]; - } - - @Override - public JPanel[] toolbarPanes4Form() { - return new JPanel[0]; - } - - public JComponent[] toolBarButton4Form() { - return new JComponent[0]; - } - - public JComponent toolBar4Authority() { - return new JPanel(); - } - - @Override - public int getMenuState() { - return DesignState.WORK_SHEET; - } - public int getToolBarHeight(){ - return PANLE_HEIGNT; - } - - /** - * 导出菜单的子菜单 ,目前用于图表设计器 - * - * @return 子菜单 - */ - public ShortCut[] shortcut4ExportMenu(){ - return new ShortCut[0]; - } - - }; - - public NewTemplatePane getNewTemplatePane(){ + public NewTemplatePane getNewTemplatePane() { return new NewTemplatePane() { @Override public Icon getNew() { @@ -584,28 +600,28 @@ public abstract class ToolBarMenuDock { protected void insertMenu(MenuDef menuDef, String anchor) { insertMenu(menuDef, anchor, new NoTargetAction()); } - + protected void insertMenu(MenuDef menuDef, String anchor, ShortCutMethodAction action) { - + listenPluginMenuChange(menuDef, anchor, action); Set set = ExtraDesignClassManager.getInstance().getArray(MenuHandler.MARK_STRING); addExtraMenus(menuDef, anchor, action, set); - + } - + private void listenPluginMenuChange(final MenuDef menuDef, final String anchor, final ShortCutMethodAction action) { - + PluginFilter filter = new PluginFilter() { - + @Override public boolean accept(PluginContext context) { - + return context.contain(MenuHandler.MARK_STRING); } }; - + GeneralContext.listenPlugin(PluginEventType.BeforeStop, new PluginEventListener() { - + @Override public void on(PluginEvent event) { PluginRuntime runtime = event.getContext().getRuntime(); @@ -614,59 +630,59 @@ public abstract class ToolBarMenuDock { } }, filter); GeneralContext.listenPlugin(PluginEventType.AfterRun, new PluginEventListener() { - + @Override public void on(PluginEvent event) { - + PluginRuntime runtime = event.getContext().getRuntime(); Set menuHandlers = runtime.get(MenuHandler.MARK_STRING); addExtraMenus(menuDef, anchor, action, menuHandlers); } }, filter); } - + private void removeExtraMenus(MenuDef menuDef, String anchor, ShortCutMethodAction action, Set set) { - - + + List target = new ArrayList<>(); for (MenuHandler handler : set) { if (ComparatorUtils.equals(handler.category(), anchor)) { target.add(handler); } } - + for (MenuHandler handler : target) { int insertPosition = handler.insertPosition(menuDef.getShortCutCount()); if (insertPosition == MenuHandler.HIDE) { return; } ShortCut shortCut = action.methodAction(handler); - if (shortCut == null){ + if (shortCut == null) { continue; } menuDef.removeShortCut(shortCut); } } - + private void addExtraMenus(MenuDef menuDef, String anchor, ShortCutMethodAction action, Set set) { - + List target = new ArrayList<>(); for (MenuHandler handler : set) { if (ComparatorUtils.equals(handler.category(), anchor)) { target.add(handler); } } - + for (MenuHandler handler : target) { int insertPosition = handler.insertPosition(menuDef.getShortCutCount()); if (insertPosition == MenuHandler.HIDE) { return; } ShortCut shortCut = action.methodAction(handler); - if (shortCut == null){ + if (shortCut == null) { continue; } - + if (insertPosition == MenuHandler.LAST) { if (handler.insertSeparatorBefore()) { menuDef.addShortCut(SeparatorDef.DEFAULT); @@ -676,48 +692,47 @@ public abstract class ToolBarMenuDock { menuDef.insertShortCut(insertPosition, shortCut); if (handler.insertSeparatorBefore()) { menuDef.insertShortCut(insertPosition, SeparatorDef.DEFAULT); - insertPosition ++; + insertPosition++; } if (handler.insertSeparatorAfter()) { - insertPosition ++; + insertPosition++; menuDef.insertShortCut(insertPosition, SeparatorDef.DEFAULT); } } } } - + /** * 设计器退出时, 做的一些操作. - * */ - public void shutDown(){ + public void shutDown() { } - private interface ShortCutMethodAction{ + private interface ShortCutMethodAction { public ShortCut methodAction(MenuHandler handler); } - private abstract class AbstractShortCutMethodAction implements ShortCutMethodAction{ + private abstract class AbstractShortCutMethodAction implements ShortCutMethodAction { - public ShortCut methodAction(MenuHandler handler){ + public ShortCut methodAction(MenuHandler handler) { return handler.shortcut(); } } //不需要编辑对象的菜单, 比如文件, 服务器, 关于 - private class NoTargetAction extends AbstractShortCutMethodAction{ + private class NoTargetAction extends AbstractShortCutMethodAction { } //模板为对象的菜单, 比如模板, 后续如果单元格也要, 直接加个CellTargetAction即可. //在methodAction中做handler.shortcut(cell), 不需要修改handler中原有接口, 加个shortcut(cell). - private class TemplateTargetAction extends AbstractShortCutMethodAction{ + private class TemplateTargetAction extends AbstractShortCutMethodAction { private ToolBarMenuDockPlus plus; - public TemplateTargetAction(ToolBarMenuDockPlus plus){ + public TemplateTargetAction(ToolBarMenuDockPlus plus) { this.plus = plus; } diff --git a/designer_base/src/com/fr/design/mainframe/toolbar/UpdateActionManager.java b/designer_base/src/com/fr/design/mainframe/toolbar/UpdateActionManager.java index 47ae6101fa..845eb3660e 100644 --- a/designer_base/src/com/fr/design/mainframe/toolbar/UpdateActionManager.java +++ b/designer_base/src/com/fr/design/mainframe/toolbar/UpdateActionManager.java @@ -1,5 +1,8 @@ package com.fr.design.mainframe.toolbar; +import com.fr.design.actions.UpdateAction; +import com.fr.general.ComparatorUtils; + import java.util.List; /** @@ -23,4 +26,13 @@ public class UpdateActionManager { public void setUpdateActions(List updateActions) { this.updateActions = updateActions; } + + public boolean isEnable(UpdateAction updateAction) { + for (UpdateActionModel action : updateActions) { + if (ComparatorUtils.equals(updateAction.getName(), action.getActionName()) && action.getAction().isEnabled()) { + return true; + } + } + return false; + } } diff --git a/designer_base/src/com/fr/design/mainframe/widget/BasicPropertyPane.java b/designer_base/src/com/fr/design/mainframe/widget/BasicPropertyPane.java index 21287530ee..9e71296d3b 100644 --- a/designer_base/src/com/fr/design/mainframe/widget/BasicPropertyPane.java +++ b/designer_base/src/com/fr/design/mainframe/widget/BasicPropertyPane.java @@ -1,5 +1,6 @@ package com.fr.design.mainframe.widget; +import com.fr.design.designer.IntervalConstants; import com.fr.design.dialog.BasicPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; @@ -8,8 +9,10 @@ import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.general.Inter; -import javax.swing.*; -import java.awt.*; +import javax.swing.BorderFactory; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Component; /** * Created by plough on 2017/8/7. @@ -25,7 +28,7 @@ public class BasicPropertyPane extends BasicPane { this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); widgetName = new UITextField(); - + widgetName.setGlobalName(Inter.getLocText("FR-Designer_Widget_Name")); double f = TableLayout.FILL; double p = TableLayout.PREFERRED; double[] rowSize = {p}; @@ -34,7 +37,7 @@ public class BasicPropertyPane extends BasicPane { Component[][] components = new Component[][]{ new Component[]{new UILabel(Inter.getLocText("FR-Designer_Widget_Name")), widgetName}, }; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 20, 7); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); this.add(panel, BorderLayout.NORTH); } diff --git a/designer_base/src/com/fr/design/mainframe/widget/accessibles/BaseAccessibleEditor.java b/designer_base/src/com/fr/design/mainframe/widget/accessibles/BaseAccessibleEditor.java index c71cd8ad1d..9f73a06d34 100644 --- a/designer_base/src/com/fr/design/mainframe/widget/accessibles/BaseAccessibleEditor.java +++ b/designer_base/src/com/fr/design/mainframe/widget/accessibles/BaseAccessibleEditor.java @@ -1,27 +1,33 @@ package com.fr.design.mainframe.widget.accessibles; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Graphics2D; +import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; +import javax.swing.*; -import javax.swing.BorderFactory; - +import com.fr.design.constants.UIConstants; +import com.fr.design.event.UIObserverListener; import com.fr.design.gui.ibutton.UIButton; -import javax.swing.JComponent; -import javax.swing.JOptionPane; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; - +import javax.swing.plaf.ButtonUI; import com.fr.base.BaseUtils; import com.fr.design.Exception.ValidationException; +import com.fr.design.gui.ibutton.UIButtonUI; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.widget.editors.ITextComponent; import com.fr.design.mainframe.widget.editors.TextField; import com.fr.design.dialog.BasicPane; import com.fr.design.designer.properties.Decoder; import com.fr.design.designer.properties.Encoder; +import com.fr.design.utils.gui.GUIPaintUtils; /** * @since 6.5.3 @@ -58,7 +64,15 @@ public class BaseAccessibleEditor extends BasicPane implements AccessibleEditor } protected ITextComponent createTextField() { - return new TextField(); + return new TextField() { + public void registerChangeListener(UIObserverListener listener) { + return; + } + + public boolean shouldResponseChangeListener() { + return false; + } + }; } private void initComponents() { @@ -77,7 +91,28 @@ public class BaseAccessibleEditor extends BasicPane implements AccessibleEditor setOpaque(false); if (showButton) { - btPopup = new UIButton(); + btPopup = new UIButton(){ + @Override + public ButtonUI getUI() { + return new UIButtonUI() { + @Override + protected boolean isPressed(AbstractButton b) { + return model.isArmed() && model.isPressed(); + } + + @Override + protected void doExtraPainting(UIButton b, Graphics2D g2d, int w, int h, String selectedRoles) { + if (isPressed(b) && b.isPressedPainted()) { + GUIPaintUtils.fillPressed(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles), UIConstants.COMBOBOX_BTN_PRESS); + } else if (isRollOver(b)) { + GUIPaintUtils.fillRollOver(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles), b.isPressedPainted(), UIConstants.COMBOBOX_BTN_ROLLOVER); + } else if (b.isNormalPainted()) { + GUIPaintUtils.fillNormal(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles), b.isPressedPainted(), UIConstants.COMBOBOX_BTN_NORMAL); + } + } + }; + } + }; initPopupButton(); btPopup.addActionListener(new ActionListener() { @@ -101,7 +136,7 @@ public class BaseAccessibleEditor extends BasicPane implements AccessibleEditor protected void initPopupButton() { if (!isComboButton()) { - btPopup.setText("..."); + btPopup.setIcon(new ImageIcon(UIConstants.ACCESSIBLE_EDITOR_DOT)); btPopup.setPreferredSize(new Dimension(20, 20)); } else { btPopup.setRolloverEnabled(true); @@ -189,4 +224,6 @@ public class BaseAccessibleEditor extends BasicPane implements AccessibleEditor public static void showMessage(String message, Component editorComponent) { JOptionPane.showMessageDialog(editorComponent, message, "Validation Error", JOptionPane.ERROR_MESSAGE); } + + } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/roleAuthority/ReportAndFSManagePane.java b/designer_base/src/com/fr/design/roleAuthority/ReportAndFSManagePane.java index 75dfa99bdf..8b406de1d2 100644 --- a/designer_base/src/com/fr/design/roleAuthority/ReportAndFSManagePane.java +++ b/designer_base/src/com/fr/design/roleAuthority/ReportAndFSManagePane.java @@ -265,9 +265,11 @@ public class ReportAndFSManagePane extends DockingView implements Prepare4DataSo DesignTableDataManager.addDsChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { - roleTree.refreshTreeNode(); - expandTree(roleTree, true); - roleTree.updateUI(); + if (BaseUtils.isAuthorityEditing()) { + roleTree.refreshTreeNode(); + expandTree(roleTree, true); + roleTree.updateUI(); + } } }); diff --git a/designer_base/src/com/fr/design/roleAuthority/RoleTree.java b/designer_base/src/com/fr/design/roleAuthority/RoleTree.java index ce6102fe31..671d1dd818 100644 --- a/designer_base/src/com/fr/design/roleAuthority/RoleTree.java +++ b/designer_base/src/com/fr/design/roleAuthority/RoleTree.java @@ -1 +1,539 @@ -package com.fr.design.roleAuthority; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.itree.checkboxtree.CheckBoxTree; import com.fr.design.gui.itree.checkboxtree.CheckBoxTreeSelectionModel; import com.fr.general.NameObject; import com.fr.design.constants.UIConstants; import com.fr.design.beans.BasicBeanPane; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.gui.itree.refreshabletree.ExpandMutableTreeNode; import com.fr.design.gui.itree.refreshabletree.UserObjectRefreshJTree; import com.fr.design.mainframe.AuthorityPropertyPane; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.EastRegionContainerPane; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; import javax.swing.SwingUtilities; import javax.swing.JTree; import javax.swing.JComponent; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; import java.awt.Component; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; /** * Author : daisy * Time: 下午3:32 * Date: 13-8-30 */ public class RoleTree extends UserObjectRefreshJTree { private static final long serialVersionUID = 2L; private String roleName = null; public RoleTree() { super(); this.setCellRenderer(roleTreeRenderer); this.setEnabled(true); this.setEditable(true); this.setRowHeight(20); this.setDigIn(true); Handler handler = createHandlerForRoleTree(); this.replaceMouseListener(this, handler, 0); this.replaceKeyListener(this, handler, 0); this.addTreeSelectionListener(handler); // this.removeMouseListener(treeMouseListener); // this.addTreeSelectionListener(new TreeSelectionListener() { // public void valueChanged(TreeSelectionEvent e) { // doWithValueChanged(e); // } // }); } public boolean isCheckBoxVisible(TreePath path) { return true; } /** * Creates the mouse listener and key listener used by RoleTree. * * @return the Handler. */ protected Handler createHandlerForRoleTree() { return new Handler(this); } protected static class Handler implements MouseListener, KeyListener, TreeSelectionListener { protected RoleTree _tree; int _hotspot = new UICheckBox().getPreferredSize().width; private int _toggleCount = -1; public Handler(RoleTree tree) { _tree = tree; } protected TreePath getTreePathForMouseEvent(MouseEvent e) { if (!SwingUtilities.isLeftMouseButton(e)) { return null; } if (!_tree.isCheckBoxEnabled()) { return null; } TreePath path = _tree.getPathForLocation(e.getX(), e.getY()); if (path == null) { return null; } // if (clicksInCheckBox(e, path)) { return path; // } else { // return null; // } } // protected boolean clicksInCheckBox(MouseEvent e, TreePath path) { // if (!_tree.isCheckBoxVisible(path)) { // return false; // } else { // Rectangle bounds = _tree.getPathBounds(path); // if (_tree.getComponentOrientation().isLeftToRight()) { // return e.getX() < bounds.x + _hotspot; // } else { // return e.getX() > bounds.x + bounds.width - _hotspot; // } // } // } private TreePath preventToggleEvent(MouseEvent e) { TreePath pathForMouseEvent = getTreePathForMouseEvent(e); if (pathForMouseEvent != null) { int toggleCount = _tree.getToggleClickCount(); if (toggleCount != -1) { _toggleCount = toggleCount; _tree.setToggleClickCount(-1); } } return pathForMouseEvent; } public void mouseClicked(MouseEvent e) { preventToggleEvent(e); } public void mousePressed(MouseEvent e) { TreePath path = preventToggleEvent(e); if (path != null) { toggleSelection(path); e.consume(); } } public void mouseReleased(MouseEvent e) { TreePath path = preventToggleEvent(e); if (path != null) { e.consume(); } if (_toggleCount != -1) { _tree.setToggleClickCount(_toggleCount); } } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void keyPressed(KeyEvent e) { if (e.isConsumed()) { return; } if (!_tree.isCheckBoxEnabled()) { return; } if (e.getModifiers() == 0 && e.getKeyChar() == KeyEvent.VK_SPACE) { toggleSelections(); } } public void keyTyped(KeyEvent e) { } public void keyReleased(KeyEvent e) { } public void valueChanged(TreeSelectionEvent e) { _tree.treeDidChange(); _tree.doWithValueChanged(e); } private void toggleSelection(TreePath path) { if (!_tree.isEnabled() || !_tree.isCheckBoxEnabled(path)) { return; } CheckBoxTreeSelectionModel selectionModel = _tree.getCheckBoxTreeSelectionModel(); boolean selected = selectionModel.isPathSelected(path, selectionModel.isDigIn()); selectionModel.removeTreeSelectionListener(this); try { if (!selectionModel.isSingleEventMode()) { selectionModel.setBatchMode(true); } if (selected) selectionModel.removeSelectionPath(path); else selectionModel.addSelectionPath(path); } finally { if (!selectionModel.isSingleEventMode()) { selectionModel.setBatchMode(false); } selectionModel.addTreeSelectionListener(this); _tree.treeDidChange(); _tree.doWithValueChanged(path); } } protected void toggleSelections() { TreePath[] treePaths = _tree.getSelectionPaths(); if (treePaths == null) { return; } for (int i = 0, length = treePaths.length; i < length; i++) { TreePath tmpTreePath = treePaths[i]; toggleSelection(tmpTreePath); } // for (TreePath treePath : treePaths) { // toggleSelection(treePath); // } } } /** * 更新UI */ public void updateUI() { super.updateUI(); setUI(new UIRoleTreeUI()); } /** * @param e 选中事件 */ protected void doWithValueChanged(TreeSelectionEvent e) { if (e.getNewLeadSelectionPath() != null) { if (!e.getNewLeadSelectionPath().getLastPathComponent().toString().equals(Inter.getLocText("FR-Designer_Role"))) { roleName = e.getNewLeadSelectionPath().getLastPathComponent().toString(); setTabRoleName(roleName); refreshRoleTree(roleName); refreshElementAndAuthorityPane(); HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().judgeSheetAuthority(roleName); } } } /** * @param treepath 所选的节点路径 */ protected void doWithValueChanged(TreePath treepath) { if (treepath != null && !treepath.getLastPathComponent().toString().equals(Inter.getLocText("FR-Designer_Role"))) { roleName = treepath.getLastPathComponent().toString(); setTabRoleName(roleName); refreshRoleTree(roleName); refreshElementAndAuthorityPane(); HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().judgeSheetAuthority(roleName); } } protected void setTabRoleName(String roleName) { } /** * 刷新角色树 * * @param selectedRole 角色 */ public void refreshRoleTree(String selectedRole) { if (EastRegionContainerPane.getInstance().getAuthorityEditionPane() instanceof AuthorityPropertyPane) { AuthorityPropertyPane authorityPropertyPane = (AuthorityPropertyPane) EastRegionContainerPane.getInstance().getAuthorityEditionPane(); authorityPropertyPane.populate(); EastRegionContainerPane.getInstance().replaceAuthorityEditionPane(authorityPropertyPane); } } public void setSelectedRole(String selectedRole, TreePath parent) { ExpandMutableTreeNode node = (ExpandMutableTreeNode) parent.getLastPathComponent(); if (node.children() != null && node.getChildCount() >= 0) { for (Enumeration e = node.children(); e.hasMoreElements(); ) { ExpandMutableTreeNode n = (ExpandMutableTreeNode) e.nextElement(); Object userObj = n.getUserObject(); String chilld = null; if (userObj instanceof String) { chilld = (String) userObj; } else if (userObj instanceof NameObject) { NameObject nameObject = (NameObject) userObj; chilld = nameObject.getName(); } if (ComparatorUtils.equals(chilld, selectedRole)) { this.setSelectionPath(parent.pathByAddingChild(n)); return; } else { setSelectedRole(selectedRole, parent.pathByAddingChild(n)); } } } } private void refreshElementAndAuthorityPane() { JComponent authorityToolBar = DesignerContext.getDesignerFrame().getToolbarComponent(); if (authorityToolBar instanceof BasicBeanPane) { //说明是工具栏的 ((BasicBeanPane) authorityToolBar).populateAuthority(); } HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().repaint(); } public String getSelectedRoleName() { return roleName; } public void setSelectedRoleName(String name) { roleName = name; } private DefaultTreeCellRenderer roleTreeRenderer = new DefaultTreeCellRenderer() { private static final long serialVersionUID = 2L; public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); ExpandMutableTreeNode treeNode = (ExpandMutableTreeNode) value; Object userObj = treeNode.getUserObject(); if (userObj instanceof String) { // p:这个是column field. this.setIcon(null); this.setText((String) userObj); } else if (userObj instanceof NameObject) { NameObject nameObject = (NameObject) userObj; this.setText(nameObject.getName()); this.setIcon(null); } // 这里新建一个Label作为render是因为JTree在动态刷新的时候,节点上render画布的的宽度不会变,会使得一部分比较长的数据显示为"..." this.setBackgroundNonSelectionColor(UIConstants.NORMAL_BACKGROUND); this.setForeground(UIConstants.FONT_COLOR); this.setBackgroundSelectionColor(UIConstants.FLESH_BLUE); return this; } }; /** * 去除不需要的鼠标监听器 * * @param component 组件 * @param l 所需的鼠标监听器 * @param index 插入的索引 */ private void replaceMouseListener(Component component, MouseListener l, int index) { component.removeMouseListener(treeMouseListener); MouseListener[] listeners = component.getMouseListeners(); for (int i = 0, length = listeners.length; i < length; i++) { component.removeMouseListener(listeners[i]); } // for (MouseListener listener : listeners) { // component.removeMouseListener(listener); // } for (int i = 0; i < listeners.length; i++) { MouseListener listener = listeners[i]; if (index == i) { component.addMouseListener(l); } if (listener instanceof CheckBoxTree.Handler) { continue; } component.addMouseListener(listener); } // index is too large, add to the end. if (index > listeners.length - 1) { component.addMouseListener(l); } } /** * 去除一些不需要的键盘监听器 * * @param component 组件 * @param l 所需的键盘监听器 * @param index 插入的索引 */ private void replaceKeyListener(Component component, KeyListener l, int index) { KeyListener[] listeners = component.getKeyListeners(); for (int i = 0, length = listeners.length; i < length; i++) { component.removeKeyListener(listeners[i]); } // for (MouseListener listener : listeners) { // component.removeMouseListener(listener); // } for (int i = 0; i < listeners.length; i++) { KeyListener listener = listeners[i]; if (index == i) { component.addKeyListener(l); } if (listener instanceof CheckBoxTree.Handler) { continue; } component.addKeyListener(listener); } // index is too large, add to the end. if (index > listeners.length - 1) { component.addKeyListener(l); } } /* * p:获得选中的NameObject = name + role. */ public NameObject getSelectedNameObject() { TreePath selectedTreePath = this.getSelectionPath(); if (selectedTreePath == null) { return null; } ExpandMutableTreeNode selectedTreeNode = (ExpandMutableTreeNode) selectedTreePath.getLastPathComponent(); Object selectedUserObject = selectedTreeNode.getUserObject(); return new NameObject(selectedUserObject.toString(), ""); } /** * p:添加一个NameObject节点 * * @param no 需要添加的节点 */ public void addNameObject(NameObject no) { if (no == null) { return; } DefaultTreeModel treeModel = (DefaultTreeModel) this.getModel(); // 新建一个放着NameObject的newChildTreeNode,加到Root下面 ExpandMutableTreeNode root = (ExpandMutableTreeNode) treeModel.getRoot(); ExpandMutableTreeNode newChildTreeNode = new ExpandMutableTreeNode(no); root.add(newChildTreeNode); newChildTreeNode.add(new ExpandMutableTreeNode()); treeModel.reload(root); } /** * 刷新树节点 */ public void refreshTreeNode() { DefaultTreeModel treeModel = (DefaultTreeModel) this.getModel(); ExpandMutableTreeNode root = (ExpandMutableTreeNode) treeModel.getRoot(); if (interceptRefresh(root)) { return; } ExpandMutableTreeNode[] new_nodes = loadChildTreeNodes(root); List childTreeNodeList = new ArrayList(); for (int i = 0, len = root.getChildCount(); i < len; i++) { if (root.getChildAt(i) instanceof ExpandMutableTreeNode) { childTreeNodeList.add((ExpandMutableTreeNode) root.getChildAt(i)); } else { childTreeNodeList.add((DefaultMutableTreeNode) root.getChildAt(i)); } } root.removeAllChildren(); for (int ci = 0; ci < new_nodes.length; ci++) { Object cUserObject = new_nodes[ci].getUserObject(); for (int ni = 0, nlen = childTreeNodeList.size(); ni < nlen; ni++) { ExpandMutableTreeNode cTreeNode = (ExpandMutableTreeNode) childTreeNodeList.get(ni); if (ComparatorUtils.equals(cTreeNode.getUserObject(), cUserObject)) { new_nodes[ci].setExpanded(cTreeNode.isExpanded()); if (cTreeNode.getFirstChild() instanceof ExpandMutableTreeNode && cTreeNode.isExpanded()) { checkChildNodes(cTreeNode, new_nodes[ci]); } break; } } root.add(new_nodes[ci]); } } protected void checkChildNodes(ExpandMutableTreeNode oldNode, ExpandMutableTreeNode newNode) { for (int i = 0; i < oldNode.getChildCount(); i++) { ExpandMutableTreeNode oldChild = (ExpandMutableTreeNode) oldNode.getChildAt(i); for (int j = 0; j < newNode.getChildCount(); j++) { ExpandMutableTreeNode newChild = (ExpandMutableTreeNode) newNode.getChildAt(j); ExpandMutableTreeNode[] nodes = RoleTree.this.loadChildTreeNodes(newChild); for (int k = 0; k < nodes.length; k++) { newChild.add(nodes[k]); } if (newChild.getChildCount() > 1 && ((ExpandMutableTreeNode) newChild.getFirstChild()).getUserObject() == PENDING) { newChild.remove(0); } if (ComparatorUtils.equals(oldChild.getUserObject(), newChild.getUserObject())) { newChild.setExpanded(oldChild.isExpanded()); } } } } public NameObject getRealSelectedNameObject() { TreePath selectedTreePath = this.getSelectionPath(); if (selectedTreePath == null) { return null; } ExpandMutableTreeNode selectedTreeNode = (ExpandMutableTreeNode) selectedTreePath.getLastPathComponent(); Object selectedUserObject = selectedTreeNode.getUserObject(); if (selectedUserObject instanceof NameObject) { return (NameObject) selectedUserObject; } selectedTreeNode = (ExpandMutableTreeNode) selectedTreeNode.getParent(); selectedUserObject = selectedTreeNode.getUserObject(); if (selectedUserObject instanceof NameObject) { return (NameObject) selectedUserObject; } return null; } } \ No newline at end of file +package com.fr.design.roleAuthority; + +import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.design.gui.itree.checkboxtree.CheckBoxTree; +import com.fr.design.gui.itree.checkboxtree.CheckBoxTreeSelectionModel; +import com.fr.general.NameObject; +import com.fr.design.constants.UIConstants; +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.file.HistoryTemplateListPane; +import com.fr.design.gui.itree.refreshabletree.ExpandMutableTreeNode; +import com.fr.design.gui.itree.refreshabletree.UserObjectRefreshJTree; +import com.fr.design.mainframe.AuthorityPropertyPane; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.EastRegionContainerPane; +import com.fr.general.ComparatorUtils; +import com.fr.general.Inter; + +import javax.swing.SwingUtilities; +import javax.swing.JTree; +import javax.swing.JComponent; +import javax.swing.event.TreeSelectionEvent; +import javax.swing.event.TreeSelectionListener; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.DefaultTreeCellRenderer; +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; +import java.awt.Component; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; + +/** + * Author : daisy + * Time: 下午3:32 + * Date: 13-8-30 + */ +public class RoleTree extends UserObjectRefreshJTree { + private static final long serialVersionUID = 2L; + + private String roleName = null; + + public RoleTree() { + super(); + this.setCellRenderer(roleTreeRenderer); + this.setEnabled(true); + this.setEditable(true); + this.setRowHeight(20); + this.setDigIn(true); + Handler handler = createHandlerForRoleTree(); + this.replaceMouseListener(this, handler, 0); + this.replaceKeyListener(this, handler, 0); + this.addTreeSelectionListener(handler); +// this.removeMouseListener(treeMouseListener); +// this.addTreeSelectionListener(new TreeSelectionListener() { +// public void valueChanged(TreeSelectionEvent e) { +// doWithValueChanged(e); +// } +// }); + + } + + public boolean isCheckBoxVisible(TreePath path) { + return true; + } + + + /** + * Creates the mouse listener and key listener used by RoleTree. + * + * @return the Handler. + */ + protected Handler createHandlerForRoleTree() { + return new Handler(this); + } + + protected static class Handler implements MouseListener, KeyListener, TreeSelectionListener { + protected RoleTree _tree; + int _hotspot = new UICheckBox().getPreferredSize().width; + private int _toggleCount = -1; + + public Handler(RoleTree tree) { + _tree = tree; + } + + protected TreePath getTreePathForMouseEvent(MouseEvent e) { + if (!SwingUtilities.isLeftMouseButton(e)) { + return null; + } + + if (!_tree.isCheckBoxEnabled()) { + return null; + } + + TreePath path = _tree.getPathForLocation(e.getX(), e.getY()); + if (path == null) { + return null; + } + +// if (clicksInCheckBox(e, path)) { + + return path; +// } else { +// return null; +// } + } + +// protected boolean clicksInCheckBox(MouseEvent e, TreePath path) { +// if (!_tree.isCheckBoxVisible(path)) { +// return false; +// } else { +// Rectangle bounds = _tree.getPathBounds(path); +// if (_tree.getComponentOrientation().isLeftToRight()) { +// return e.getX() < bounds.x + _hotspot; +// } else { +// return e.getX() > bounds.x + bounds.width - _hotspot; +// } +// } +// } + + private TreePath preventToggleEvent(MouseEvent e) { + TreePath pathForMouseEvent = getTreePathForMouseEvent(e); + if (pathForMouseEvent != null) { + int toggleCount = _tree.getToggleClickCount(); + if (toggleCount != -1) { + _toggleCount = toggleCount; + _tree.setToggleClickCount(-1); + } + } + return pathForMouseEvent; + } + + public void mouseClicked(MouseEvent e) { + preventToggleEvent(e); + } + + public void mousePressed(MouseEvent e) { + TreePath path = preventToggleEvent(e); + if (path != null) { + toggleSelection(path); + e.consume(); + } + } + + public void mouseReleased(MouseEvent e) { + TreePath path = preventToggleEvent(e); + if (path != null) { + e.consume(); + } + if (_toggleCount != -1) { + _tree.setToggleClickCount(_toggleCount); + } + } + + public void mouseEntered(MouseEvent e) { + } + + public void mouseExited(MouseEvent e) { + } + + public void keyPressed(KeyEvent e) { + if (e.isConsumed()) { + return; + } + + if (!_tree.isCheckBoxEnabled()) { + return; + } + + if (e.getModifiers() == 0 && e.getKeyChar() == KeyEvent.VK_SPACE) { + toggleSelections(); + } + } + + public void keyTyped(KeyEvent e) { + } + + public void keyReleased(KeyEvent e) { + } + + public void valueChanged(TreeSelectionEvent e) { + _tree.treeDidChange(); + _tree.doWithValueChanged(e); + } + + private void toggleSelection(TreePath path) { + if (!_tree.isEnabled() || !_tree.isCheckBoxEnabled(path)) { + return; + } + CheckBoxTreeSelectionModel selectionModel = _tree.getCheckBoxTreeSelectionModel(); + boolean selected = selectionModel.isPathSelected(path, selectionModel.isDigIn()); + selectionModel.removeTreeSelectionListener(this); + try { + if (!selectionModel.isSingleEventMode()) { + selectionModel.setBatchMode(true); + } + if (selected) + selectionModel.removeSelectionPath(path); + else + selectionModel.addSelectionPath(path); + } finally { + if (!selectionModel.isSingleEventMode()) { + selectionModel.setBatchMode(false); + } + selectionModel.addTreeSelectionListener(this); + _tree.treeDidChange(); + _tree.doWithValueChanged(path); + } + } + + protected void toggleSelections() { + TreePath[] treePaths = _tree.getSelectionPaths(); + if (treePaths == null) { + return; + } + for (int i = 0, length = treePaths.length; i < length; i++) { + TreePath tmpTreePath = treePaths[i]; + toggleSelection(tmpTreePath); + } +// for (TreePath treePath : treePaths) { +// toggleSelection(treePath); +// } + } + } + + /** + * 更新UI + */ + public void updateUI() { + super.updateUI(); + setUI(new UIRoleTreeUI()); + } + + /** + * @param e 选中事件 + */ + protected void doWithValueChanged(TreeSelectionEvent e) { + if (e.getNewLeadSelectionPath() != null) { + if (!e.getNewLeadSelectionPath().getLastPathComponent().toString().equals(Inter.getLocText("FR-Designer_Role"))) { + roleName = e.getNewLeadSelectionPath().getLastPathComponent().toString(); + setTabRoleName(roleName); + refreshRoleTree(roleName); + refreshElementAndAuthorityPane(); + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().judgeSheetAuthority(roleName); + } + } + } + + /** + * @param treepath 所选的节点路径 + */ + protected void doWithValueChanged(TreePath treepath) { + if (treepath != null && !treepath.getLastPathComponent().toString().equals(Inter.getLocText("FR-Designer_Role"))) { + roleName = treepath.getLastPathComponent().toString(); + setTabRoleName(roleName); + refreshRoleTree(roleName); + refreshElementAndAuthorityPane(); + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().judgeSheetAuthority(roleName); + } + + } + + protected void setTabRoleName(String roleName) { + + } + + + /** + * 刷新角色树 + * + * @param selectedRole 角色 + */ + public void refreshRoleTree(String selectedRole) { + if (EastRegionContainerPane.getInstance().getAuthorityEditionPane() instanceof AuthorityPropertyPane) { + AuthorityPropertyPane authorityPropertyPane = (AuthorityPropertyPane) EastRegionContainerPane.getInstance().getAuthorityEditionPane(); + authorityPropertyPane.populate(); + EastRegionContainerPane.getInstance().replaceAuthorityEditionPane(authorityPropertyPane); + } + } + + public void setSelectedRole(String selectedRole, TreePath parent) { + ExpandMutableTreeNode node = (ExpandMutableTreeNode) parent.getLastPathComponent(); + if (node.children() != null && node.getChildCount() >= 0) { + for (Enumeration e = node.children(); e.hasMoreElements(); ) { + ExpandMutableTreeNode n = (ExpandMutableTreeNode) e.nextElement(); + Object userObj = n.getUserObject(); + String chilld = null; + if (userObj instanceof String) { + chilld = (String) userObj; + } else if (userObj instanceof NameObject) { + NameObject nameObject = (NameObject) userObj; + chilld = nameObject.getName(); + } + if (ComparatorUtils.equals(chilld, selectedRole)) { + this.setSelectionPath(parent.pathByAddingChild(n)); + return; + } else { + setSelectedRole(selectedRole, parent.pathByAddingChild(n)); + } + } + } + } + + + private void refreshElementAndAuthorityPane() { + JComponent authorityToolBar = DesignerContext.getDesignerFrame().getToolbarComponent(); + if (authorityToolBar instanceof BasicBeanPane) { + //说明是工具栏的 + ((BasicBeanPane) authorityToolBar).populateAuthority(); + } + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().repaint(); + } + + public String getSelectedRoleName() { + return roleName; + } + + public void setSelectedRoleName(String name) { + roleName = name; + } + + + private DefaultTreeCellRenderer roleTreeRenderer = new DefaultTreeCellRenderer() { + private static final long serialVersionUID = 2L; + + + public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { + super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); + ExpandMutableTreeNode treeNode = (ExpandMutableTreeNode) value; + Object userObj = treeNode.getUserObject(); + if (userObj instanceof String) { + // p:这个是column field. + this.setIcon(null); + this.setText((String) userObj); + } else if (userObj instanceof NameObject) { + NameObject nameObject = (NameObject) userObj; + this.setText(nameObject.getName()); + this.setIcon(null); + } + + + // 这里新建一个Label作为render是因为JTree在动态刷新的时候,节点上render画布的的宽度不会变,会使得一部分比较长的数据显示为"..." + this.setBackgroundNonSelectionColor(UIConstants.TREE_BACKGROUND); + this.setForeground(UIConstants.FONT_COLOR); + this.setBackgroundSelectionColor(UIConstants.FLESH_BLUE); + return this; + } + }; + + + /** + * 去除不需要的鼠标监听器 + * + * @param component 组件 + * @param l 所需的鼠标监听器 + * @param index 插入的索引 + */ + private void replaceMouseListener(Component component, MouseListener l, int index) { + + component.removeMouseListener(treeMouseListener); + + MouseListener[] listeners = component.getMouseListeners(); + for (int i = 0, length = listeners.length; i < length; i++) { + component.removeMouseListener(listeners[i]); + } +// for (MouseListener listener : listeners) { +// component.removeMouseListener(listener); +// } + for (int i = 0; i < listeners.length; i++) { + MouseListener listener = listeners[i]; + if (index == i) { + component.addMouseListener(l); + } + if (listener instanceof CheckBoxTree.Handler) { + continue; + } + component.addMouseListener(listener); + } + // index is too large, add to the end. + if (index > listeners.length - 1) { + component.addMouseListener(l); + } + } + + + /** + * 去除一些不需要的键盘监听器 + * + * @param component 组件 + * @param l 所需的键盘监听器 + * @param index 插入的索引 + */ + private void replaceKeyListener(Component component, KeyListener l, int index) { + + KeyListener[] listeners = component.getKeyListeners(); + for (int i = 0, length = listeners.length; i < length; i++) { + component.removeKeyListener(listeners[i]); + } +// for (MouseListener listener : listeners) { +// component.removeMouseListener(listener); +// } + for (int i = 0; i < listeners.length; i++) { + KeyListener listener = listeners[i]; + if (index == i) { + component.addKeyListener(l); + } + if (listener instanceof CheckBoxTree.Handler) { + continue; + } + + component.addKeyListener(listener); + } + // index is too large, add to the end. + if (index > listeners.length - 1) { + component.addKeyListener(l); + } + } + + /* + * p:获得选中的NameObject = name + role. + */ + public NameObject getSelectedNameObject() { + TreePath selectedTreePath = this.getSelectionPath(); + if (selectedTreePath == null) { + return null; + } + ExpandMutableTreeNode selectedTreeNode = (ExpandMutableTreeNode) selectedTreePath.getLastPathComponent(); + Object selectedUserObject = selectedTreeNode.getUserObject(); + return new NameObject(selectedUserObject.toString(), ""); + } + + + /** + * p:添加一个NameObject节点 + * + * @param no 需要添加的节点 + */ + public void addNameObject(NameObject no) { + if (no == null) { + return; + } + DefaultTreeModel treeModel = (DefaultTreeModel) this.getModel(); + + // 新建一个放着NameObject的newChildTreeNode,加到Root下面 + ExpandMutableTreeNode root = (ExpandMutableTreeNode) treeModel.getRoot(); + + ExpandMutableTreeNode newChildTreeNode = new ExpandMutableTreeNode(no); + root.add(newChildTreeNode); + newChildTreeNode.add(new ExpandMutableTreeNode()); + treeModel.reload(root); + } + + + /** + * 刷新树节点 + */ + public void refreshTreeNode() { + DefaultTreeModel treeModel = (DefaultTreeModel) this.getModel(); + ExpandMutableTreeNode root = (ExpandMutableTreeNode) treeModel.getRoot(); + if (interceptRefresh(root)) { + return; + } + + ExpandMutableTreeNode[] new_nodes = loadChildTreeNodes(root); + + List childTreeNodeList = new ArrayList(); + for (int i = 0, len = root.getChildCount(); i < len; i++) { + if (root.getChildAt(i) instanceof ExpandMutableTreeNode) { + childTreeNodeList.add((ExpandMutableTreeNode) root.getChildAt(i)); + } else { + childTreeNodeList.add((DefaultMutableTreeNode) root.getChildAt(i)); + } + } + + root.removeAllChildren(); + + for (int ci = 0; ci < new_nodes.length; ci++) { + Object cUserObject = new_nodes[ci].getUserObject(); + + for (int ni = 0, nlen = childTreeNodeList.size(); ni < nlen; ni++) { + ExpandMutableTreeNode cTreeNode = (ExpandMutableTreeNode) childTreeNodeList.get(ni); + if (ComparatorUtils.equals(cTreeNode.getUserObject(), cUserObject)) { + new_nodes[ci].setExpanded(cTreeNode.isExpanded()); + if (cTreeNode.getFirstChild() instanceof ExpandMutableTreeNode && cTreeNode.isExpanded()) { + checkChildNodes(cTreeNode, new_nodes[ci]); + } + break; + } + } + + root.add(new_nodes[ci]); + } + } + + + protected void checkChildNodes(ExpandMutableTreeNode oldNode, ExpandMutableTreeNode newNode) { + for (int i = 0; i < oldNode.getChildCount(); i++) { + ExpandMutableTreeNode oldChild = (ExpandMutableTreeNode) oldNode.getChildAt(i); + for (int j = 0; j < newNode.getChildCount(); j++) { + ExpandMutableTreeNode newChild = (ExpandMutableTreeNode) newNode.getChildAt(j); + ExpandMutableTreeNode[] nodes = RoleTree.this.loadChildTreeNodes(newChild); + for (int k = 0; k < nodes.length; k++) { + newChild.add(nodes[k]); + } + if (newChild.getChildCount() > 1 && ((ExpandMutableTreeNode) newChild.getFirstChild()).getUserObject() == PENDING) { + newChild.remove(0); + } + if (ComparatorUtils.equals(oldChild.getUserObject(), newChild.getUserObject())) { + newChild.setExpanded(oldChild.isExpanded()); + } + } + } + } + + public NameObject getRealSelectedNameObject() { + TreePath selectedTreePath = this.getSelectionPath(); + if (selectedTreePath == null) { + return null; + } + + ExpandMutableTreeNode selectedTreeNode = (ExpandMutableTreeNode) selectedTreePath.getLastPathComponent(); + Object selectedUserObject = selectedTreeNode.getUserObject(); + if (selectedUserObject instanceof NameObject) { + return (NameObject) selectedUserObject; + } + + selectedTreeNode = (ExpandMutableTreeNode) selectedTreeNode.getParent(); + selectedUserObject = selectedTreeNode.getUserObject(); + if (selectedUserObject instanceof NameObject) { + return (NameObject) selectedUserObject; + } + return null; + } + + +} \ No newline at end of file diff --git a/designer_base/src/com/fr/design/roleAuthority/RolesAlreadyEditedPane.java b/designer_base/src/com/fr/design/roleAuthority/RolesAlreadyEditedPane.java index b9bc53c707..eaa176c9b6 100644 --- a/designer_base/src/com/fr/design/roleAuthority/RolesAlreadyEditedPane.java +++ b/designer_base/src/com/fr/design/roleAuthority/RolesAlreadyEditedPane.java @@ -59,7 +59,6 @@ public class RolesAlreadyEditedPane extends JPanel { // this.add(northPane, BorderLayout.NORTH); rolesEditedPane = new RolesEditedPane(); this.add(rolesEditedPane, BorderLayout.CENTER); - } public RoleTree getRoleTree() { @@ -102,7 +101,7 @@ public class RolesAlreadyEditedPane extends JPanel { // 这里新建一个Label作为render是因为JTree在动态刷新的时候,节点上render画布的的宽度不会变,会使得一部分比较长的数据显示为"..." - this.setBackgroundNonSelectionColor(UIConstants.NORMAL_BACKGROUND); + this.setBackgroundNonSelectionColor(UIConstants.TREE_BACKGROUND); this.setForeground(UIConstants.FONT_COLOR); this.setBackgroundSelectionColor(UIConstants.FLESH_BLUE); return this; diff --git a/designer_base/src/com/fr/design/utils/ThemeUtils.java b/designer_base/src/com/fr/design/utils/ThemeUtils.java index 8fc965c274..9f012f2ee2 100644 --- a/designer_base/src/com/fr/design/utils/ThemeUtils.java +++ b/designer_base/src/com/fr/design/utils/ThemeUtils.java @@ -145,7 +145,7 @@ public class ThemeUtils { public static final boolean MENU_ROLLOVER = true; - public static final ColorUIResource SCROLL_PANE_BORDER_COLOR = new ColorUIResource(201, 198, 184); + public static final ColorUIResource SCROLL_PANE_BORDER_COLOR = new ColorUIResource(0xD9DADD); public static final ColorUIResource TABLE_BORDER_LIGHT_COLOR = new ColorUIResource(210, 210, 210); public static final ColorUIResource TABLE_BORDER_DARK_COLOR = new ColorUIResource(210, 210, 210); diff --git a/designer_base/src/com/fr/design/utils/gui/GUICoreUtils.java b/designer_base/src/com/fr/design/utils/gui/GUICoreUtils.java index 8c6252b633..b68418cc35 100644 --- a/designer_base/src/com/fr/design/utils/gui/GUICoreUtils.java +++ b/designer_base/src/com/fr/design/utils/gui/GUICoreUtils.java @@ -172,7 +172,7 @@ public abstract class GUICoreUtils{ public static TitledBorder createTitledBorder(String s, Color c) { UITitledBorder tb = UITitledBorder.createBorderWithTitle(s); if (c == null) { - c = new Color(102, 153, 255); + c = Color.black; } tb.setTitleColor(c); return tb; @@ -185,7 +185,7 @@ public abstract class GUICoreUtils{ * @return 同上 */ public static TitledBorder createTitledBorder(String s) { - return createTitledBorder(s, new Color(102, 153, 255)); + return createTitledBorder(s, Color.black); } /** diff --git a/designer_base/src/com/fr/design/web/CustomIconPane.java b/designer_base/src/com/fr/design/web/CustomIconPane.java index b075aad43d..925fb3e34f 100644 --- a/designer_base/src/com/fr/design/web/CustomIconPane.java +++ b/designer_base/src/com/fr/design/web/CustomIconPane.java @@ -4,6 +4,7 @@ import com.fr.base.BaseUtils; import com.fr.base.GraphHelper; import com.fr.base.Icon; import com.fr.base.IconManager; +import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.gui.ibutton.UIButton; @@ -16,6 +17,7 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.DesignerContext; +import com.fr.design.utils.gui.GUICoreUtils; import com.fr.form.ui.WidgetManager; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; @@ -63,7 +65,7 @@ public class CustomIconPane extends BasicPane { private void initComponents() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); JPanel centerPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - centerPane.setBorder(BorderFactory.createTitledBorder(Inter.getLocText("FR-Designer_Icon"))); + centerPane.setBorder(GUICoreUtils.createTitledBorder(Inter.getLocText("FR-Designer_Icon"))); JPanel noNamePane = FRGUIPaneFactory.createCenterFlowInnerContainer_S_Pane(); centerPane.add(noNamePane, BorderLayout.CENTER); diff --git a/designer_base/src/com/fr/design/widget/DataModify.java b/designer_base/src/com/fr/design/widget/DataModify.java index 25ab46a687..b901d7c69e 100644 --- a/designer_base/src/com/fr/design/widget/DataModify.java +++ b/designer_base/src/com/fr/design/widget/DataModify.java @@ -2,7 +2,8 @@ package com.fr.design.widget; import com.fr.design.data.DataCreatorUI; -import javax.swing.*; +import javax.swing.JComponent; + public interface DataModify { @@ -15,4 +16,9 @@ public interface DataModify { DataCreatorUI dataUI(); JComponent toSwingComponent(); + + String getGlobalName(); + + void setGlobalName(String globalName); + } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/widget/WidgetBoundsPaneFactory.java b/designer_base/src/com/fr/design/widget/WidgetBoundsPaneFactory.java index 0c51710c0b..bd3612d114 100644 --- a/designer_base/src/com/fr/design/widget/WidgetBoundsPaneFactory.java +++ b/designer_base/src/com/fr/design/widget/WidgetBoundsPaneFactory.java @@ -1,5 +1,6 @@ package com.fr.design.widget; +import com.fr.design.designer.IntervalConstants; import com.fr.design.foldablepane.UIExpandablePane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; @@ -21,32 +22,43 @@ public class WidgetBoundsPaneFactory { double f = TableLayout.FILL; double p = TableLayout.PREFERRED; Component[][] components = new Component[][]{ - new Component[]{new UILabel(Inter.getLocText("FR-Designer-Widget_Size")), width, height}, - new Component[]{null, new UILabel(Inter.getLocText("FR-Designer-Tree_Width"), SwingConstants.CENTER), new UILabel(Inter.getLocText("FR-Designer-Tree_Height"), SwingConstants.CENTER)}, + new Component[]{new UILabel(Inter.getLocText("FR-Designer-Widget_Size")), createRightPane(width, height)}, + new Component[]{null, createRightPane(new UILabel(Inter.getLocText("FR-Designer-Tree_Width"), SwingConstants.CENTER), new UILabel(Inter.getLocText("FR-Designer-Tree_Height"), SwingConstants.CENTER))}, }; double[] rowSize = {p, p}; - double[] columnSize = {p, f, f}; - int[][] rowCount = {{1, 1, 1}, {1, 1, 1}}; - final JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 8, 10); + double[] columnSize = {p, f}; + int[][] rowCount = {{1, 1}, {1, 1}}; + final JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); boundsPane.add(panel); return new UIExpandablePane(Inter.getLocText("FR-Designer_Coords_And_Size"), 280, 24, boundsPane); } + public static JPanel createRightPane(Component com1, Component com2){ + double f = TableLayout.FILL; + double p = TableLayout.PREFERRED; + double[] rowSize = {p}; + double[] columnSize = {f, f}; + int[][] rowCount = {{1, 1}}; + Component[][] components = new Component[][]{ + new Component[]{com1, com2} + }; + return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_L6, IntervalConstants.INTERVAL_L1); + } public static UIExpandablePane createAbsoluteBoundsPane(UISpinner x, UISpinner y, UISpinner width, UISpinner height) { double f = TableLayout.FILL; double p = TableLayout.PREFERRED; Component[][] components = new Component[][]{ - new Component[]{new UILabel(Inter.getLocText("FR-Designer_Widget_Position")), x, y}, - new Component[]{null, new UILabel(Inter.getLocText("FR-Designer_X_Coordinate"), SwingConstants.CENTER), new UILabel(Inter.getLocText("FR-Designer_Y_Coordinate"), SwingConstants.CENTER)}, - new Component[]{new UILabel(Inter.getLocText("FR-Designer-Widget_Size")), width, height}, - new Component[]{null, new UILabel(Inter.getLocText("FR-Designer-Tree_Width"), SwingConstants.CENTER), new UILabel(Inter.getLocText("FR-Designer-Tree_Height"), SwingConstants.CENTER)}, + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Widget_Position")), createRightPane(x, y)}, + new Component[]{null, createRightPane(new UILabel(Inter.getLocText("FR-Designer_X_Coordinate"), SwingConstants.CENTER), new UILabel(Inter.getLocText("FR-Designer_Y_Coordinate"), SwingConstants.CENTER))}, + new Component[]{new UILabel(Inter.getLocText("FR-Designer-Widget_Size")), createRightPane(width, height)}, + new Component[]{null, createRightPane(new UILabel(Inter.getLocText("FR-Designer-Tree_Width"), SwingConstants.CENTER), new UILabel(Inter.getLocText("FR-Designer-Tree_Height"), SwingConstants.CENTER))}, }; double[] rowSize = {p, p, p, p}; - double[] columnSize = {p, f, f}; - int[][] rowCount = {{1, 1, 1}, {1, 1, 1}, {1, 1, 1}, {1, 1, 1}}; - final JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 8, 10); + double[] columnSize = {p, f}; + int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}, {1, 1}}; + final JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); JPanel boundsPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); boundsPane.add(panel); diff --git a/designer_base/src/com/fr/design/widget/btn/ButtonWithHotkeysDetailPane.java b/designer_base/src/com/fr/design/widget/btn/ButtonWithHotkeysDetailPane.java index 763ab5d299..d72b6614df 100644 --- a/designer_base/src/com/fr/design/widget/btn/ButtonWithHotkeysDetailPane.java +++ b/designer_base/src/com/fr/design/widget/btn/ButtonWithHotkeysDetailPane.java @@ -49,7 +49,7 @@ public abstract class ButtonWithHotkeysDetailPane extends Butt {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, IntervalConstants.INTERVAL_L2, IntervalConstants.INTERVAL_L1); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(n_components, rowSize, columnSize, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); advancePane.add(panel, BorderLayout.NORTH); Component comp = createCenterPane(); diff --git a/designer_base/src/com/fr/design/widget/component/BackgroundCompPane.java b/designer_base/src/com/fr/design/widget/component/BackgroundCompPane.java index fef58a2ac4..e534521706 100644 --- a/designer_base/src/com/fr/design/widget/component/BackgroundCompPane.java +++ b/designer_base/src/com/fr/design/widget/component/BackgroundCompPane.java @@ -32,7 +32,6 @@ public abstract class BackgroundCompPane extends BasicPane { public void initComponent() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); UILabel headLabel = createUILable(); - headLabel.setPreferredSize(new Dimension(50, 20)); initalBackgroundEditor = new AccessibleImgBackgroundEditor(); overBackgroundEditor = new AccessibleImgBackgroundEditor(); clickBackgroundEditor = new AccessibleImgBackgroundEditor(); @@ -48,10 +47,11 @@ public abstract class BackgroundCompPane extends BasicPane { new Component[]{new UILabel(Inter.getLocText("FR-Designer_Background-Over")), overBackgroundEditor}, new Component[]{new UILabel(Inter.getLocText("FR-Designer_Background-Click")), clickBackgroundEditor}, }; - panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_L2, IntervalConstants.INTERVAL_L1); + panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W0, IntervalConstants.INTERVAL_L1); panel.setBorder(BorderFactory.createEmptyBorder(IntervalConstants.INTERVAL_L6, IntervalConstants.INTERVAL_L5, 0, 0)); backgroundHead = new UIButtonGroup(titles); - JPanel headPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{headLabel, backgroundHead}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L2, 7); + JPanel headPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{ + new Component[]{headLabel, backgroundHead}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_W3, IntervalConstants.INTERVAL_L1); this.add(headPane, BorderLayout.NORTH); this.add(panel, BorderLayout.CENTER); diff --git a/designer_base/src/com/fr/design/widget/component/CheckBoxDictPane.java b/designer_base/src/com/fr/design/widget/component/CheckBoxDictPane.java index 506b637e95..eed4b7fbf0 100644 --- a/designer_base/src/com/fr/design/widget/component/CheckBoxDictPane.java +++ b/designer_base/src/com/fr/design/widget/component/CheckBoxDictPane.java @@ -35,11 +35,11 @@ public class CheckBoxDictPane extends JPanel { endComboBox = new DictionaryComboBox(DictionaryConstants.symbols, DictionaryConstants.symbolDisplays); endComboBox.setEditable(true); Component[][] components = new Component[][]{ - new Component[]{new UILabel(Inter.getLocText("Form-Delimiter") + ":"), delimiterComboBox}, - new Component[]{new UILabel(Inter.getLocText("ComboCheckBox-Start_Symbol") + ":"),startComboBox}, - new Component[]{new UILabel(Inter.getLocText("ComboCheckBox-End_Symbol") + ":"),endComboBox} + new Component[]{new UILabel(Inter.getLocText("Form-Delimiter")), delimiterComboBox}, + new Component[]{new UILabel(Inter.getLocText("ComboCheckBox-Start_Symbol")),startComboBox}, + new Component[]{new UILabel(Inter.getLocText("ComboCheckBox-End_Symbol")),endComboBox} }; - returnStringPane = TableLayoutHelper.createGapTableLayoutPane(components, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L2, IntervalConstants.INTERVAL_L1); + returnStringPane = TableLayoutHelper.createGapTableLayoutPane(components, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_W2, IntervalConstants.INTERVAL_L1); returnTypeComboBox = new UIButtonGroup(new String[]{Inter.getLocText("Widget-Array"), Inter.getLocText("String")}); returnTypeComboBox.addActionListener(new ActionListener() { @@ -48,7 +48,8 @@ public class CheckBoxDictPane extends JPanel { checkVisible(returnTypeComboBox.getSelectedIndex()); } }); - JPanel headPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{new UILabel(Inter.getLocText("Widget-Date_Selector_Return_Type") + ":"), returnTypeComboBox}}, TableLayoutHelper.FILL_LASTCOLUMN, 18, 7); + JPanel headPane = TableLayoutHelper.createGapTableLayoutPane( + new Component[][]{new Component[]{new UILabel(Inter.getLocText("Widget-Date_Selector_Return_Type")), returnTypeComboBox}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L2, IntervalConstants.INTERVAL_L1); JPanel jPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); jPanel.add(headPane, BorderLayout.NORTH); jPanel.add(returnStringPane, BorderLayout.CENTER); diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 41e4860d2b..165ed3468a 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -1,7 +1,16 @@ package com.fr.env; -import com.fr.base.*; +import com.fr.base.AbstractEnv; +import com.fr.base.EnvException; +import com.fr.base.FRContext; +import com.fr.base.FRCoreContext; +import com.fr.base.ModifiedTable; +import com.fr.base.Parameter; +import com.fr.base.StoreProcedureParameter; +import com.fr.base.TableData; +import com.fr.base.Utils; import com.fr.base.remote.RemoteDeziConstants; +import com.fr.data.TableDataSource; import com.fr.data.core.DataCoreUtils; import com.fr.data.core.db.TableProcedure; import com.fr.data.impl.Connection; @@ -21,13 +30,25 @@ import com.fr.file.CacheManager; import com.fr.file.DatasourceManager; import com.fr.file.DatasourceManagerProvider; import com.fr.file.filetree.FileNode; -import com.fr.general.*; +import com.fr.general.ComparatorUtils; +import com.fr.general.FRLogger; +import com.fr.general.IOUtils; +import com.fr.general.Inter; +import com.fr.general.LogRecordTime; +import com.fr.general.VT4FR; import com.fr.general.http.HttpClient; import com.fr.json.JSONArray; import com.fr.json.JSONException; import com.fr.json.JSONObject; import com.fr.share.ShareConstants; -import com.fr.stable.*; +import com.fr.stable.ArrayUtils; +import com.fr.stable.EncodeConstants; +import com.fr.stable.JavaCompileInfo; +import com.fr.stable.LicUtils; +import com.fr.stable.ProductConstants; +import com.fr.stable.StableUtils; +import com.fr.stable.StringUtils; +import com.fr.stable.SvgProvider; import com.fr.stable.file.XMLFileManagerProvider; import com.fr.stable.project.ProjectConstants; import com.fr.stable.xml.XMLPrintWriter; @@ -35,18 +56,40 @@ import com.fr.stable.xml.XMLTools; import com.fr.stable.xml.XMLableReader; import com.fr.web.ResourceConstants; -import javax.swing.*; -import javax.xml.transform.*; +import javax.swing.JOptionPane; +import javax.swing.UIManager; +import javax.xml.transform.Source; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; -import java.awt.*; -import java.io.*; +import java.awt.Component; +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.FilenameFilter; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.NoRouteToHostException; import java.net.Socket; -import java.util.*; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Timer; +import java.util.TimerTask; import java.util.logging.Level; import java.util.regex.Pattern; @@ -112,6 +155,15 @@ public class RemoteEnv extends AbstractEnv { return password; } + // 修复密码中包含特殊字符,无法登录的问题 + private String getEncodedPassword() { + try { + return URLEncoder.encode(password, "UTF-8"); + } catch (UnsupportedEncodingException e) { + return password; + } + } + public void setPassword(String password) { this.password = password; clearUserID(); @@ -175,12 +227,8 @@ public class RemoteEnv extends AbstractEnv { * 根据nameValuePairs,也就是参数对,生成PostMethod,不同之处在于,参数拼在path后面,不是method.addParameters */ private HttpClient createHttpMethod2(HashMap para) throws EnvException { - StringBuilder sb = new StringBuilder(path); - - sb.append('?'); - sb.append("id=").append(createUserID()); - - return new HttpClient(sb.toString(), para, true); + String methodPath = path + '?' + "id=" + createUserID(); + return new HttpClient(methodPath, para, true); } @@ -337,7 +385,7 @@ public class RemoteEnv extends AbstractEnv { para.put("op", "fr_remote_design"); para.put("cmd", "test_server_connection"); para.put("user", user); - para.put("password", password); + para.put("password", getEncodedPassword()); if (path.startsWith("https") && (!DesignerEnvManager.getEnvManager().isHttps())) { return false; @@ -362,7 +410,7 @@ public class RemoteEnv extends AbstractEnv { Inter.getLocText(new String[]{"Datasource-Connection_failed", "Registration-User_Name", "Password", "Error"}, new String[]{",", "", "", "!"}) , Inter.getLocText("FR-Server-All_Error"), JOptionPane.ERROR_MESSAGE); return false; - } else if (res.indexOf("RegistEditionException") != -1) { + } else if (res.contains("RegistEditionException")) { if (needMessage) { JOptionPane.showMessageDialog(parentComponent, Inter.getLocText(new String[]{"Datasource-Connection_failed", "Version-does-not-support"}, new String[]{",", "!"})); } else { @@ -415,9 +463,8 @@ public class RemoteEnv extends AbstractEnv { para.put("op", "fr_remote_design"); para.put("cmd", "heart_beat"); para.put("user", user); - para.put("userid", userID); - HttpClient client = createHttpMethod(para, true); + HttpClient client = createHttpMethod(para); execute4InputStream(client); //这做法不好, 30秒刷一次, 刷新的时候会重新构建树, 构建完会把子节点都收缩起来, 效果太差. @@ -459,7 +506,7 @@ public class RemoteEnv extends AbstractEnv { para.put("op", "fr_remote_design"); para.put("cmd", "r_sign_in"); para.put("user", user); - para.put("password", password); + para.put("password", getEncodedPassword()); simulaRPC(para, true); @@ -552,7 +599,7 @@ public class RemoteEnv extends AbstractEnv { if (resJSON == null) { return false; } - if (resJSON.indexOf("RegistEditionException") != -1) { + if (resJSON.contains("RegistEditionException")) { JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Lic_does_not_Support_Remote")); return false; } @@ -1207,6 +1254,11 @@ public class RemoteEnv extends AbstractEnv { return DavXMLUtils.readXMLParameters(input); } + @Override + public EmbeddedTableData previewTableData(Object tableData, Map parameterMap, int rowCount) throws Exception { + return previewTableData(null, tableData, parameterMap, rowCount); + } + /** * 根据指定的参数生成一个实际可预览的数据集 * @@ -1216,7 +1268,7 @@ public class RemoteEnv extends AbstractEnv { * @return 实际的二维数据集 * @throws Exception 如果生成数据失败则抛出此异常 */ - public EmbeddedTableData previewTableData(Object tableData, java.util.Map parameterMap, int rowCount) throws Exception { + public EmbeddedTableData previewTableData(TableDataSource dataSource, Object tableData, java.util.Map parameterMap, int rowCount) throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); // 把tableData写成xml文件到out @@ -1255,6 +1307,11 @@ public class RemoteEnv extends AbstractEnv { return previewTableData(tableData, parameterMap, -1); } + @Override + public Object previewTableData(TableDataSource dataSource, Object tableData, Map parameterMap, int start, int end, String[] cols, int[] colIdx) throws Exception { + return previewTableData(dataSource, tableData, parameterMap, -1); + } + /** * nameValuePairs,这个参数要接着this.path,拼成一个URL,否则服务器端req.getParameter是无法得到的 * @@ -1939,7 +1996,7 @@ public class RemoteEnv extends AbstractEnv { para.put("op", "fr_remote_design"); para.put("cmd", "design_get_designer_version"); para.put("user", user); - para.put("password", password); + para.put("password", getEncodedPassword()); HttpClient client = createHttpMethod(para, true); try { @@ -2160,6 +2217,10 @@ public class RemoteEnv extends AbstractEnv { return StringUtils.EMPTY; } } + + public void doWhenServerShutDown() { + + } @Override public boolean isLocalEnv() { diff --git a/designer_base/src/com/fr/start/BaseDesigner.java b/designer_base/src/com/fr/start/BaseDesigner.java index 43a3377ccc..3f24b645a5 100644 --- a/designer_base/src/com/fr/start/BaseDesigner.java +++ b/designer_base/src/com/fr/start/BaseDesigner.java @@ -29,6 +29,7 @@ import com.fr.general.Inter; import com.fr.general.ModuleContext; import com.fr.general.SiteCenter; import com.fr.plugin.PluginCollector; +import com.fr.plugin.conversion.PluginConversionModule; import com.fr.plugin.manage.PluginManager; import com.fr.plugin.manage.PluginStartup; import com.fr.stable.ArrayUtils; @@ -58,18 +59,20 @@ public abstract class BaseDesigner extends ToolBarMenuDock { private Timer timer; public BaseDesigner(String[] args) { - BuildContext.setBuildFilePath(buildPropertiesPath()); - if (isDebug()) { - setDebugEnv(); - } RestartHelper.deleteRecordFilesWhenStart(); //初始化插件引擎 PluginStartup.start(); - + //标记一下是设计器启动 + PluginConversionModule.getInstance().markDesignerStart(); SiteCenter.getInstance(); - DesignUtils.setPort(getStartPort()); + BuildContext.setBuildFilePath(buildPropertiesPath()); + if (isDebug()) { + setDebugEnv(); + } else { + DesignUtils.setPort(getStartPort()); + } // 如果端口被占用了 说明程序已经运行了一次,也就是说,已经建立一个监听服务器,现在只要给服务器发送命令就好了 if (DesignUtils.isStarted()) { DesignUtils.clientSend(args); @@ -97,7 +100,7 @@ public abstract class BaseDesigner extends ToolBarMenuDock { DesignUtils.initLookAndFeel(); DesignUtils.creatListeningServer(getStartPort(), startFileSuffix()); - + // 初始化Log Handler DesignerEnvManager.loadLogSetting(); DesignerFrame df = createDesignerFrame(); diff --git a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java index adc29477fd..e53d7849c9 100644 --- a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java +++ b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java @@ -96,6 +96,8 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import static com.fr.chart.charttypes.ChartTypeManager.CHART_PRIORITY; + /** * Created by eason on 14/12/29. */ @@ -215,7 +217,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr private static void readDefault() { - if (chartTypeInterfaces.containsKey(ChartTypeManager.CHART_PRIORITY)) { + if (chartTypeInterfaces.containsKey(CHART_PRIORITY)) { return; } CloseableContainedMap chartUIList = @@ -238,7 +240,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr chartUIList.put(ChartConstants.GIS_CHAER, new GisMapIndependentChartInterface()); chartUIList.put(ChartConstants.FUNNEL_CHART, new FunnelIndependentChartInterface()); - chartTypeInterfaces.put(ChartTypeManager.CHART_PRIORITY, chartUIList); + chartTypeInterfaces.put(CHART_PRIORITY, chartUIList); } @@ -406,7 +408,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr return getChartDataPane(priority, plotID, listener); } } - return getChartDataPane(ChartTypeManager.CHART_PRIORITY, plotID, listener); + return getChartDataPane(CHART_PRIORITY, plotID, listener); } private ChartDataPane getChartDataPane(String priority, String plotID, AttributeChangeListener listener) { @@ -436,7 +438,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr return getAttrPaneArray(priority, plotID, listener); } } - return getAttrPaneArray(ChartTypeManager.CHART_PRIORITY, plotID, listener); + return getAttrPaneArray(CHART_PRIORITY, plotID, listener); } private AbstractChartAttrPane[] getAttrPaneArray(String priority, String plotID, AttributeChangeListener listener) { @@ -454,7 +456,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr return getTableDataSourcePane(priority, plot, parent); } } - return getTableDataSourcePane(ChartTypeManager.CHART_PRIORITY, plot, parent); + return getTableDataSourcePane(CHART_PRIORITY, plot, parent); } private AbstractTableDataContentPane getTableDataSourcePane(String priority, Plot plot, ChartDataPane parent) { @@ -474,7 +476,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr return getReportDataSourcePane(priority, plot, parent); } } - return getReportDataSourcePane(ChartTypeManager.CHART_PRIORITY, plot, parent); + return getReportDataSourcePane(CHART_PRIORITY, plot, parent); } private boolean plotInChart(String plotID, String priority) { @@ -500,7 +502,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr return getPlotConditionPane(priority, plot); } } - return getPlotConditionPane(ChartTypeManager.CHART_PRIORITY, plot); + return getPlotConditionPane(CHART_PRIORITY, plot); } private ConditionAttributesPane getPlotConditionPane(String priority, Plot plot) { @@ -519,7 +521,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr return getPlotSeriesPane(priority, parent, plot); } } - return getPlotSeriesPane(ChartTypeManager.CHART_PRIORITY, parent, plot); + return getPlotSeriesPane(CHART_PRIORITY, parent, plot); } private BasicBeanPane getPlotSeriesPane(String priority, ChartStylePane parent, Plot plot) { @@ -557,7 +559,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr public void mount(PluginSingleInjection injection) { if (isIndependentChartUIProvider(injection)) { - String priority = injection.getAttribute("priority"); + String priority = injection.getAttribute("priority", CHART_PRIORITY); String plotID = injection.getAttribute("plotID"); IndependentChartUIProvider instance = (IndependentChartUIProvider) injection.getObject(); addChartTypeInterface(instance, priority, plotID); @@ -569,7 +571,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr public void demount(PluginSingleInjection injection) { if (isIndependentChartUIProvider(injection)) { - String priority = injection.getAttribute("priority"); + String priority = injection.getAttribute("priority", CHART_PRIORITY); String plotID = injection.getAttribute("plotID"); removeChartTypeInterface(priority, plotID); } @@ -602,7 +604,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr return getChartEditPane(priority, plotID); } } - return getChartEditPane(ChartTypeManager.CHART_PRIORITY, plotID); + return getChartEditPane(CHART_PRIORITY, plotID); } private ChartEditPane getChartEditPane(String priority, String plotID) { @@ -618,7 +620,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr return getChartConfigPane(priority, plotID); } } - return getChartConfigPane(ChartTypeManager.CHART_PRIORITY, plotID); + return getChartConfigPane(CHART_PRIORITY, plotID); } private ChartsConfigPane getChartConfigPane(String priority, String plotID) { diff --git a/designer_chart/src/com/fr/design/chart/ChartTypePane.java b/designer_chart/src/com/fr/design/chart/ChartTypePane.java index d48ab810ab..01040d6c54 100644 --- a/designer_chart/src/com/fr/design/chart/ChartTypePane.java +++ b/designer_chart/src/com/fr/design/chart/ChartTypePane.java @@ -97,12 +97,15 @@ public class ChartTypePane extends ChartCommonWizardPane { if (value instanceof ChartIcon) { this.setIcon((ChartIcon) value); setHorizontalAlignment(UILabel.CENTER); + ChartIcon chartIcon = (ChartIcon) value; if (isSelected) { // 深蓝色. this.setBackground(new Color(57, 107, 181)); + this.setBorder(GUICoreUtils.createTitledBorder(getChartName(chartIcon), Color.WHITE)); + } else { + this.setBorder(GUICoreUtils.createTitledBorder(getChartName(chartIcon))); } - ChartIcon chartIcon = (ChartIcon) value; - this.setBorder(GUICoreUtils.createTitledBorder(getChartName(chartIcon), null)); + } return this; } diff --git a/designer_chart/src/com/fr/design/chart/series/SeriesCondition/LabelAlphaPane.java b/designer_chart/src/com/fr/design/chart/series/SeriesCondition/LabelAlphaPane.java index 3ba7316931..122e39cf37 100644 --- a/designer_chart/src/com/fr/design/chart/series/SeriesCondition/LabelAlphaPane.java +++ b/designer_chart/src/com/fr/design/chart/series/SeriesCondition/LabelAlphaPane.java @@ -4,20 +4,26 @@ import com.fr.chart.base.AttrAlpha; import com.fr.chart.base.DataSeriesCondition; import com.fr.design.condition.ConditionAttrSingleConditionPane; import com.fr.design.condition.ConditionAttributesPane; +import com.fr.design.gui.frpane.UINumberDragPane; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.style.AlphaPane; import com.fr.general.Inter; +import javax.swing.*; +import java.awt.*; + /** -* @author richie -* @date 2015-03-26 -* @since 8.0 -*/ + * @author richie + * @date 2015-03-26 + * @since 8.0 + */ public class LabelAlphaPane extends ConditionAttrSingleConditionPane { - private static final int ALPHASIZE = 100; + private static final double ALPHASIZE = 100.0; + private static final int PANEL_WIDTH = 200; + private static final int PANEL_HIGHT = 20; private UILabel nameLabel; - private AlphaPane alphaPane; + private UINumberDragPane alphaPane; + private AttrAlpha attrAlpha = new AttrAlpha(); @@ -25,10 +31,17 @@ public class LabelAlphaPane extends ConditionAttrSingleConditionPane { private static final long serialVersionUID = 2469115951510144738L; + private static final int EDIT_PANE_WIDTH = 248; private UITextField itemNameTextField; private ChartHyperEditPane hyperEditPane; private ChartComponent chartComponent; @@ -41,15 +42,16 @@ public class ChartHyperPoplinkPane extends BasicBeanPane { } hyperEditPane = new ChartHyperEditPane(getChartParaType(), getValueEditorPane(), getValueEditorPane()); - this.add(hyperEditPane, BorderLayout.CENTER); + hyperEditPane.setPreferredSize(new Dimension(EDIT_PANE_WIDTH, (int)hyperEditPane.getPreferredSize().getHeight()));// 固定属性配置面板大小,灵活调整图表显示面板. + this.add(hyperEditPane, BorderLayout.WEST); ChartCollection cc = createChartCollection(); chartComponent = new ChartComponent(); - chartComponent.setPreferredSize(new Dimension(300, 170));// 在单元格弹出时 需要调整保证属性表的大小. + chartComponent.setPreferredSize(new Dimension((int)this.getPreferredSize().getWidth()-EDIT_PANE_WIDTH, 170));// 在单元格弹出时 需要调整保证属性表的大小. chartComponent.setSupportEdit(false); chartComponent.populate(cc); - this.add(chartComponent, BorderLayout.EAST); + this.add(chartComponent, BorderLayout.CENTER); hyperEditPane.populate(cc); diff --git a/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java b/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java index 1d9732205d..3224d6d241 100644 --- a/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java +++ b/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java @@ -33,10 +33,11 @@ public abstract class MiddleChartPropertyPane extends BaseChartPropertyPane{ protected void initComponenet() { this.setLayout(new BorderLayout()); - this.setBorder(null); + this.setBorder(BorderFactory.createEmptyBorder(10,0,0,0)); createNameLabel(); - this.add(createNorthComponent(), BorderLayout.NORTH); + //去掉上方名字,先注释掉 +// this.add(createNorthComponent(), BorderLayout.NORTH); chartEditPane = StableUtils.construct(ChartEditPane.class); chartEditPane.setSupportCellData(true); } diff --git a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java index 22b9db8e37..3bebe95eb8 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java @@ -341,7 +341,9 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 DesignTableDataManager.addDsChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { AbstractChartAttrPane attrPane = paneList.get(tabsHeaderIconPane.getSelectedIndex()); - attrPane.refreshChartDataPane(collection); + if (attrPane.isShowing()) { + attrPane.refreshChartDataPane(collection); + } } }); } diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java index 3710dcd524..dfd06f08b1 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java @@ -23,7 +23,13 @@ import com.fr.stable.StringUtils; import javax.swing.*; import java.awt.*; -import java.awt.event.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.util.ArrayList; @@ -150,7 +156,7 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen UIMenuNameableCreator ui = configCreator.clone(); final BasicBeanPane pane = ui.getPane(); pane.populateBean(editingCollection); - UIDialog dialog = pane.showUnsizedWindow(SwingUtilities.getWindowAncestor(new JPanel()), new DialogActionListener() { + UIDialog dialog = pane.showUnsizedWindow(SwingUtilities.getWindowAncestor(parent), new DialogActionListener() { @Override public void doOk() { pane.updateBean(editingCollection); diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/ChartDataFilterPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/ChartDataFilterPane.java index 37caea1684..a30f28c3e7 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/ChartDataFilterPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/ChartDataFilterPane.java @@ -6,7 +6,6 @@ import com.fr.chart.chartattr.ChartCollection; import com.fr.chart.chartattr.Plot; import com.fr.chart.chartdata.TopDefinition; import com.fr.design.gui.frpane.AbstractAttrNoScrollPane; -import com.fr.design.gui.ibutton.UIHeadGroup; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; @@ -48,15 +47,9 @@ public class ChartDataFilterPane extends ThirdTabPane { } protected void initTabPane() { - if (!paneList.isEmpty()) { - tabPane = new UIHeadGroup(nameArray) { - @Override - public void tabChanged(int index) { - cardLayout.show(centerPane, nameArray[index]); - } - }; - tabPane.setPreferredSize(new Dimension(221, 20)); - } + super.initTabPane(); + tabPane.setPreferredSize(new Dimension(221, 25)); + } protected void initLayout() { @@ -66,9 +59,10 @@ public class ChartDataFilterPane extends ThirdTabPane { if (nameArray.length > 1) { pane.add(tabPane); this.add(pane, BorderLayout.NORTH); + centerPane.setBorder(BorderFactory.createEmptyBorder(10,0,0,0)); } + centerPane.setBorder(null); } - centerPane.setBorder(BorderFactory.createEmptyBorder(10,0,0,0)); this.add(centerPane, BorderLayout.CENTER); } @@ -126,7 +120,7 @@ public class ChartDataFilterPane extends ThirdTabPane { this.removeAll(); paneList = initPaneList4NoPresent(plot4Pane, parentPane); initAllPane(); - tabPane.setPreferredSize(new Dimension(221, 20)); + tabPane.setPreferredSize(new Dimension(221, 25)); centerPane.setPreferredSize(new Dimension(getContentPaneWidth(), 200)); this.validate(); } @@ -242,7 +236,7 @@ public class ChartDataFilterPane extends ThirdTabPane { }; preDataNumPane = TableLayout4VanChartHelper.createGapTableLayoutPane(components, rowSize, columnSize); - preDataNumPane.setBorder(BorderFactory.createEmptyBorder(0,15,0,0)); + preDataNumPane.setBorder(BorderFactory.createEmptyBorder(10,15,0,0)); //默认不显示 preDataNumPane.setVisible(false); panel1.add(preDataNumPane, BorderLayout.CENTER); @@ -417,7 +411,7 @@ public class ChartDataFilterPane extends ThirdTabPane { }; preDataNumPane = TableLayout4VanChartHelper.createGapTableLayoutPane(components, rowSize, columnSize); - preDataNumPane.setBorder(BorderFactory.createEmptyBorder(0,15,0,0)); + preDataNumPane.setBorder(BorderFactory.createEmptyBorder(10,15,0,0)); //默认不显示 preDataNumPane.setVisible(false); panel1.add(preDataNumPane, BorderLayout.CENTER); diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/NormalChartDataPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/NormalChartDataPane.java index 8c464454a0..829bf13b3e 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/NormalChartDataPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/NormalChartDataPane.java @@ -64,7 +64,7 @@ public class NormalChartDataPane extends DataContentsPane { UILabel label1 = new UILabel(Inter.getLocText("Chart-Data_Resource")); label1.setPreferredSize(new Dimension(ChartDataPane.LABEL_WIDTH,ChartDataPane.LABEL_HEIGHT)); northPane.add(GUICoreUtils.createBorderLayoutPane(new Component[]{jcb, null, null, label1, null})); - northPane.setBorder(BorderFactory.createEmptyBorder(0,10,0,15)); + northPane.setBorder(BorderFactory.createEmptyBorder(0,5,0,8)); this.add(northPane, BorderLayout.NORTH); this.add(cardPane, BorderLayout.CENTER); diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java index 34486394ac..90bb3af827 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java @@ -67,7 +67,7 @@ public class CategoryPlotMoreCateReportDataContentPane extends CategoryPlotRepor catePane.add(boxPane, BorderLayout.SOUTH); - catePane.setBorder(BorderFactory.createEmptyBorder(0,24,10,15)); + catePane.setBorder(BorderFactory.createEmptyBorder(0,24,10,6)); this.add(catePane, "0,0,2,0"); filterPane = new ChartDataFilterPane(new Bar2DPlot(), parent); @@ -96,7 +96,7 @@ public class CategoryPlotMoreCateReportDataContentPane extends CategoryPlotRepor private TinyFormulaPane addNewCatePane() { final TinyFormulaPane pane = initCategoryBox(StringUtils.EMPTY); - pane.setPreferredSize(new Dimension(106, 16)); + pane.setPreferredSize(new Dimension(100, 16)); pane.registerChangeListener(uiobListener); diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotReportDataContentPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotReportDataContentPane.java index d65f04b616..34489350ac 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotReportDataContentPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotReportDataContentPane.java @@ -34,7 +34,7 @@ public class CategoryPlotReportDataContentPane extends AbstractReportDataContent initEveryPane(); categoryName = initCategoryBox(Inter.getLocText("FR-Chart-Category_Name")); categoryName.setPreferredSize(new Dimension(246,30)); - categoryName.setBorder(BorderFactory.createEmptyBorder(0,24,0,15)); + categoryName.setBorder(BorderFactory.createEmptyBorder(0,24,0,7)); this.add(categoryName, "0,0,2,0"); filterPane = new ChartDataFilterPane(new Bar2DPlot(), parent); JPanel panel = TableLayout4VanChartHelper.createExpandablePaneWithTitle(Inter.getLocText("FR-Chart-Data_Filter"),filterPane); diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/MeterPlotTableDataContentPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/MeterPlotTableDataContentPane.java index b8cb14bed5..a220804e14 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/MeterPlotTableDataContentPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/table/MeterPlotTableDataContentPane.java @@ -47,8 +47,9 @@ public class MeterPlotTableDataContentPane extends AbstractTableDataContentPane JPanel jPanel = TableLayout4VanChartHelper.createExpandablePaneWithTitle(Inter.getLocText("FR-Chart-Data_Filter"),filterPane); JPanel panel = TableLayoutHelper.createTableLayoutPane(components,rowSize,columnSize); - filterPane.setBorder(BorderFactory.createEmptyBorder(10,10,0,15)); + filterPane.setBorder(BorderFactory.createEmptyBorder(0,10,0,15)); panel.setBorder(BorderFactory.createEmptyBorder(10,24,10,15)); + jPanel.setBorder(BorderFactory.createEmptyBorder(0,12,0,5)); this.add(getJSeparator(),BorderLayout.NORTH); this.add(panel,BorderLayout.CENTER); diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartTextAttrPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartTextAttrPane.java index 44c3cf0d5a..e3068e347b 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartTextAttrPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartTextAttrPane.java @@ -148,13 +148,16 @@ public class ChartTextAttrPane extends BasicPane { } protected JPanel getContentPane (JPanel buttonPane) { - double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; double[] columnSize = {f,e}; - double[] rowSize = {p, p, p}; - return TableLayout4VanChartHelper.createGapTableLayoutPane(getComponents(buttonPane), rowSize, columnSize); + return TableLayout4VanChartHelper.createGapTableLayoutPane(getComponents(buttonPane), getRowSize(), columnSize); + } + + protected double[] getRowSize () { + double p = TableLayout.PREFERRED; + return new double[]{p, p, p}; } protected Component[][] getComponents(JPanel buttonPane) { diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ThirdTabPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ThirdTabPane.java index ad03f3c521..c73e97da4c 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ThirdTabPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ThirdTabPane.java @@ -6,24 +6,26 @@ import com.fr.design.beans.BasicBeanPane; import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicScrollPane; import com.fr.design.gui.frpane.AbstractAttrNoScrollPane; -import com.fr.design.gui.ibutton.UIHeadGroup; +import com.fr.design.gui.ibutton.UIButtonGroup; import javax.swing.*; import javax.swing.border.Border; import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.util.List; public abstract class ThirdTabPane extends BasicBeanPane{ private static final long serialVersionUID = 2298609199400393886L; - protected UIHeadGroup tabPane; + protected UIButtonGroup tabPane; protected String[] nameArray; public JPanel centerPane; public CardLayout cardLayout; public List paneList; protected abstract List initPaneList(Plot plot, AbstractAttrNoScrollPane parent); - + public ThirdTabPane(Plot plot, AbstractAttrNoScrollPane parent) { paneList = initPaneList(plot, parent); initAllPane(); @@ -45,16 +47,20 @@ public abstract class ThirdTabPane extends BasicBeanPane{ protected void initTabPane() { if (!paneList.isEmpty()) { - tabPane = new UIHeadGroup(nameArray) { + tabPane = new UIButtonGroup(nameArray); + tabPane.setSelectedIndex(0); + tabPane.setPreferredSize(new Dimension(60 * nameArray.length, 25)); + tabPane.addActionListener(new ActionListener() { @Override - public void tabChanged(int index) { - cardLayout.show(centerPane, nameArray[index]); + public void actionPerformed(ActionEvent e) { + cardLayout.show(centerPane, nameArray[tabPane.getSelectedIndex()]); } - }; + }); + centerPane.setBorder(myBorder); } } - + @Override public void paint(Graphics g) { super.paint(g); @@ -64,7 +70,7 @@ public abstract class ThirdTabPane extends BasicBeanPane{ g2d.drawLine(getWidth() - 2, tabPane.getPreferredSize().height, getWidth() - 2, getHeight() - 1); } } - + protected void initLayout() { this.setLayout(new BorderLayout()); if (!paneList.isEmpty()) { @@ -97,19 +103,19 @@ public abstract class ThirdTabPane extends BasicBeanPane{ }; /** - * + * * @return 中间的内容面板的指定宽度 */ protected int getContentPaneWidth() { return centerPane.getPreferredSize().width; } - + @Override public T updateBean() { return null; } - + protected static class NamePane { private String name; private BasicScrollPane pane; @@ -129,6 +135,6 @@ public abstract class ThirdTabPane extends BasicBeanPane{ public void setPane(BasicScrollPane pane) { this.pane = pane; } - + } } \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/series/UIColorPickerPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/series/UIColorPickerPane.java index 75de4a9b43..945fd4d5e5 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/series/UIColorPickerPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/series/UIColorPickerPane.java @@ -34,12 +34,12 @@ import java.util.List; public class UIColorPickerPane extends BasicPane implements UIObserver { private static final int MARGIN_TOP = 10; private static final int MARGIN_LEFT = 5; - private static final int COLORGROUP_MARGIN_LEFT = 40; + private static final int COLORGROUP_MARGIN_LEFT = 20; private static final int OFF_HEIGHT = 6; private static final int COLOR_REC_HEIGHT = 40; private static final int COLOR_REC_WIDTH = 30; protected static final int TEXTFIELD_HEIGHT = 20; - protected static final int TEXTFIELD_WIDTH = 120; + protected static final int TEXTFIELD_WIDTH = 140; protected static final int UPCONTROLPANE_WIDTH = 230; private static final int LAYOUR_DET = 6; private static final double VALUE = 100; @@ -115,7 +115,8 @@ public class UIColorPickerPane extends BasicPane implements UIObserver { protected JPanel getUpControlPane (Component[][] components) { double p = TableLayout.PREFERRED; double f = TableLayout.FILL; - double[] columnSize = {p, f}; + double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; + double[] columnSize = {f, e}; return TableLayoutHelper.createTableLayoutPane(components, getRowSIze (), columnSize); } diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractBarPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractBarPane.java index 7312dd11fa..c402b97038 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractBarPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractBarPane.java @@ -27,32 +27,25 @@ public abstract class AbstractBarPane extends AbstractChartTypePane { if(barPlot.getyAxis().isPercentage()) { if(barPlot instanceof Bar3DPlot){ typeDemo.get(THREE_D_PERCENT_STACK_COLOMN_CHART).isPressing = true; - lastTypeIndex = THREE_D_PERCENT_STACK_COLOMN_CHART; } else { typeDemo.get(PERCENT_STACK_COLOMN_CHART).isPressing = true; - lastTypeIndex = PERCENT_STACK_COLOMN_CHART; } } else { if(barPlot instanceof Bar3DPlot){ typeDemo.get(THREE_D_STACK_COLOMN_CHART).isPressing = true; - lastTypeIndex = THREE_D_STACK_COLOMN_CHART; } else { typeDemo.get(STACK_COLOMN_CHART).isPressing = true; - lastTypeIndex = STACK_COLOMN_CHART; } } } else { if(barPlot instanceof Bar3DPlot) { if(((Bar3DPlot) barPlot).isHorizontalDrawBar()) { typeDemo.get(THREE_D_COLOMN_HORIZON_DRAW_CHART).isPressing = true; - lastTypeIndex = THREE_D_COLOMN_HORIZON_DRAW_CHART; } else { typeDemo.get(THREE_D_COLOMN_CHART).isPressing = true; - lastTypeIndex = THREE_D_COLOMN_CHART; } } else { typeDemo.get(COLOMN_CHART).isPressing = true; - lastTypeIndex = COLOMN_CHART; } } diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java index 9aef3032f8..a8d359085a 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java @@ -59,7 +59,6 @@ public abstract class AbstractChartTypePane extends FurtherBasicBeanPane{ protected abstract String[] getTypeLayoutPath(); protected abstract String[] getTypeLayoutTipName(); protected int lastStyleIndex = -1; - protected int lastTypeIndex = -1; protected boolean typeChanged = false;//图表类型是否发生变化 protected String[] getNormalLayoutTipName() { @@ -148,12 +147,11 @@ public abstract class AbstractChartTypePane extends FurtherBasicBeanPane{ return null; } - protected void checkTypeChange(){ + protected void checkTypeChange(Plot oldPlot){ if(styleList != null && !styleList.isEmpty()){ for(int i = 0; i < typeDemo.size(); i++){ - if(typeDemo.get(i).isPressing && i != lastTypeIndex){ + if(typeDemo.get(i).isPressing && i != oldPlot.getDetailType()){ typeChanged = true; - lastTypeIndex = i; break; } typeChanged = false; @@ -250,8 +248,9 @@ public abstract class AbstractChartTypePane extends FurtherBasicBeanPane{ * 保存风格,对选中的风格做设置 */ public void updateBean(Chart chart) { - checkTypeChange();//判断图表的类型是否发生变化 - Plot newPlot = this.setSelectedClonedPlotWithCondition(chart.getPlot()); + Plot oldPlot = chart.getPlot(); + Plot newPlot = this.setSelectedClonedPlotWithCondition(oldPlot); + checkTypeChange(oldPlot);//判断图表的类型是否发生变化 if(styleList != null && !styleList.isEmpty()){ if(styleList.get(STYLE_SHADE).isPressing && lastStyleIndex != STYLE_SHADE){ lastStyleIndex = STYLE_SHADE; diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AreaPlotPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AreaPlotPane.java index 91f031fb74..350fb6e212 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AreaPlotPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/AreaPlotPane.java @@ -74,10 +74,8 @@ public class AreaPlotPane extends AbstractChartTypePane{ if(area.isStacked()) { if(area.getyAxis().isPercentage()) { typeDemo.get(PERCENT_AREA_LINE_CHART).isPressing = true; - lastTypeIndex = PERCENT_AREA_LINE_CHART; } else { typeDemo.get(STACK_AREA_CHART).isPressing = true; - lastTypeIndex = STACK_AREA_CHART; } } } else if(plot instanceof Area3DPlot) { @@ -85,10 +83,8 @@ public class AreaPlotPane extends AbstractChartTypePane{ if(threeDPlot.isStacked()) { if(threeDPlot.getyAxis().isPercentage()) { typeDemo.get(PERCENT_3D_AREA_LINE_CHART).isPressing = true; - lastTypeIndex = PERCENT_3D_AREA_LINE_CHART; } else { typeDemo.get(STACK_3D_AREA_CHART).isPressing = true; - lastTypeIndex = STACK_3D_AREA_CHART; } } } diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/DonutPlotPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/DonutPlotPane.java index cba82aff70..4434ae85d9 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/DonutPlotPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/DonutPlotPane.java @@ -67,10 +67,8 @@ public class DonutPlotPane extends AbstractChartTypePane{ Plot plot = chart.getPlot(); if(plot instanceof Donut3DPlot) { typeDemo.get(THREE_D_DONUT_CHART).isPressing = true; - lastTypeIndex = THREE_D_DONUT_CHART; } else { typeDemo.get(DONUT_CHART).isPressing = true; - lastTypeIndex = DONUT_CHART; } checkDemosBackground(); diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/MapPlotPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/MapPlotPane.java index 69d3dd4e4c..467b4184f8 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/MapPlotPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/MapPlotPane.java @@ -137,8 +137,7 @@ public class MapPlotPane extends AbstractChartTypePane { for(ChartImagePane imagePane : typeDemo) { imagePane.isPressing = false; } - typeDemo.get(mapPlot.getMapType().ordinal()).isPressing = true; - lastTypeIndex = mapPlot.getMapType().ordinal();//todo 这个属性是不是可以删了,eason + typeDemo.get(mapPlot.getDetailType()).isPressing = true; } checkDemosBackground(); diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/PiePlotPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/PiePlotPane.java index 94876f7532..f63c11d97e 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/type/PiePlotPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/type/PiePlotPane.java @@ -93,10 +93,8 @@ public class PiePlotPane extends AbstractChartTypePane{ Plot plot = chart.getPlot(); if(plot instanceof Pie3DPlot) { typeDemo.get(THREE_D_PIE_CHART).isPressing = true; - lastTypeIndex = THREE_D_PIE_CHART; } else { typeDemo.get(PIE_CHART).isPressing = true; - lastTypeIndex = PIE_CHART; } checkDemosBackground(); diff --git a/designer_chart/src/com/fr/plugin/chart/area/VanChartAreaPlotPane.java b/designer_chart/src/com/fr/plugin/chart/area/VanChartAreaPlotPane.java index 2e31b4c93f..26f20ffb07 100644 --- a/designer_chart/src/com/fr/plugin/chart/area/VanChartAreaPlotPane.java +++ b/designer_chart/src/com/fr/plugin/chart/area/VanChartAreaPlotPane.java @@ -2,7 +2,6 @@ package com.fr.plugin.chart.area; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; -import com.fr.design.mainframe.chart.gui.type.ChartImagePane; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.plugin.chart.designer.type.AbstractVanChartTypePane; @@ -39,26 +38,13 @@ public class VanChartAreaPlotPane extends AbstractVanChartTypePane { /** * 返回界面标题 + * * @return 界面标题 */ public String title4PopupWindow() { return Inter.getLocText("Plugin-ChartF_NewArea"); } - /** - * 更新界面内容 - */ - public void populateBean(Chart chart) { - for(ChartImagePane imagePane : typeDemo) { - imagePane.isPressing = false; - } - Plot plot = chart.getPlot(); - if(plot instanceof VanChartAreaPlot) { - lastTypeIndex = ((VanChartAreaPlot) plot).getVanChartPlotType().ordinal(); - typeDemo.get(lastTypeIndex).isPressing = true; - } - checkDemosBackground(); - } /** @@ -71,17 +57,17 @@ public class VanChartAreaPlotPane extends AbstractVanChartTypePane { return VanChartAreaPlot.VAN_CHART_AREA_PLOT_ID; } - protected Plot getSelectedClonedPlot(){ + protected Plot getSelectedClonedPlot() { VanChartAreaPlot newPlot = null; Chart[] areaChart = AreaIndependentVanChart.AreaVanChartTypes; - for(int i = 0, len = areaChart.length; i < len; i++){ - if(typeDemo.get(i).isPressing){ - newPlot = (VanChartAreaPlot)areaChart[i].getPlot(); + for (int i = 0, len = areaChart.length; i < len; i++) { + if (typeDemo.get(i).isPressing) { + newPlot = (VanChartAreaPlot) areaChart[i].getPlot(); } } Plot cloned = null; try { - cloned = (Plot)newPlot.clone(); + cloned = (Plot) newPlot.clone(); } catch (CloneNotSupportedException e) { FRLogger.getLogger().error("Error In AreaChart"); } diff --git a/designer_chart/src/com/fr/plugin/chart/bar/VanChartBarPlotPane.java b/designer_chart/src/com/fr/plugin/chart/bar/VanChartBarPlotPane.java index 3156380fa6..7d27a2736d 100644 --- a/designer_chart/src/com/fr/plugin/chart/bar/VanChartBarPlotPane.java +++ b/designer_chart/src/com/fr/plugin/chart/bar/VanChartBarPlotPane.java @@ -2,7 +2,6 @@ package com.fr.plugin.chart.bar; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; -import com.fr.design.mainframe.chart.gui.type.ChartImagePane; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.plugin.chart.column.VanChartColumnPlot; @@ -46,20 +45,6 @@ public class VanChartBarPlotPane extends AbstractVanChartTypePane { return Inter.getLocText("Plugin-ChartF_NewBar"); } - /** - * 更新界面内容 - */ - public void populateBean(Chart chart) { - for(ChartImagePane imagePane : typeDemo) { - imagePane.isPressing = false; - } - Plot plot = chart.getPlot(); - if(plot instanceof VanChartColumnPlot) { - lastTypeIndex = ((VanChartColumnPlot)plot).getVanChartPlotType().ordinal(); - typeDemo.get(lastTypeIndex).isPressing = true; - } - checkDemosBackground(); - } /** * 获取各图表类型界面ID, 本质是plotID diff --git a/designer_chart/src/com/fr/plugin/chart/bubble/VanChartBubbleInteractivePane.java b/designer_chart/src/com/fr/plugin/chart/bubble/VanChartBubbleInteractivePane.java index 62bcb60601..706c0f3b05 100644 --- a/designer_chart/src/com/fr/plugin/chart/bubble/VanChartBubbleInteractivePane.java +++ b/designer_chart/src/com/fr/plugin/chart/bubble/VanChartBubbleInteractivePane.java @@ -24,4 +24,5 @@ public class VanChartBubbleInteractivePane extends VanChartInteractivePaneWithOu } return super.getValueArray(); } + } diff --git a/designer_chart/src/com/fr/plugin/chart/bubble/VanChartBubblePlotPane.java b/designer_chart/src/com/fr/plugin/chart/bubble/VanChartBubblePlotPane.java index 8987a6f9ac..4b28af6606 100644 --- a/designer_chart/src/com/fr/plugin/chart/bubble/VanChartBubblePlotPane.java +++ b/designer_chart/src/com/fr/plugin/chart/bubble/VanChartBubblePlotPane.java @@ -6,7 +6,6 @@ import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; import com.fr.chart.chartglyph.ConditionAttr; import com.fr.chart.chartglyph.ConditionCollection; -import com.fr.design.mainframe.chart.gui.type.ChartImagePane; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.plugin.chart.base.VanChartTools; @@ -50,26 +49,6 @@ public class VanChartBubblePlotPane extends AbstractVanChartTypePane { return Inter.getLocText("Plugin-ChartF_NewBubble"); } - /** - * 更新界面内容 - */ - public void populateBean(Chart chart) { - for(ChartImagePane imagePane : typeDemo) { - imagePane.isPressing = false; - } - - - Plot plot = chart.getPlot(); - if(plot instanceof VanChartBubblePlot && ((VanChartBubblePlot)plot).isForceBubble()){ - lastTypeIndex = BubblePlotType.FORCE.ordinal(); - } else { - lastTypeIndex = BubblePlotType.NORMAL.ordinal(); - } - - typeDemo.get(lastTypeIndex).isPressing = true; - - checkDemosBackground(); - } private void removeDefaultAttr(ConditionAttr conditionAttr, Class targetClass) { DataSeriesCondition attr = conditionAttr.getExisted(targetClass); diff --git a/designer_chart/src/com/fr/plugin/chart/bubble/component/VanChartBubblePane.java b/designer_chart/src/com/fr/plugin/chart/bubble/component/VanChartBubblePane.java index c4e8deba50..8d6d50d29b 100644 --- a/designer_chart/src/com/fr/plugin/chart/bubble/component/VanChartBubblePane.java +++ b/designer_chart/src/com/fr/plugin/chart/bubble/component/VanChartBubblePane.java @@ -30,12 +30,23 @@ public class VanChartBubblePane extends BasicBeanPane { displayNegative = new UIButtonGroup(new String[]{Inter.getLocText("Plugin-ChartF_Open"), Inter.getLocText("Plugin-ChartF_Close")}); + + + this.setLayout(new BorderLayout()); + this.add(getContentPane(), BorderLayout.CENTER); + } + + protected JPanel getContentPane () { double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] row = {p, p, p, p, p}; double[] col = {p, f}; - Component[][] components = new Component[][]{ + return TableLayoutHelper.createTableLayoutPane(getComponent(), row, col); + } + + protected Component[][] getComponent () { + return new Component[][]{ new Component[]{null, null}, new Component[]{new UILabel(Inter.getLocText("Plugin-ChartF_MinDiameter")), minDiameter}, new Component[]{new UILabel(Inter.getLocText("Plugin-ChartF_MaxDiameter")), maxDiameter}, @@ -43,10 +54,6 @@ public class VanChartBubblePane extends BasicBeanPane { new Component[]{new UILabel(Inter.getLocText("Plugin-ChartF_DisplayNegative")), displayNegative}, }; - JPanel content = TableLayoutHelper.createTableLayoutPane(components, row, col); - - this.setLayout(new BorderLayout()); - this.add(content, BorderLayout.CENTER); } public void populateBean(VanChartAttrBubble bubble) { diff --git a/designer_chart/src/com/fr/plugin/chart/bubble/data/VanChartBubblePlotTableDataContentPane.java b/designer_chart/src/com/fr/plugin/chart/bubble/data/VanChartBubblePlotTableDataContentPane.java index aa1a771d2f..8c2607a02e 100644 --- a/designer_chart/src/com/fr/plugin/chart/bubble/data/VanChartBubblePlotTableDataContentPane.java +++ b/designer_chart/src/com/fr/plugin/chart/bubble/data/VanChartBubblePlotTableDataContentPane.java @@ -62,7 +62,7 @@ public class VanChartBubblePlotTableDataContentPane extends AbstractTableDataCon JPanel north = TableLayout4VanChartHelper.createGapTableLayoutPane(components_north,rowSize_north,columnSize_north); north.setBorder(BorderFactory.createEmptyBorder(10, 24, 10, 15)); JPanel filterPane = TableLayout4VanChartHelper.createExpandablePaneWithTitle(Inter.getLocText("FR-Chart-Data_Filter"),dataScreeningPane); - dataScreeningPane.setBorder(BorderFactory.createEmptyBorder(10,5,0,5)); + dataScreeningPane.setBorder(BorderFactory.createEmptyBorder(0,5,0,5)); filterPane.setBorder(BorderFactory.createEmptyBorder(0,5,0,5)); diff --git a/designer_chart/src/com/fr/plugin/chart/column/VanChartColumnPlotPane.java b/designer_chart/src/com/fr/plugin/chart/column/VanChartColumnPlotPane.java index 978823b573..8568d67a55 100644 --- a/designer_chart/src/com/fr/plugin/chart/column/VanChartColumnPlotPane.java +++ b/designer_chart/src/com/fr/plugin/chart/column/VanChartColumnPlotPane.java @@ -2,7 +2,6 @@ package com.fr.plugin.chart.column; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; -import com.fr.design.mainframe.chart.gui.type.ChartImagePane; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.plugin.chart.designer.type.AbstractVanChartTypePane; @@ -46,20 +45,6 @@ public class VanChartColumnPlotPane extends AbstractVanChartTypePane { return Inter.getLocText("Plugin-ChartF_NewColumn"); } - /** - * 更新界面内容 - */ - public void populateBean(Chart chart) { - for(ChartImagePane imagePane : typeDemo) { - imagePane.isPressing = false; - } - Plot plot = chart.getPlot(); - if(plot instanceof VanChartColumnPlot) { - lastTypeIndex = ((VanChartColumnPlot)plot).getVanChartPlotType().ordinal(); - typeDemo.get(lastTypeIndex).isPressing = true; - } - checkDemosBackground(); - } /** * 获取各图表类型界面ID, 本质是plotID diff --git a/designer_chart/src/com/fr/plugin/chart/custom/VanChartCustomPlotPane.java b/designer_chart/src/com/fr/plugin/chart/custom/VanChartCustomPlotPane.java index 843bbfc166..7b3ede54e5 100644 --- a/designer_chart/src/com/fr/plugin/chart/custom/VanChartCustomPlotPane.java +++ b/designer_chart/src/com/fr/plugin/chart/custom/VanChartCustomPlotPane.java @@ -131,12 +131,12 @@ public class VanChartCustomPlotPane extends AbstractVanChartTypePane { public void updateBean(Chart chart) { //保存上次选中的值,其会在super中更新 - int lastState = lastTypeIndex; + int lastState = chart.getPlot().getDetailType(); super.updateBean(chart); //如果上次的状态和这次的装填不在同一个页面,说明同一个图表內切换了,需要情況数据配置 - if (lastState != lastTypeIndex) { + if (lastState != chart.getPlot().getDetailType()) { chart.setFilterDefinition(null); } @@ -219,8 +219,7 @@ public class VanChartCustomPlotPane extends AbstractVanChartTypePane { //获取上次选中的图标 VanChartCustomPlot customPlot = (VanChartCustomPlot) chart.getPlot(); - lastTypeIndex = customPlot.getCustomStyle().ordinal(); - typeDemo.get(lastTypeIndex).isPressing = true; + typeDemo.get(customPlot.getDetailType()).isPressing = true; isCustom = customPlot.getCustomStyle() == CustomStyle.CUSTOM; diff --git a/designer_chart/src/com/fr/plugin/chart/custom/component/VanChartHyperLinkPane.java b/designer_chart/src/com/fr/plugin/chart/custom/component/VanChartHyperLinkPane.java index 277c212de5..2f0e0c628f 100644 --- a/designer_chart/src/com/fr/plugin/chart/custom/component/VanChartHyperLinkPane.java +++ b/designer_chart/src/com/fr/plugin/chart/custom/component/VanChartHyperLinkPane.java @@ -8,6 +8,7 @@ import com.fr.design.ExtraDesignClassManager; import com.fr.design.beans.BasicBeanPane; import com.fr.design.designer.TargetComponent; import com.fr.design.fun.HyperlinkProvider; +import com.fr.design.gui.HyperlinkFilterHelper; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.imenutable.UIMenuNameableCreator; @@ -75,6 +76,11 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { return Inter.getLocText("FR-Designer_Add_Hyperlink"); } + @Override + protected AddItemMenuDef getAddItemMenuDef (NameableCreator[] creators) { + return new AddVanChartItemMenuDef(creators); + } + public void populate(NameJavaScriptGroup nameHyperlink_array) { java.util.List list = new ArrayList(); if (nameHyperlink_array != null) { @@ -218,4 +224,18 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { } return null; } + + protected class AddVanChartItemMenuDef extends AddItemMenuDef { + + public AddVanChartItemMenuDef(NameableCreator[] creators) { + super(creators); + } + + @Override + protected boolean whetherAdd(String itemName) { + return HyperlinkFilterHelper.whetherAddHyperlink4Chart(itemName); + } + } + + } diff --git a/designer_chart/src/com/fr/plugin/chart/designer/AbstractVanChartScrollPane.java b/designer_chart/src/com/fr/plugin/chart/designer/AbstractVanChartScrollPane.java index e3358a84aa..6ddb55372f 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/AbstractVanChartScrollPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/AbstractVanChartScrollPane.java @@ -27,7 +27,7 @@ public abstract class AbstractVanChartScrollPane extends BasicScrollPane { } else { leftcontentPane.setBounds(0, 0, width, height); - leftcontentPane.setBorder(BorderFactory.createMatteBorder(0, 5, 0, 10, original)); + leftcontentPane.setBorder(BorderFactory.createMatteBorder(0, 4, 0, 10, original)); } } public void reloaPane(JPanel pane){ diff --git a/designer_chart/src/com/fr/plugin/chart/designer/TableLayout4VanChartHelper.java b/designer_chart/src/com/fr/plugin/chart/designer/TableLayout4VanChartHelper.java index 18a1c94893..1120d92de3 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/TableLayout4VanChartHelper.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/TableLayout4VanChartHelper.java @@ -7,6 +7,7 @@ import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import javax.swing.*; +import javax.swing.border.Border; import java.awt.*; /** @@ -21,6 +22,7 @@ public class TableLayout4VanChartHelper { public static final double EDIT_AREA_WIDTH =155; public static final double SECOND_EDIT_AREA_WIDTH =143; public static final int COMPONENT_INTERVAL =12; + public static final Border SECOND_EDIT_AREA_BORDER = BorderFactory.createEmptyBorder(0,12,0,0); diff --git a/designer_chart/src/com/fr/plugin/chart/designer/component/VanChartFillStylePane.java b/designer_chart/src/com/fr/plugin/chart/designer/component/VanChartFillStylePane.java index bae3cd5c35..b544ca1d5a 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/component/VanChartFillStylePane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/component/VanChartFillStylePane.java @@ -26,8 +26,9 @@ public class VanChartFillStylePane extends ChartFillStylePane { new Component[]{null,customPane}, }; - return TableLayout4VanChartHelper.createGapTableLayoutPane(components,rowSize,columnSize); - + JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(components,rowSize,columnSize); + panel.setBorder(BorderFactory.createEmptyBorder(5,5,0,0)); + return panel; } @Override public Dimension getPreferredSize() { diff --git a/designer_chart/src/com/fr/plugin/chart/designer/component/VanChartMarkerPane.java b/designer_chart/src/com/fr/plugin/chart/designer/component/VanChartMarkerPane.java index 278e76f7af..a6d0abf1a1 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/component/VanChartMarkerPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/component/VanChartMarkerPane.java @@ -74,7 +74,13 @@ public class VanChartMarkerPane extends BasicPane { } protected BasicBeanPane createCommonMarkerPane() { - return new VanChartCommonMarkerPane(); + return new VanChartCommonMarkerPane(){ + protected double[] getcolumnSize () { + double s = TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH; + double d = TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH; + return new double[] {d, s}; + } + }; } protected void layoutComponents() { diff --git a/designer_chart/src/com/fr/plugin/chart/designer/component/VanChartTooltipContentPane.java b/designer_chart/src/com/fr/plugin/chart/designer/component/VanChartTooltipContentPane.java index 08d5c2f00b..9b38bc7c75 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/component/VanChartTooltipContentPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/component/VanChartTooltipContentPane.java @@ -61,7 +61,7 @@ public class VanChartTooltipContentPane extends BasicBeanPane= 0; i -= 2) { + if (listeners[i] == ChangeListener.class) { + ((ChangeListener) listeners[i + 1]).stateChanged(new ChangeEvent(this)); + } + } + + } + + /** + * 增加监听事件 + * @param l 监听的对象 + */ + public void addChangeListener(ChangeListener l) { + this.listenerList.add(ChangeListener.class, l); + } + + @Override + protected JPanel getLeftTopPane(UIToolbar topToolBar) { + double p = TableLayout.PREFERRED; + double f = TableLayout.FILL; + double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; + double[] columnSize = {f, e}; + double[] rowSize = {p}; + Component[][] components = new Component[][]{ + new Component[]{new UILabel(getAddItemText()), topToolBar}, + }; + return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); } @Override @@ -35,7 +110,7 @@ public abstract class VanChartUIListControlPane extends UIListControlPane { return; } update((Plot) plot); - DesignerContext.getDesignerFrame().getSelectedJTemplate().fireTargetModified(); + fireChanged();//图表属性改变,响应事件 } protected abstract void update(Plot plot); @@ -43,7 +118,7 @@ public abstract class VanChartUIListControlPane extends UIListControlPane { //-------------------连续弹窗问题 start-------------------// - public void populate (Nameable[] nameableArray) { + public void populate(Nameable[] nameableArray) { //特殊处理,使用instanceof判断,弹出不同的面板 if (SwingUtilities.getWindowAncestor(this) instanceof JDialog) { popupEditDialog = new HyperDialog(cardPane); @@ -93,7 +168,7 @@ public abstract class VanChartUIListControlPane extends UIListControlPane { //取消 addCancelButton(buttonsPane); - controlPane.setBorder(BorderFactory.createEmptyBorder(10,0,10,0)); + controlPane.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); return controlPane; } diff --git a/designer_chart/src/com/fr/plugin/chart/designer/component/format/FormatPaneWithOutFont.java b/designer_chart/src/com/fr/plugin/chart/designer/component/format/FormatPaneWithOutFont.java index 228c22ae8f..54ce517108 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/component/format/FormatPaneWithOutFont.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/component/format/FormatPaneWithOutFont.java @@ -39,6 +39,6 @@ public class FormatPaneWithOutFont extends FormatPane { if (getTypeComboBox().getSelectedIndex() == 0) { return new Dimension((int)getTypeComboBox().getPreferredSize().getWidth(), HEIGHT); } - return super.getPreferredSize(); + return new Dimension((int)super.getPreferredSize().getWidth(), (int)super.getPreferredSize().getHeight()); } } diff --git a/designer_chart/src/com/fr/plugin/chart/designer/component/marker/VanChartCommonMarkerPane.java b/designer_chart/src/com/fr/plugin/chart/designer/component/marker/VanChartCommonMarkerPane.java index a8f3567117..226a6fb8e3 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/component/marker/VanChartCommonMarkerPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/component/marker/VanChartCommonMarkerPane.java @@ -110,15 +110,20 @@ public class VanChartCommonMarkerPane extends BasicBeanPane double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; double d = TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH; double[] row = {p, p, p}; - double[] col = {d, e}; Component[][] components = getUseComponent(); - JPanel jPanel = TableLayout4VanChartHelper.createGapTableLayoutPane(components, row, col); + JPanel jPanel = TableLayout4VanChartHelper.createGapTableLayoutPane(components, row, getcolumnSize()); this.add(jPanel); } + protected double[] getcolumnSize () { + double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; + double d = TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH; + return new double[] {d, e}; + } + protected Marker[] getMarkers() { return getNormalMarkers(); } diff --git a/designer_chart/src/com/fr/plugin/chart/designer/other/AutoRefreshPane.java b/designer_chart/src/com/fr/plugin/chart/designer/other/AutoRefreshPane.java index b47ff08a25..386a35378c 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/other/AutoRefreshPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/other/AutoRefreshPane.java @@ -30,8 +30,6 @@ import java.awt.event.ActionListener; */ public class AutoRefreshPane extends BasicBeanPane { - private static final int P_W = 320; - private static final int P_H = 460; private VanChart chart; private UIButtonGroup moreLabel; @@ -128,7 +126,7 @@ public class AutoRefreshPane extends BasicBeanPane { final VanChartPlotTooltipPane pane = PlotFactory.createPlotRefreshTooltipPane(chart.getPlot()); pane.populate(chart.getRefreshMoreLabel().getAttrTooltip()); - UIDialog dialog = pane.showUnsizedWindow(SwingUtilities.getWindowAncestor(new JPanel()), new DialogActionListener() { + UIDialog dialog = pane.showUnsizedWindow(SwingUtilities.getWindowAncestor(contentPane), new DialogActionListener() { @Override public void doOk() { @@ -140,7 +138,7 @@ public class AutoRefreshPane extends BasicBeanPane { } }); - dialog.setSize(P_W, P_H); + dialog.setModal(true); dialog.setVisible(true); } }); diff --git a/designer_chart/src/com/fr/plugin/chart/designer/other/HyperlinkMapFactory.java b/designer_chart/src/com/fr/plugin/chart/designer/other/HyperlinkMapFactory.java index d8fd27b1e3..2ca0e2504f 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/other/HyperlinkMapFactory.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/other/HyperlinkMapFactory.java @@ -236,8 +236,6 @@ public class HyperlinkMapFactory { startTime.setEnabled(false); ConstantsEditor endTime = new ConstantsEditor(Inter.getLocText("Plugin-ChartF_End_Time"), new Formula("END_TIME")); endTime.setEnabled(false); - ConstantsEditor duration = new ConstantsEditor(Inter.getLocText("Plugin-ChartF_Duration_Time"), new Formula("DURATION")); - duration.setEnabled(false); ConstantsEditor progress = new ConstantsEditor(Inter.getLocText("Plugin-ChartF_Process"), new Formula("PROGRESS")); progress.setEnabled(false); @@ -246,7 +244,6 @@ public class HyperlinkMapFactory { lists.add(series); lists.add(startTime); lists.add(endTime); - lists.add(duration); lists.add(progress); return lists; diff --git a/designer_chart/src/com/fr/plugin/chart/designer/other/VanChartConditionListControlPane.java b/designer_chart/src/com/fr/plugin/chart/designer/other/VanChartConditionListControlPane.java index b2945c4111..d61198552c 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/other/VanChartConditionListControlPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/other/VanChartConditionListControlPane.java @@ -29,6 +29,7 @@ public class VanChartConditionListControlPane extends VanChartUIListControlPane public void populate(Nameable[] nameableArray, Class showPane) { initComponentPane(); + this.setBorder(null); NameObjectCreator[] creators = new NameObjectCreator[]{new NameObjectCreator(Inter.getLocText("Condition_Attributes"), ConditionAttr.class, showPane)}; refreshNameableCreator(creators); super.populate(nameableArray); diff --git a/designer_chart/src/com/fr/plugin/chart/designer/other/VanChartInteractivePane.java b/designer_chart/src/com/fr/plugin/chart/designer/other/VanChartInteractivePane.java index 41cd7aa025..5e2b1fd9b0 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/other/VanChartInteractivePane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/other/VanChartInteractivePane.java @@ -95,7 +95,7 @@ public class VanChartInteractivePane extends AbstractVanChartScrollPane { Component[][] components = new Component[][]{ - new Component[]{createToolBarPane(new double[]{p,p,p,p,p}, columnSize),null}, + new Component[]{createToolBarPane(getToolBarRowSize(), columnSize),null}, new Component[]{createAnimationPane(),null}, new Component[]{createAxisRotationPane(new double[]{p,p}, columnSize, plot),null}, new Component[]{createZoomPane(new double[]{p,p,p}, columnSize, plot),null}, @@ -142,10 +142,9 @@ public class VanChartInteractivePane extends AbstractVanChartScrollPane { return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Inter.getLocText("Chart-Use_Zoom"), panel); } + protected JPanel getzoomTypePane(UIButtonGroup zoomType) { - JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(Inter.getLocText("Plugin-ChartF_ZoomType"), zoomType, TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH); - panel.setBorder(BorderFactory.createEmptyBorder(0,12,0,0)); - return panel; + return TableLayout4VanChartHelper.createGapTableLayoutPane(Inter.getLocText("Plugin-ChartF_ZoomType"), zoomType); } protected JPanel createZoomPaneContent(JPanel zoomWidgetPane, JPanel zoomGesturePane, JPanel changeEnablePane, JPanel zoomTypePane, VanChartPlot plot) { @@ -195,6 +194,11 @@ public class VanChartInteractivePane extends AbstractVanChartScrollPane { return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Inter.getLocText("Plugin-ChartF_ToolBar"), panel); } + protected double[] getToolBarRowSize () { + double p = TableLayout.PREFERRED; + return new double[]{p,p,p,p,p}; + } + protected Component[][] createToolBarComponents() { return new Component[][]{ new Component[]{new UILabel(Inter.getLocText("Plugin-ChartF_Content")),isSort}, @@ -240,7 +244,7 @@ public class VanChartInteractivePane extends AbstractVanChartScrollPane { private void checkZoomPane() { boolean zoomWidgetEnabled = zoomWidget.getSelectedIndex() == 0; changeEnablePane.setVisible(zoomWidgetEnabled); - zoomTypePane.setVisible(!zoomWidgetEnabled); + zoomType.setEnabled(!zoomWidgetEnabled); } @Override diff --git a/designer_chart/src/com/fr/plugin/chart/designer/other/VanChartInteractivePaneWithOutSort.java b/designer_chart/src/com/fr/plugin/chart/designer/other/VanChartInteractivePaneWithOutSort.java index 777a4477f3..6b4c57a863 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/other/VanChartInteractivePaneWithOutSort.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/other/VanChartInteractivePaneWithOutSort.java @@ -1,5 +1,7 @@ package com.fr.plugin.chart.designer.other; +import com.fr.design.layout.TableLayout; + import java.awt.*; /** @@ -7,8 +9,15 @@ import java.awt.*; * 没有排序选择 */ public class VanChartInteractivePaneWithOutSort extends VanChartInteractivePane { + @Override protected Component[][] createToolBarComponents() { return super.createToolBarComponentsWithOutSort(); } + + @Override + protected double[] getToolBarRowSize() { + double p = TableLayout.PREFERRED; + return new double[]{p, p, p}; + } } diff --git a/designer_chart/src/com/fr/plugin/chart/designer/style/VanChartRangeLegendPane.java b/designer_chart/src/com/fr/plugin/chart/designer/style/VanChartRangeLegendPane.java index 0c8fd37037..d8f527400d 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/style/VanChartRangeLegendPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/style/VanChartRangeLegendPane.java @@ -102,6 +102,7 @@ public class VanChartRangeLegendPane extends VanChartPlotLegendPane { initLegendTypeButtonListener(); JPanel legendTypeButtonWithTilePane = createTableLayoutPaneWithTitle(Inter.getLocText("Plugin-ChartF_Legend_Form"),legendTypeButton); + legendTypeButtonWithTilePane.setBorder(BorderFactory.createEmptyBorder(0,5,0,0)); rangeLegendPane = createRangeLegendPane(); diff --git a/designer_chart/src/com/fr/plugin/chart/designer/style/axis/VanChartAxisScrollPaneWithTypeSelect.java b/designer_chart/src/com/fr/plugin/chart/designer/style/axis/VanChartAxisScrollPaneWithTypeSelect.java index fcde1ac9db..ea3831b39a 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/style/axis/VanChartAxisScrollPaneWithTypeSelect.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/style/axis/VanChartAxisScrollPaneWithTypeSelect.java @@ -57,7 +57,7 @@ public class VanChartAxisScrollPaneWithTypeSelect extends AbstractVanChartScroll protected void initLayout() { this.setLayout(new BorderLayout(0,6)); JPanel northPane = TableLayout4VanChartHelper.createGapTableLayoutPane(Inter.getLocText("Plugin-ChartF_type"),jcb); - northPane.setBorder(BorderFactory.createEmptyBorder(0,10,10,10)); + northPane.setBorder(BorderFactory.createEmptyBorder(0,5,0,0)); this.add(northPane, BorderLayout.NORTH); this.add(cardPane, BorderLayout.CENTER); diff --git a/designer_chart/src/com/fr/plugin/chart/designer/style/axis/VanChartBaseAxisPane.java b/designer_chart/src/com/fr/plugin/chart/designer/style/axis/VanChartBaseAxisPane.java index dedeafd87c..9a5c0ee4da 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/style/axis/VanChartBaseAxisPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/style/axis/VanChartBaseAxisPane.java @@ -97,11 +97,13 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; + double s = TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH; double[] columnSize = {f, e}; + double[] column = {f, s}; double[] rowSize = {p, p, p, p, p, p, p,p}; Component[][] components = new Component[][]{ new Component[]{createTitlePane(new double[]{p, p, p, p, p, p}, columnSize, isXAxis), null}, - new Component[]{createLabelPane(new double[]{p, p}, columnSize), null}, + new Component[]{createLabelPane(new double[]{p, p}, column), null}, new Component[]{createLineStylePane(new double[]{p, p, p, p, p}, columnSize), null}, new Component[]{createAxisPositionPane(new double[]{p, p, p}, columnSize, isXAxis), null}, new Component[]{createDisplayStrategy(new double[]{p, p, p}, columnSize), null}, @@ -132,7 +134,7 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { new Component[]{new UILabel(Inter.getLocText("Plugin-ChartF_TextRotation")),titleTextRotation}, }; - JPanel panel = TableLayoutHelper.createTableLayoutPane(components, row, col); + JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(components, row, col); return TableLayout4VanChartHelper.createExpandablePaneWithTitle(PaneTitleConstants.CHART_STYLE_TITLE_TITLE, panel); } @@ -155,7 +157,7 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { protected JPanel createLabelPane(double[] row, double[] col){ showLabel = new UIButtonGroup(new String[]{Inter.getLocText("Chart-Use_Show"), Inter.getLocText("Plugin-ChartF_Hidden")}); - labelTextAttrPane = new ChartTextAttrPane(); + labelTextAttrPane = getChartTextAttrPane(); labelTextRotation = new UINumberDragPane(-ROTATION_MAX,ROTATION_MAX); labelGapStyle = new UIButtonGroup(new String[]{Inter.getLocText("Plugin-ChartF_Automatic"),Inter.getLocText("Plugin-ChartF_Fixed")}); @@ -164,8 +166,8 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { new Component[]{new UILabel(Inter.getLocText("Plugin-ChartF_TextRotation")), labelTextRotation}, new Component[]{new UILabel(Inter.getLocText("ChartF-Label_Interval")), labelGapStyle}, }; - JPanel panel = TableLayoutHelper.createTableLayoutPane(gapComponents, row, col); - labelGapValuePane= TableLayout4VanChartHelper.createGapTableLayoutPane(Inter.getLocText(" "),labelGapValue); + JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(gapComponents, row, col); + labelGapValuePane= TableLayout4VanChartHelper.createGapTableLayoutPane(Inter.getLocText(""),labelGapValue, TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH); JPanel gapPanel = new JPanel(new BorderLayout()); gapPanel.add(panel, BorderLayout.CENTER); gapPanel.add(labelGapValuePane, BorderLayout.SOUTH); @@ -196,6 +198,22 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { return TableLayout4VanChartHelper.createExpandablePaneWithTitle(PaneTitleConstants.CHART_STYLE_LABEL_TITLE, jPanel); } + protected ChartTextAttrPane getChartTextAttrPane(){ + return new ChartTextAttrPane(){ + + @Override + protected JPanel getContentPane (JPanel buttonPane) { + double p = TableLayout.PREFERRED; + double f = TableLayout.FILL; + double e = TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH; + double[] columnSize = {f, e}; + double[] rowSize = {p, p, p}; + + return TableLayout4VanChartHelper.createGapTableLayoutPane(getComponents(buttonPane), rowSize, columnSize); + } + }; + } + protected JPanel createLineStylePane(double[] row, double[] col){ axisLineStyle = createLineComboBox(); axisLineColor = new ColorSelectBox(100); @@ -204,7 +222,7 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { mainTick = new UIButtonGroup(strings, values); secondTick = new UIButtonGroup(strings, values); - JPanel panel = TableLayoutHelper.createTableLayoutPane(getLineStylePaneComponents(), row, col); + JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(getLineStylePaneComponents(), row, col); return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Inter.getLocText("Plugin-ChartF_AxisLineStyle"), panel); } @@ -231,7 +249,7 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { new Component[]{new UILabel(Inter.getLocText("FR-Designer_AxisReversed")),reversed}, } ; - JPanel panel = TableLayoutHelper.createTableLayoutPane(components, row, col); + JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(components, row, col); return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Inter.getLocText("Chart-Layout_Position"), panel); } diff --git a/designer_chart/src/com/fr/plugin/chart/designer/style/axis/VanChartTimeAxisPane.java b/designer_chart/src/com/fr/plugin/chart/designer/style/axis/VanChartTimeAxisPane.java index ed85071a6d..65b71bedcc 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/style/axis/VanChartTimeAxisPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/style/axis/VanChartTimeAxisPane.java @@ -59,11 +59,13 @@ public class VanChartTimeAxisPane extends VanChartBaseAxisPane { double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; + double s = TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH; double[] columnSize = {f, e}; + double[] column = {f, s}; double[] rowSize = {p,p,p,p,p,p,p,p,p,p,p,p,p,p}; Component[][] components = new Component[][]{ new Component[]{createTitlePane(new double[]{p, p, p, p, p,p}, columnSize, isXAxis),null}, - new Component[]{createLabelPane(new double[]{p, p}, columnSize),null}, + new Component[]{createLabelPane(new double[]{p, p}, column),null}, new Component[]{createValueDefinition(),null}, new Component[]{createLineStylePane(new double[]{p, p,p,p,p}, columnSize),null}, new Component[]{createAxisPositionPane(new double[]{p, p}, columnSize, isXAxis),null}, diff --git a/designer_chart/src/com/fr/plugin/chart/designer/style/axis/VanChartValueAxisPane.java b/designer_chart/src/com/fr/plugin/chart/designer/style/axis/VanChartValueAxisPane.java index 6eb199983d..3749f77ac2 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/style/axis/VanChartValueAxisPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/style/axis/VanChartValueAxisPane.java @@ -42,11 +42,13 @@ public class VanChartValueAxisPane extends VanChartBaseAxisPane { double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; + double s = TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH; double[] columnSize = {f, e}; + double[] column = {f, s}; double[] rowSize = {p,p,p,p,p,p,p,p,p,p,p,p,p,p}; Component[][] components = new Component[][]{ new Component[]{createTitlePane(new double[]{p, p, p, p, p, p}, columnSize, isXAxis), null}, - new Component[]{createLabelPane(new double[]{p, p}, columnSize), null}, + new Component[]{createLabelPane(new double[]{p, p}, column), null}, new Component[]{createMinMaxValuePane(new double[]{p, p}, columnSize), null}, new Component[]{createLineStylePane(new double[]{p, p, p, p, p}, columnSize), null}, new Component[]{createAxisPositionPane(new double[]{p, p, p}, columnSize, isXAxis), null}, diff --git a/designer_chart/src/com/fr/plugin/chart/designer/style/axis/component/VanChartAxisButtonPane.java b/designer_chart/src/com/fr/plugin/chart/designer/style/axis/component/VanChartAxisButtonPane.java index 8cb5793b17..13f4dc46ae 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/style/axis/component/VanChartAxisButtonPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/style/axis/component/VanChartAxisButtonPane.java @@ -16,7 +16,11 @@ import com.fr.plugin.chart.designer.style.axis.VanChartAxisPane; import javax.swing.*; import java.awt.*; -import java.awt.event.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.util.ArrayList; @@ -53,7 +57,7 @@ public class VanChartAxisButtonPane extends BasicBeanPane { this.add(eastPane, BorderLayout.EAST); buttonPane = new JPanel(); - buttonPane.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 0)); + buttonPane.setBorder(BorderFactory.createEmptyBorder(0, 5, 10, 0)); this.add(buttonPane, BorderLayout.CENTER); addButton.addActionListener(addListener); diff --git a/designer_chart/src/com/fr/plugin/chart/designer/style/axis/gauge/VanChartGaugeDetailAxisPane.java b/designer_chart/src/com/fr/plugin/chart/designer/style/axis/gauge/VanChartGaugeDetailAxisPane.java index d4ef127d41..48eb4c73d3 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/style/axis/gauge/VanChartGaugeDetailAxisPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/style/axis/gauge/VanChartGaugeDetailAxisPane.java @@ -5,7 +5,6 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.chart.PaneTitleConstants; -import com.fr.design.mainframe.chart.gui.style.ChartTextAttrPane; import com.fr.design.style.color.ColorSelectBox; import com.fr.general.Inter; import com.fr.plugin.chart.attr.axis.VanChartAxis; @@ -77,7 +76,7 @@ public class VanChartGaugeDetailAxisPane extends VanChartValueAxisPane{ protected JPanel createLabelPane(double[] row, double[] col){ showLabel = new UIButtonGroup(new String[]{Inter.getLocText("Chart-Use_Show"), Inter.getLocText("Plugin-ChartF_Hidden")}); - labelTextAttrPane = new ChartTextAttrPane(); + labelTextAttrPane = getChartTextAttrPane(); labelPanel = new JPanel(new BorderLayout()); labelPanel.add(labelTextAttrPane); labelPanel.setBorder(BorderFactory.createEmptyBorder(0,15,0,0)); diff --git a/designer_chart/src/com/fr/plugin/chart/designer/style/axis/radar/VanChartRadarXAxisPane.java b/designer_chart/src/com/fr/plugin/chart/designer/style/axis/radar/VanChartRadarXAxisPane.java index eae979c829..cb7c47d770 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/style/axis/radar/VanChartRadarXAxisPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/style/axis/radar/VanChartRadarXAxisPane.java @@ -24,10 +24,12 @@ public class VanChartRadarXAxisPane extends VanChartBaseAxisPane { double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; + double s = TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH; double[] columnSize = {f, e}; + double[] column = {f, s}; double[] rowSize = {p,p,p,p,p,p}; Component[][] components = new Component[][]{ - new Component[]{createLabelPane(new double[]{p, p}, columnSize),null}, + new Component[]{createLabelPane(new double[]{p, p}, column),null}, new Component[]{createLineStylePane(new double[]{p, p, p, p}, columnSize),null}, new Component[]{createValueStylePane(),null}, }; diff --git a/designer_chart/src/com/fr/plugin/chart/designer/style/axis/radar/VanChartRadarYAxisPane.java b/designer_chart/src/com/fr/plugin/chart/designer/style/axis/radar/VanChartRadarYAxisPane.java index 054b05f7b1..3da22d6c36 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/style/axis/radar/VanChartRadarYAxisPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/style/axis/radar/VanChartRadarYAxisPane.java @@ -33,10 +33,12 @@ public class VanChartRadarYAxisPane extends VanChartValueAxisPane { double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; + double s = TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH; double[] columnSize = {f, e}; + double[] column = {f, s}; double[] rowSize = {p, p, p, p, p, p, p, p}; Component[][] components = new Component[][]{ - new Component[]{createLabelPane(new double[]{p, p}, columnSize), null}, + new Component[]{createLabelPane(new double[]{p, p}, column), null}, new Component[]{createMinMaxValuePane(new double[]{p, p, p}, columnSize), null}, new Component[]{createLineStylePane(new double[]{p, p, p, p}, columnSize), null}, new Component[]{createValueStylePane(), null}, diff --git a/designer_chart/src/com/fr/plugin/chart/designer/style/background/AlertLineListControlPane.java b/designer_chart/src/com/fr/plugin/chart/designer/style/background/AlertLineListControlPane.java index 3dfb4f4302..6857302d08 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/style/background/AlertLineListControlPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/style/background/AlertLineListControlPane.java @@ -1,6 +1,7 @@ package com.fr.plugin.chart.designer.style.background; import com.fr.chart.chartattr.Plot; +import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.ShortCut4JControlPane; import com.fr.general.ComparatorUtils; @@ -52,7 +53,7 @@ public class AlertLineListControlPane extends VanChartUIListControlPane { List yAxisList = rectanglePlot.getYAxisList(); String[] axisNames = DefaultAxisHelper.getAllAxisNames(xAxisList, yAxisList); - ChartNameObjectCreator[] creators = {new ChartNameObjectCreator(axisNames, Inter.getLocText("Plugin-ChartF_AlertLine"), VanChartAlertValue.class, VanChartAlertValuePane.class)}; + ChartNameObjectCreator[] creators = {new ChartNameObjectCreator(getAlertAxisName(axisNames), Inter.getLocText("Plugin-ChartF_AlertLine"), VanChartAlertValue.class, getAlertPaneClass())}; refreshNameableCreator(creators); @@ -111,4 +112,12 @@ public class AlertLineListControlPane extends VanChartUIListControlPane { axis.setAlertValues(axisAlerts); } } + + protected Class getAlertPaneClass() { + return VanChartAlertValuePane.class; + } + + protected String[] getAlertAxisName(String[] axisNames) { + return axisNames; + } } diff --git a/designer_chart/src/com/fr/plugin/chart/designer/style/background/BackgroundListControlPane.java b/designer_chart/src/com/fr/plugin/chart/designer/style/background/BackgroundListControlPane.java index de8a35d53f..e288e51a54 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/style/background/BackgroundListControlPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/style/background/BackgroundListControlPane.java @@ -1,6 +1,7 @@ package com.fr.plugin.chart.designer.style.background; import com.fr.chart.chartattr.Plot; +import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.ShortCut4JControlPane; import com.fr.general.ComparatorUtils; @@ -36,7 +37,7 @@ public class BackgroundListControlPane extends VanChartUIListControlPane { @Override public String getAddItemText() { - return Inter.getLocText("Plugin-ChartF_CustomIntervalBackground"); + return Inter.getLocText("Plugin-ChartF_Add_Interval"); } protected ShortCut4JControlPane[] createShortcuts() { @@ -54,7 +55,7 @@ public class BackgroundListControlPane extends VanChartUIListControlPane { List yAxisList = rectanglePlot.getYAxisList(); String[] axisNames = DefaultAxisHelper.getAllAxisNames(xAxisList, yAxisList); - BackgroundNameObjectCreator[] creators = {new BackgroundNameObjectCreator(axisNames, Inter.getLocText("Plugin-ChartF_CustomIntervalBackground"), VanChartCustomIntervalBackground.class, VanChartCustomIntervalBackgroundPane.class)}; + BackgroundNameObjectCreator[] creators = {new BackgroundNameObjectCreator(getCustomIntervalBackgroundAxisName(axisNames), Inter.getLocText("Plugin-ChartF_CustomIntervalBackground"), VanChartCustomIntervalBackground.class, getIntervalPaneClass())}; refreshNameableCreator(creators); @@ -123,4 +124,12 @@ public class BackgroundListControlPane extends VanChartUIListControlPane { axis.setCustomIntervalBackgroundArray(axisCustomBackground); } } + + protected Class getIntervalPaneClass() { + return VanChartCustomIntervalBackgroundPane.class; + } + + protected String[] getCustomIntervalBackgroundAxisName(String[] axisNames) { + return axisNames; + } } diff --git a/designer_chart/src/com/fr/plugin/chart/designer/style/background/VanChartAreaPane.java b/designer_chart/src/com/fr/plugin/chart/designer/style/background/VanChartAreaPane.java index 3388596ff1..b30d1eb646 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/style/background/VanChartAreaPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/style/background/VanChartAreaPane.java @@ -36,6 +36,7 @@ public class VanChartAreaPane extends ThirdTabPane implements AutoSele JPanel pane = new JPanel(new FlowLayout(FlowLayout.LEADING, 0, 0)); if (nameArray.length > 1) { pane.add(tabPane); + tabPane.setBorder(BorderFactory.createEmptyBorder(0,5,0,0)); this.add(pane, BorderLayout.NORTH); } } diff --git a/designer_chart/src/com/fr/plugin/chart/designer/style/background/VanChartAxisAreaPane.java b/designer_chart/src/com/fr/plugin/chart/designer/style/background/VanChartAxisAreaPane.java index 87e6062e97..886a461efe 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/style/background/VanChartAxisAreaPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/style/background/VanChartAxisAreaPane.java @@ -44,13 +44,14 @@ public class VanChartAxisAreaPane extends BasicBeanPane { double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; + double s = TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH; double[] columnSize = {f}; double[] rowSize = {p, p, p}; Component[][] components = new Component[][]{ new Component[]{createGridLinePane(new double[]{p, p, p}, new double[]{f, e})}, new Component[]{createAlertLinePane()}, - new Component[]{createIntervalPane(new double[]{p, p, p, p}, new double[]{f, e})}, + new Component[]{createIntervalPane(new double[]{p, p, p, p}, new double[]{f, s})}, }; JPanel panel = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); this.setLayout(new BorderLayout()); @@ -74,19 +75,24 @@ public class VanChartAxisAreaPane extends BasicBeanPane { } protected JPanel createAlertLinePane() { - alertLine = new AlertLineListControlPane(); + alertLine = getAlertLinePane(); JPanel panel = TableLayout4VanChartHelper.createExpandablePaneWithTitle(Inter.getLocText("Plugin-ChartF_AlertLine"), alertLine); alertLine.setBorder(BorderFactory.createEmptyBorder(10, 5, 0, 0)); return panel; } + protected AlertLineListControlPane getAlertLinePane () { + return new AlertLineListControlPane(); + } + protected JPanel createIntervalPane(double[] row, double[] col) { isDefaultIntervalBackground = new UIButtonGroup(new String[]{Inter.getLocText("Plugin-ChartF_Default_Interval"), Inter.getLocText("Plugin-ChartF_CustomIntervalBackground")}); horizontalColorBackground = new ColorSelectBox(100); verticalColorBackground = new ColorSelectBox(100); Component[][] components = getIntervalPaneComponents(); JPanel defaultPane = TableLayoutHelper.createTableLayoutPane(components, row, col); - customIntervalBackground = new BackgroundListControlPane(); + defaultPane.setBorder(BorderFactory.createEmptyBorder(0,12,0,0)); + customIntervalBackground = getBackgroundListControlPane(); cardLayout = new CardLayout(); centerPane = new JPanel(cardLayout); @@ -107,6 +113,10 @@ public class VanChartAxisAreaPane extends BasicBeanPane { return panel; } + protected BackgroundListControlPane getBackgroundListControlPane() { + return new BackgroundListControlPane(); + } + protected Component[][] getIntervalPaneComponents() { return new Component[][]{ new Component[]{null, null}, diff --git a/designer_chart/src/com/fr/plugin/chart/designer/style/background/radar/VanChartRadarAxisAreaPane.java b/designer_chart/src/com/fr/plugin/chart/designer/style/background/radar/VanChartRadarAxisAreaPane.java index b215406a9d..558f4568d4 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/style/background/radar/VanChartRadarAxisAreaPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/style/background/radar/VanChartRadarAxisAreaPane.java @@ -3,8 +3,8 @@ package com.fr.plugin.chart.designer.style.background.radar; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.ilable.UILabel; import com.fr.general.Inter; -import com.fr.plugin.chart.attr.axis.VanChartAlertValue; -import com.fr.plugin.chart.attr.axis.VanChartCustomIntervalBackground; +import com.fr.plugin.chart.designer.style.background.AlertLineListControlPane; +import com.fr.plugin.chart.designer.style.background.BackgroundListControlPane; import com.fr.plugin.chart.designer.style.background.VanChartAxisAreaPane; import java.awt.*; @@ -30,19 +30,29 @@ public class VanChartRadarAxisAreaPane extends VanChartAxisAreaPane { }; } - protected Class getAlertPaneClass() { - return VanChartRadarAlertValuePane.class; - } + @Override + protected AlertLineListControlPane getAlertLinePane() { + return new AlertLineListControlPane(){ + protected Class getAlertPaneClass() { + return VanChartRadarAlertValuePane.class; + } - protected void setAlertDemoAxisName(VanChartAlertValue demo, String[] axisNames) { - demo.setAxisName(axisNames[axisNames.length - 1]);//默认y轴,居左居右 + protected String[] getAlertAxisName(String[] axisNames) { + return new String[]{axisNames[axisNames.length - 1]};//默认y轴,居左居右 + } + }; } - protected Class getIntervalPaneClass() { - return VanChartRadarCustomIntervalBackgroundPane.class; - } + @Override + protected BackgroundListControlPane getBackgroundListControlPane() { + return new BackgroundListControlPane(){ + protected Class getIntervalPaneClass() { + return VanChartRadarCustomIntervalBackgroundPane.class; + } - protected void setCustomIntervalBackgroundDemoAxisName(VanChartCustomIntervalBackground demo, String[] axisNames) { - demo.setAxisName(axisNames[axisNames.length - 1]); + protected String[] getCustomIntervalBackgroundAxisName(String[] axisNames) { + return new String[]{axisNames[axisNames.length - 1]}; + } + }; } } \ No newline at end of file diff --git a/designer_chart/src/com/fr/plugin/chart/designer/style/label/VanChartGaugeCateOrPercentLabelDetailPane.java b/designer_chart/src/com/fr/plugin/chart/designer/style/label/VanChartGaugeCateOrPercentLabelDetailPane.java index ee586c91f0..21d6521b9f 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/style/label/VanChartGaugeCateOrPercentLabelDetailPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/style/label/VanChartGaugeCateOrPercentLabelDetailPane.java @@ -1,6 +1,10 @@ package com.fr.plugin.chart.designer.style.label; import com.fr.chart.chartattr.Plot; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.layout.TableLayout; +import com.fr.design.mainframe.chart.gui.style.ChartTextAttrPane; +import com.fr.general.Inter; import com.fr.plugin.chart.designer.TableLayout4VanChartHelper; import com.fr.plugin.chart.designer.component.label.LabelContentPaneWithCate; import com.fr.plugin.chart.designer.component.label.LabelContentPaneWithPercent; @@ -15,6 +19,7 @@ import java.awt.*; * 仪表盘的分类(多指针时)或者百分比标签 */ public class VanChartGaugeCateOrPercentLabelDetailPane extends VanChartGaugeLabelDetailPane { + //todo 重新整理这个面板 private static final long serialVersionUID = 5176535960949074945L; @@ -24,6 +29,10 @@ public class VanChartGaugeCateOrPercentLabelDetailPane extends VanChartGaugeLabe super(plot, parent); } + protected double[] getLabelPaneRowSize(Plot plot, double p) { + return hasLabelPosition(plot) ? new double[]{p,p,p} : new double[]{p,p}; + } + private void initGaugeStyle(Plot plot) { if(gaugeStyle == null){ gaugeStyle = ((VanChartGaugePlot)plot).getGaugeStyle(); @@ -45,6 +54,8 @@ public class VanChartGaugeCateOrPercentLabelDetailPane extends VanChartGaugeLabe } } + + protected boolean hasLabelPosition(Plot plot) { initGaugeStyle(plot); switch (gaugeStyle){ @@ -57,21 +68,68 @@ public class VanChartGaugeCateOrPercentLabelDetailPane extends VanChartGaugeLabe } } + protected double[] getLabelStyleRowSize(double p) { + switch (gaugeStyle){ + case RING: + return new double[] {p, p}; + case SLOT: + return new double[] {p, p}; + default: + return new double[] {p}; + } + } + protected JPanel createTableLayoutPaneWithTitle(String title, Component component) { return TableLayout4VanChartHelper.createTableLayoutPaneWithSmallTitle(title, component); } + protected Component[][] getLabelStyleComponents(Plot plot) { initGaugeStyle(plot); - switch (gaugeStyle){ - case RING: - return super.getLabelStyleComponents(plot); - case SLOT: - return super.getLabelStyleComponents(plot); - default: - return new Component[][]{ - new Component[]{textFontPane,null}, - }; + if (gaugeStyle == GaugeStyle.RING || gaugeStyle == GaugeStyle.SLOT) { + UILabel text = new UILabel(Inter.getLocText("Plugin-Chart_Character"), SwingConstants.LEFT); + return new Component[][]{ + new Component[]{text,style}, + new Component[]{textFontPane,null}, + }; + } else { + return new Component[][]{ + new Component[]{textFontPane, null}, + }; + } + } + + protected ChartTextAttrPane initTextFontPane () { + //todo 需要再整理下 + if (gaugeStyle == GaugeStyle.RING || gaugeStyle == GaugeStyle.SLOT){ + return new ChartTextAttrPane(){ + protected double[] getRowSize () { + double p = TableLayout.PREFERRED; + return new double[]{p, p}; + } + + protected Component[][] getComponents(JPanel buttonPane) { + return new Component[][]{ + new Component[]{null, fontNameComboBox}, + new Component[]{null, buttonPane} + }; + } + }; + } else { + return new ChartTextAttrPane(){ + protected double[] getRowSize () { + double p = TableLayout.PREFERRED; + return new double[]{p, p}; + } + + protected Component[][] getComponents(JPanel buttonPane) { + UILabel text = new UILabel(Inter.getLocText("Plugin-Chart_Character"), SwingConstants.LEFT); + return new Component[][]{ + new Component[]{text, fontNameComboBox}, + new Component[]{null, buttonPane} + }; + } + }; } } } \ No newline at end of file diff --git a/designer_chart/src/com/fr/plugin/chart/designer/style/label/VanChartGaugeLabelDetailPane.java b/designer_chart/src/com/fr/plugin/chart/designer/style/label/VanChartGaugeLabelDetailPane.java index c83ad98e5a..2c45558d50 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/style/label/VanChartGaugeLabelDetailPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/style/label/VanChartGaugeLabelDetailPane.java @@ -23,11 +23,16 @@ public class VanChartGaugeLabelDetailPane extends VanChartPlotLabelDetailPane { protected JPanel createLabelStylePane(double[] row, double[] col, Plot plot) { style = new UIButtonGroup(new String[]{Inter.getLocText("Plugin-ChartF_Automatic"), Inter.getLocText("Plugin-ChartF_Custom")}); - textFontPane = new ChartTextAttrPane(); + textFontPane = initTextFontPane(); initStyleListener(); - return TableLayoutHelper.createTableLayoutPane(getLabelStyleComponents(plot),row,col); + return TableLayoutHelper.createTableLayoutPane(getLabelStyleComponents(plot), row, col); + } + + + protected ChartTextAttrPane initTextFontPane () { + return new ChartTextAttrPane(); } protected JPanel getLabelPositionPane (Component[][] comps, double[] row, double[] col){ diff --git a/designer_chart/src/com/fr/plugin/chart/designer/style/label/VanChartGaugeValueLabelDetailPane.java b/designer_chart/src/com/fr/plugin/chart/designer/style/label/VanChartGaugeValueLabelDetailPane.java index 2dcb96dab2..72e3effa9f 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/style/label/VanChartGaugeValueLabelDetailPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/style/label/VanChartGaugeValueLabelDetailPane.java @@ -59,7 +59,7 @@ public class VanChartGaugeValueLabelDetailPane extends VanChartGaugeLabelDetailP private Component[][] getLabelPaneComponentsWithBackground(Plot plot, double p, double[] columnSize) { return new Component[][]{ new Component[]{dataLabelContentPane,null}, - new Component[]{createLabelStylePane(new double[]{p,p,p}, columnSize, plot),null}, + new Component[]{createLabelStylePane(new double[]{p}, columnSize, plot),null}, new Component[]{createBackgroundColorPane(),null}, }; } diff --git a/designer_chart/src/com/fr/plugin/chart/designer/style/label/VanChartPlotLabelDetailPane.java b/designer_chart/src/com/fr/plugin/chart/designer/style/label/VanChartPlotLabelDetailPane.java index ba2f84dbb9..25e1f8c37e 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/style/label/VanChartPlotLabelDetailPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/style/label/VanChartPlotLabelDetailPane.java @@ -76,16 +76,20 @@ public class VanChartPlotLabelDetailPane extends BasicPane { return new Component[][]{ new Component[]{dataLabelContentPane,null}, new Component[]{createLabelPositionPane(new double[]{p,p,p}, columnSize, plot),null}, - new Component[]{createLabelStylePane(new double[]{p,p,p}, columnSize, plot),null}, + new Component[]{createLabelStylePane(getLabelStyleRowSize(p), columnSize, plot),null}, }; } else { return new Component[][]{ new Component[]{dataLabelContentPane,null}, - new Component[]{createLabelStylePane(new double[]{p,p,p}, columnSize, plot),null}, + new Component[]{createLabelStylePane(getLabelStyleRowSize(p), columnSize, plot),null}, }; } } + protected double[] getLabelStyleRowSize(double p) { + return new double[]{p, p, p}; + } + protected double[] getLabelPaneRowSize(Plot plot, double p) { return hasLabelPosition(plot) ? new double[]{p,p,p,p,p} : new double[]{p,p,p}; } @@ -152,7 +156,16 @@ public class VanChartPlotLabelDetailPane extends BasicPane { protected JPanel createLabelStylePane(double[] row, double[] col, Plot plot) { style = new UIButtonGroup(new String[]{Inter.getLocText("Plugin-ChartF_Automatic"), Inter.getLocText("Plugin-ChartF_Custom")}); - textFontPane = new ChartTextAttrPane(){ + textFontPane =initTextFontPane(); + + initStyleListener(); + + JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(getLabelStyleComponents(plot),row,col); + return createTableLayoutPaneWithTitle(Inter.getLocText("FR-Designer-Widget_Style"), panel); + } + + protected ChartTextAttrPane initTextFontPane () { + return new ChartTextAttrPane(){ protected Component[][] getComponents(JPanel buttonPane) { return new Component[][]{ new Component[]{null, null}, @@ -161,11 +174,6 @@ public class VanChartPlotLabelDetailPane extends BasicPane { }; } }; - - initStyleListener(); - - JPanel panel = TableLayoutHelper.createTableLayoutPane(getLabelStyleComponents(plot),row,col); - return createTableLayoutPaneWithTitle(Inter.getLocText("FR-Designer-Widget_Style"), panel); } protected Component[][] getLabelStyleComponents(Plot plot) { diff --git a/designer_chart/src/com/fr/plugin/chart/designer/style/series/VanChartAbstractPlotSeriesPane.java b/designer_chart/src/com/fr/plugin/chart/designer/style/series/VanChartAbstractPlotSeriesPane.java index 88ee117639..6e6683ccce 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/style/series/VanChartAbstractPlotSeriesPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/style/series/VanChartAbstractPlotSeriesPane.java @@ -29,6 +29,7 @@ import com.fr.plugin.chart.custom.style.VanChartCustomStylePane; import com.fr.plugin.chart.designer.TableLayout4VanChartHelper; import com.fr.plugin.chart.designer.component.VanChartAreaSeriesFillColorPane; import com.fr.plugin.chart.designer.component.VanChartBeautyPane; +import com.fr.plugin.chart.designer.component.VanChartFillStylePane; import com.fr.plugin.chart.designer.component.VanChartLineTypePane; import com.fr.plugin.chart.designer.component.VanChartMarkerPane; import com.fr.plugin.chart.designer.component.VanChartTrendLinePane; @@ -98,7 +99,7 @@ public abstract class VanChartAbstractPlotSeriesPane extends AbstractPlotSeriesP */ protected ChartFillStylePane getFillStylePane() { //如果是自定義組合圖,則不創建填充界面 - return parentPane instanceof VanChartCustomStylePane ? null : new ChartFillStylePane(); + return parentPane instanceof VanChartCustomStylePane ? null : new VanChartFillStylePane(); } //风格 diff --git a/designer_chart/src/com/fr/plugin/chart/designer/style/tooltip/VanChartPlotRefreshTooltipPane.java b/designer_chart/src/com/fr/plugin/chart/designer/style/tooltip/VanChartPlotRefreshTooltipPane.java index bf3845ea78..2f0979f318 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/style/tooltip/VanChartPlotRefreshTooltipPane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/style/tooltip/VanChartPlotRefreshTooltipPane.java @@ -1,6 +1,7 @@ package com.fr.plugin.chart.designer.style.tooltip; import com.fr.chart.chartattr.Plot; +import com.fr.design.dialog.BasicScrollPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.layout.TableLayout; @@ -29,7 +30,7 @@ public class VanChartPlotRefreshTooltipPane extends VanChartPlotTooltipNoCheckPa public VanChartPlotRefreshTooltipPane(Plot plot) { super(plot, null); - this.setSize(270,400); + this.setPreferredSize(new Dimension(320, 400)); } protected JPanel createTooltipPane(Plot plot) { @@ -44,14 +45,26 @@ public class VanChartPlotRefreshTooltipPane extends VanChartPlotTooltipNoCheckPa double[] rowSize = {p,p,p,p,p,p,p,p,p,p,p}; Component[][] components = createComponents(plot); - JPanel panel = TableLayoutHelper.createTableLayoutPane(components,rowSize,columnSize); - JScrollPane jScrollPane = new JScrollPane(panel); - jScrollPane.setPreferredSize(new Dimension(P_W, P_H)); - - jScrollPane.setVerticalScrollBarPolicy (JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); - JPanel jPanel = new JPanel(); - jPanel.add(jScrollPane); - return jPanel; + final JPanel panel = TableLayoutHelper.createTableLayoutPane(components,rowSize,columnSize); + BasicScrollPane scrollPane = new BasicScrollPane() { + + @Override + protected String title4PopupWindow() { + return null; + } + + @Override + protected JPanel createContentPane() { + return panel; + } + + @Override + public void populateBean(Object ob) { + return; + } + }; + scrollPane.setPreferredSize(new Dimension(P_W, P_H)); + return scrollPane; } protected Component[][] createComponents(Plot plot) { @@ -78,9 +91,10 @@ public class VanChartPlotRefreshTooltipPane extends VanChartPlotTooltipNoCheckPa double f = TableLayout.FILL; double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; double[] columnSize = {f, e}; - double[] rowSize = {p}; + double[] rowSize = {p, p}; Component[][] components = new Component[][]{ + new Component[]{null, null}, new Component[]{new UILabel(Inter.getLocText("Plugin-ChartF_Duration_Time")), duration}, }; diff --git a/designer_chart/src/com/fr/plugin/chart/designer/type/AbstractVanChartTypePane.java b/designer_chart/src/com/fr/plugin/chart/designer/type/AbstractVanChartTypePane.java index db36ee4daf..dab6ae28d8 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/type/AbstractVanChartTypePane.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/type/AbstractVanChartTypePane.java @@ -10,13 +10,14 @@ import com.fr.chart.chartglyph.DataSheet; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.MultilineLabel; import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane; +import com.fr.design.mainframe.chart.gui.type.ChartImagePane; import com.fr.general.Background; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.js.NameJavaScriptGroup; +import com.fr.plugin.chart.attr.plot.VanChartPlot; import com.fr.plugin.chart.base.VanChartTools; import com.fr.plugin.chart.base.VanChartZoom; -import com.fr.plugin.chart.attr.plot.VanChartPlot; import com.fr.plugin.chart.vanchart.VanChart; import javax.swing.*; @@ -53,9 +54,15 @@ public abstract class AbstractVanChartTypePane extends AbstractChartTypePane{ }; } - //适用一种图表只有一种类型的 + /** + * 更新界面内容 + */ public void populateBean(Chart chart) { - typeDemo.get(0).isPressing = true; + for(ChartImagePane imagePane : typeDemo) { + imagePane.isPressing = false; + } + Plot plot = chart.getPlot(); + typeDemo.get(plot.getDetailType()).isPressing = true; checkDemosBackground(); } @@ -63,9 +70,9 @@ public abstract class AbstractVanChartTypePane extends AbstractChartTypePane{ * 保存界面属性 */ public void updateBean(Chart chart) { - checkTypeChange(); - VanChartPlot oldPlot = (VanChartPlot)chart.getPlot(); - VanChartPlot newPlot = (VanChartPlot)getSelectedClonedPlot(); + VanChartPlot oldPlot = chart.getPlot(); + VanChartPlot newPlot = getSelectedClonedPlot(); + checkTypeChange(oldPlot); samePlot = accept(chart); if(typeChanged && samePlot){ //同一中图表切换不同类型 @@ -115,11 +122,10 @@ public abstract class AbstractVanChartTypePane extends AbstractChartTypePane{ return new VanChartTools(); } - protected void checkTypeChange(){ + protected void checkTypeChange(Plot oldPlot){ for(int i = 0; i < typeDemo.size(); i++){ - if(typeDemo.get(i).isPressing && i != lastTypeIndex){ + if(typeDemo.get(i).isPressing && i != oldPlot.getDetailType()){ typeChanged = true; - lastTypeIndex = i; break; } typeChanged = false; diff --git a/designer_chart/src/com/fr/plugin/chart/funnel/designer/style/VanChartFunnelSeriesPane.java b/designer_chart/src/com/fr/plugin/chart/funnel/designer/style/VanChartFunnelSeriesPane.java index 13b93daba1..9c7ba2ec99 100644 --- a/designer_chart/src/com/fr/plugin/chart/funnel/designer/style/VanChartFunnelSeriesPane.java +++ b/designer_chart/src/com/fr/plugin/chart/funnel/designer/style/VanChartFunnelSeriesPane.java @@ -54,7 +54,8 @@ public class VanChartFunnelSeriesPane extends VanChartAbstractPlotSeriesPane { double p = TableLayout.PREFERRED; double f = TableLayout.FILL; - double[] columnSize = {p, f}; + double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; + double[] columnSize = {f, e}; double[] rowSize = {p,p,p}; Component[][] components = new Component[][]{ new Component[]{null, null}, diff --git a/designer_chart/src/com/fr/plugin/chart/gantt/designer/data/data/component/ComboBoxWithButtonPane.java b/designer_chart/src/com/fr/plugin/chart/gantt/designer/data/data/component/ComboBoxWithButtonPane.java index 54bb8cb826..fb13a94527 100644 --- a/designer_chart/src/com/fr/plugin/chart/gantt/designer/data/data/component/ComboBoxWithButtonPane.java +++ b/designer_chart/src/com/fr/plugin/chart/gantt/designer/data/data/component/ComboBoxWithButtonPane.java @@ -27,14 +27,14 @@ public abstract class ComboBoxWithButtonPane extends JPanel { public ComboBoxWithButtonPane(int index) { this.index = index; comboBoxName = new UIComboBox(); - comboBoxName.setPreferredSize(new Dimension(100,20)); + comboBoxName.setPreferredSize(new Dimension(80,20)); button = new UIButton(getButtonIcon()); button.setPreferredSize(new Dimension(20, 20)); button.addActionListener(getButtonListener()); UILabel title = new UILabel(getTitleText()); - title.setPreferredSize(new Dimension(60, 20)); + title.setPreferredSize(new Dimension(80, 20)); this.setLayout(new BorderLayout(H_GAP, 0)); this.add(comboBoxName, BorderLayout.CENTER); diff --git a/designer_chart/src/com/fr/plugin/chart/gauge/VanChartGaugePlotPane.java b/designer_chart/src/com/fr/plugin/chart/gauge/VanChartGaugePlotPane.java index f7f138c65b..ae59c0dbc1 100644 --- a/designer_chart/src/com/fr/plugin/chart/gauge/VanChartGaugePlotPane.java +++ b/designer_chart/src/com/fr/plugin/chart/gauge/VanChartGaugePlotPane.java @@ -2,7 +2,6 @@ package com.fr.plugin.chart.gauge; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; -import com.fr.design.mainframe.chart.gui.type.ChartImagePane; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.plugin.chart.designer.type.AbstractVanChartTypePane; @@ -43,21 +42,6 @@ public class VanChartGaugePlotPane extends AbstractVanChartTypePane { return Inter.getLocText("Plugin-ChartF_NewGauge"); } - /** - * 更新界面内容 - */ - public void populateBean(Chart chart) { - for(ChartImagePane imagePane : typeDemo) { - imagePane.isPressing = false; - } - Plot plot = chart.getPlot(); - if(plot instanceof VanChartGaugePlot) { - lastTypeIndex = ((VanChartGaugePlot)plot).getGaugeStyle().ordinal(); - typeDemo.get(lastTypeIndex).isPressing = true; - } - checkDemosBackground(); - } - protected Plot getSelectedClonedPlot(){ VanChartGaugePlot newPlot = null; Chart[] GaugeChart = GaugeIndependentVanChart.GaugeVanChartTypes; diff --git a/designer_chart/src/com/fr/plugin/chart/heatmap/designer/type/VanChartHeatMapTypePane.java b/designer_chart/src/com/fr/plugin/chart/heatmap/designer/type/VanChartHeatMapTypePane.java index c28fb143c5..b373f2828a 100644 --- a/designer_chart/src/com/fr/plugin/chart/heatmap/designer/type/VanChartHeatMapTypePane.java +++ b/designer_chart/src/com/fr/plugin/chart/heatmap/designer/type/VanChartHeatMapTypePane.java @@ -59,7 +59,6 @@ public class VanChartHeatMapTypePane extends VanChartMapPlotPane { //适用一种图表只有一种类型的 public void populateBean(Chart chart) { typeDemo.get(0).isPressing = true; - lastTypeIndex = 0; VanChartHeatMapPlot plot = (VanChartHeatMapPlot)chart.getPlot(); populateSourcePane(plot); diff --git a/designer_chart/src/com/fr/plugin/chart/line/VanChartLinePlotPane.java b/designer_chart/src/com/fr/plugin/chart/line/VanChartLinePlotPane.java index a0d1a326cf..c7a04abe90 100644 --- a/designer_chart/src/com/fr/plugin/chart/line/VanChartLinePlotPane.java +++ b/designer_chart/src/com/fr/plugin/chart/line/VanChartLinePlotPane.java @@ -2,10 +2,8 @@ package com.fr.plugin.chart.line; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; -import com.fr.design.mainframe.chart.gui.type.ChartImagePane; import com.fr.general.FRLogger; import com.fr.general.Inter; -import com.fr.plugin.chart.type.VanChartPlotType; import com.fr.plugin.chart.designer.type.AbstractVanChartTypePane; /** @@ -39,29 +37,6 @@ public class VanChartLinePlotPane extends AbstractVanChartTypePane { public String title4PopupWindow() { return Inter.getLocText("Plugin-ChartF_NewLine"); } - /** - * 更新界面内容 - */ - public void populateBean(Chart chart) { - for(ChartImagePane imagePane : typeDemo) { - imagePane.isPressing = false; - } - Plot plot = chart.getPlot(); - if(plot instanceof VanChartLinePlot) { - VanChartPlotType plotType = ((VanChartLinePlot)plot).getVanChartPlotType(); - switch (plotType){ - case CUSTOM: - lastTypeIndex = 2; - break; - default: - lastTypeIndex = plotType.ordinal(); - break; - } - typeDemo.get(lastTypeIndex).isPressing = true; - } - checkDemosBackground(); - - } /** * 获取各图表类型界面ID, 本质是plotID diff --git a/designer_chart/src/com/fr/plugin/chart/map/VanChartMapSeriesPane.java b/designer_chart/src/com/fr/plugin/chart/map/VanChartMapSeriesPane.java index cb0be77135..4b5189f6a4 100644 --- a/designer_chart/src/com/fr/plugin/chart/map/VanChartMapSeriesPane.java +++ b/designer_chart/src/com/fr/plugin/chart/map/VanChartMapSeriesPane.java @@ -252,7 +252,20 @@ public class VanChartMapSeriesPane extends VanChartAbstractPlotSeriesPane { markerTypeCom = new UIComboBox(MARKER_TYPES); commonMarkerPane = new VanChartMapScatterMarkerPane(); - bubblePane = new VanChartBubblePane(); + commonMarkerPane.setBorder(TableLayout4VanChartHelper.SECOND_EDIT_AREA_BORDER); + bubblePane = new VanChartBubblePane(){ + protected JPanel getContentPane () { + double p = TableLayout.PREFERRED; + double f = TableLayout.FILL; + double e = TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH; + double[] row = {p, p, p, p, p}; + double[] col = {f, e}; + + JPanel panel = TableLayoutHelper.createTableLayoutPane(getComponent(), row, col); + panel.setBorder(TableLayout4VanChartHelper.SECOND_EDIT_AREA_BORDER); + return panel; + } + }; imageMarkerPane = new VanChartImageMarkerPane(); final JPanel[] panes = new JPanel[]{new JPanel(), commonMarkerPane, bubblePane, imageMarkerPane}; diff --git a/designer_chart/src/com/fr/plugin/chart/map/designer/VanChartGroupPane.java b/designer_chart/src/com/fr/plugin/chart/map/designer/VanChartGroupPane.java index f23604b1fb..844bb7e443 100644 --- a/designer_chart/src/com/fr/plugin/chart/map/designer/VanChartGroupPane.java +++ b/designer_chart/src/com/fr/plugin/chart/map/designer/VanChartGroupPane.java @@ -3,6 +3,7 @@ package com.fr.plugin.chart.map.designer; import com.fr.design.gui.ibutton.UIButtonGroup; import javax.swing.*; +import javax.swing.border.Border; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.awt.*; @@ -34,9 +35,13 @@ public abstract class VanChartGroupPane extends JPanel{ cardLayout.show(centerPane, nameList[buttonGroup.getSelectedIndex()]); } }); - + buttonGroup.setBorder(getButtonGroupBorder()); this.setLayout(new BorderLayout(0, 4)); this.add(buttonGroup, BorderLayout.NORTH); this.add(centerPane, BorderLayout.CENTER); } + + protected Border getButtonGroupBorder () { + return null; + } } diff --git a/designer_chart/src/com/fr/plugin/chart/map/designer/VanMapAreaPointAndLineGroupPane.java b/designer_chart/src/com/fr/plugin/chart/map/designer/VanMapAreaPointAndLineGroupPane.java index df9e994e2d..681ba3a651 100644 --- a/designer_chart/src/com/fr/plugin/chart/map/designer/VanMapAreaPointAndLineGroupPane.java +++ b/designer_chart/src/com/fr/plugin/chart/map/designer/VanMapAreaPointAndLineGroupPane.java @@ -3,6 +3,7 @@ package com.fr.plugin.chart.map.designer; import com.fr.general.Inter; import javax.swing.*; +import javax.swing.border.Border; /** * Created by Mitisky on 16/5/20. @@ -17,4 +18,9 @@ public class VanMapAreaPointAndLineGroupPane extends VanChartGroupPane { public VanMapAreaPointAndLineGroupPane(final JPanel areaPane, final JPanel pointPane, final JPanel linePane){ super(new String[]{AREA_MAP_STRING, POINT_MAP_STRING, LINE_MAP_STRING}, new JPanel[]{areaPane, pointPane, linePane}); } + + @Override + protected Border getButtonGroupBorder () { + return BorderFactory.createEmptyBorder(0,8,0,18); + } } diff --git a/designer_chart/src/com/fr/plugin/chart/map/designer/data/component/report/AreaPane.java b/designer_chart/src/com/fr/plugin/chart/map/designer/data/component/report/AreaPane.java index bb9f68398c..cb3efc9a32 100644 --- a/designer_chart/src/com/fr/plugin/chart/map/designer/data/component/report/AreaPane.java +++ b/designer_chart/src/com/fr/plugin/chart/map/designer/data/component/report/AreaPane.java @@ -28,7 +28,7 @@ public class AreaPane extends AbstractReportDataContentPane { areaName = new TinyFormulaPane(); double p = TableLayout.PREFERRED; double f = TableLayout.FILL; - double[] columnSize = {p, f}; + double[] columnSize = {f, COMPONENT_WIDTH}; double[] rowSize = {p}; Component[][] components = getComponent (); return TableLayoutHelper.createTableLayoutPane(components,rowSize,columnSize); diff --git a/designer_chart/src/com/fr/plugin/chart/map/designer/data/component/report/LongLatAreaPane.java b/designer_chart/src/com/fr/plugin/chart/map/designer/data/component/report/LongLatAreaPane.java index dac5fc3014..40084fec4d 100644 --- a/designer_chart/src/com/fr/plugin/chart/map/designer/data/component/report/LongLatAreaPane.java +++ b/designer_chart/src/com/fr/plugin/chart/map/designer/data/component/report/LongLatAreaPane.java @@ -31,10 +31,10 @@ public class LongLatAreaPane extends AreaPane { latitude = new TinyFormulaPane(); double p = TableLayout.PREFERRED; double f = TableLayout.FILL; - double[] columnSize = {p, f}; + double[] columnSize = {f, COMPONENT_WIDTH}; double[] rowSize = {p, p, p}; Component[][] components = getComponent(); - return TableLayoutHelper.createGapTableLayoutPane(components,rowSize,columnSize,50,6); + return TableLayoutHelper.createGapTableLayoutPane(components,rowSize,columnSize,12,6); } protected Component[][] getComponent () { diff --git a/designer_chart/src/com/fr/plugin/chart/map/designer/data/component/table/AreaPane.java b/designer_chart/src/com/fr/plugin/chart/map/designer/data/component/table/AreaPane.java index 0ef1b35536..eb51aae81f 100644 --- a/designer_chart/src/com/fr/plugin/chart/map/designer/data/component/table/AreaPane.java +++ b/designer_chart/src/com/fr/plugin/chart/map/designer/data/component/table/AreaPane.java @@ -43,10 +43,10 @@ public class AreaPane extends AbstractTableDataContentPane { initAreaNameCom(); double p = TableLayout.PREFERRED; double f = TableLayout.FILL; - double[] columnSize = {p, f}; + double[] columnSize = {f, COMPONENT_WIDTH}; double[] rowSize = {p}; Component[][] components = getComponent(); - return TableLayoutHelper.createGapTableLayoutPane(components,rowSize,columnSize,50,6); + return TableLayoutHelper.createGapTableLayoutPane(components,rowSize,columnSize,12,6); } protected Component[][] getComponent () { diff --git a/designer_chart/src/com/fr/plugin/chart/map/designer/data/component/table/LongLatAreaPane.java b/designer_chart/src/com/fr/plugin/chart/map/designer/data/component/table/LongLatAreaPane.java index 4f07c52874..83a0006488 100644 --- a/designer_chart/src/com/fr/plugin/chart/map/designer/data/component/table/LongLatAreaPane.java +++ b/designer_chart/src/com/fr/plugin/chart/map/designer/data/component/table/LongLatAreaPane.java @@ -33,11 +33,11 @@ public class LongLatAreaPane extends AreaPane { double p = TableLayout.PREFERRED; double f = TableLayout.FILL; - double[] columnSize = {p, f}; + double[] columnSize = {f, COMPONENT_WIDTH}; double[] rowSize = {p, p, p}; Component[][] components = getComponent(); - return TableLayoutHelper.createGapTableLayoutPane(components,rowSize,columnSize,50,6); + return TableLayoutHelper.createGapTableLayoutPane(components,rowSize,columnSize,12,6); } protected Component[][] getComponent () { diff --git a/designer_chart/src/com/fr/plugin/chart/map/designer/style/series/VanChartMapScatterMarkerPane.java b/designer_chart/src/com/fr/plugin/chart/map/designer/style/series/VanChartMapScatterMarkerPane.java index e0a55f2942..334139bbd0 100644 --- a/designer_chart/src/com/fr/plugin/chart/map/designer/style/series/VanChartMapScatterMarkerPane.java +++ b/designer_chart/src/com/fr/plugin/chart/map/designer/style/series/VanChartMapScatterMarkerPane.java @@ -1,7 +1,7 @@ package com.fr.plugin.chart.map.designer.style.series; import com.fr.chart.chartglyph.Marker; -import com.fr.plugin.chart.marker.type.MarkerType; +import com.fr.plugin.chart.designer.TableLayout4VanChartHelper; import com.fr.plugin.chart.designer.component.marker.VanChartCommonMarkerPane; import java.awt.*; @@ -20,4 +20,11 @@ public class VanChartMapScatterMarkerPane extends VanChartCommonMarkerPane { protected Marker[] getMarkers() { return getMapScatterMarkers(); } + + @Override + protected double[] getcolumnSize () { + double s = TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH; + double d = TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH; + return new double[] {d, s}; + } } diff --git a/designer_chart/src/com/fr/plugin/chart/map/designer/type/VanChartMapPlotPane.java b/designer_chart/src/com/fr/plugin/chart/map/designer/type/VanChartMapPlotPane.java index 79abfb0066..ab70a847a8 100644 --- a/designer_chart/src/com/fr/plugin/chart/map/designer/type/VanChartMapPlotPane.java +++ b/designer_chart/src/com/fr/plugin/chart/map/designer/type/VanChartMapPlotPane.java @@ -88,8 +88,7 @@ public class VanChartMapPlotPane extends AbstractVanChartTypePane { } VanChartMapPlot plot = (VanChartMapPlot)chart.getPlot(); - lastTypeIndex = plot.getMapTypeIndex(); - typeDemo.get(lastTypeIndex).isPressing = true; + typeDemo.get(plot.getDetailType()).isPressing = true; populateSourcePane(plot); boolean enabled = !CompatibleGEOJSONHelper.isDeprecated(plot.getGeoUrl()); diff --git a/designer_chart/src/com/fr/plugin/chart/map/designer/type/VanChartMapSourceChoosePane.java b/designer_chart/src/com/fr/plugin/chart/map/designer/type/VanChartMapSourceChoosePane.java index 3314b180ad..b89bc667db 100644 --- a/designer_chart/src/com/fr/plugin/chart/map/designer/type/VanChartMapSourceChoosePane.java +++ b/designer_chart/src/com/fr/plugin/chart/map/designer/type/VanChartMapSourceChoosePane.java @@ -213,9 +213,9 @@ public class VanChartMapSourceChoosePane extends JPanel implements UIObserver { sourceTitleLabel = createSourceTitleLabel(); double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; + double d = TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH; double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; - double[] columnSize = {f, e}; + double[] columnSize = {d, e}; double[] rowSize = {p, p}; Component[][] components = new Component[][]{ new Component[]{null,null}, @@ -288,39 +288,45 @@ public class VanChartMapSourceChoosePane extends JPanel implements UIObserver { layerCardPane.add(pane, itemName); } - panel.add(gisLayer, BorderLayout.CENTER); + JPanel panel1 = TableLayout4VanChartHelper.createGapTableLayoutPane(Inter.getLocText("Plugin-ChartF_Gis_Layer"), gisLayer); + + panel.add(panel1, BorderLayout.CENTER); panel.add(layerCardPane, BorderLayout.SOUTH); - return TableLayout4VanChartHelper.createGapTableLayoutPane(Inter.getLocText("Plugin-ChartF_Gis_Layer"), panel); + return panel; } private JPanel createCustomTileLayer() { double p = TableLayout.PREFERRED; double[] rowSize = {p, p}; - double[] COLUMN_SIZE = {p, TableLayout.FILL}; + double[] COLUMN_SIZE = {TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH, TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH-3}; customTileLayer = new UITextArea(); attribution = new UITextArea(); Component[][] comps = new Component[][]{ - new Component[]{new UILabel("url", SwingConstants.RIGHT), customTileLayer}, + new Component[]{new UILabel("url"), customTileLayer}, new Component[]{new UILabel("Attribution"), attribution} }; - return TableLayoutHelper.createTableLayoutPane(comps, rowSize, COLUMN_SIZE); + JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(comps, rowSize, COLUMN_SIZE); + panel.setBorder(TableLayout4VanChartHelper.SECOND_EDIT_AREA_BORDER); + return panel; } private JPanel createWMSPanel() { final double p = TableLayout.PREFERRED; double[] rowSize = {p}; + double[] COLUMN_SIZE = {TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH, 84,44}; + wmsUrl = new UITextArea(); connectButton = new UIButton(Inter.getLocText("Plugin-ChartF_Connect_WMP")); Component[][] comps = new Component[][]{ - new Component[]{new UILabel("url", SwingConstants.RIGHT), wmsUrl, connectButton} + new Component[]{new UILabel("url"), wmsUrl, connectButton} }; - JPanel northPane = TableLayoutHelper.createTableLayoutPane(comps,rowSize, COLUMN_SIZE); - + JPanel northPane = TableLayout4VanChartHelper.createGapTableLayoutPane(comps, rowSize, COLUMN_SIZE); + northPane.setBorder(TableLayout4VanChartHelper.SECOND_EDIT_AREA_BORDER); JPanel wmsPanel = new JPanel(new BorderLayout(0, 4)); wmsLayerPane = new JPanel(new BorderLayout()); resetWMSLayerPane(new ArrayList()); @@ -428,20 +434,26 @@ public class VanChartMapSourceChoosePane extends JPanel implements UIObserver { latitude = new UISpinner(-Double.MAX_VALUE,Double.MAX_VALUE,1,0.0); double p = TableLayout.PREFERRED; + double f = TableLayout.FILL; + double d = TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH; + double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; + double s = TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH; double[] rowSize = {p,p,p}; + double[] columnSize = {d, e}; + double[] column = {d, s}; Component[][] comps = new Component[][]{ new Component[]{null, null}, new Component[]{new UILabel(Inter.getLocText("Plugin-ChartF_Zoom_Layer")), zoomLevel}, new Component[]{new UILabel(Inter.getLocText("Plugin-ChartF_View_Center")), viewCenterCom}, }; - final JPanel northPane = TableLayout4VanChartHelper.createGapTableLayoutPane(comps,rowSize,COLUMN_SIZE); + final JPanel northPane = TableLayout4VanChartHelper.createGapTableLayoutPane(comps,rowSize,columnSize); Component[][] longAndLatComps = new Component[][]{ new Component[]{new UILabel(Inter.getLocText("Plugin-ChartF_Longitude")), longitude}, new Component[]{new UILabel(Inter.getLocText("Plugin-ChartF_Latitude")), latitude} }; - longAndLatPane =TableLayout4VanChartHelper.createGapTableLayoutPane(longAndLatComps,rowSize,COLUMN_SIZE); + longAndLatPane =TableLayout4VanChartHelper.createGapTableLayoutPane(longAndLatComps,rowSize,column); longAndLatPane.setBorder(BorderFactory.createEmptyBorder(0,12,0,0)); longAndLatPane.setVisible(false); diff --git a/designer_chart/src/com/fr/plugin/chart/map/server/ChartMapEditorAction.java b/designer_chart/src/com/fr/plugin/chart/map/server/ChartMapEditorAction.java index 0140e04068..b22b3f5be6 100644 --- a/designer_chart/src/com/fr/plugin/chart/map/server/ChartMapEditorAction.java +++ b/designer_chart/src/com/fr/plugin/chart/map/server/ChartMapEditorAction.java @@ -1,6 +1,8 @@ package com.fr.plugin.chart.map.server; import com.fr.base.ConfigManager; +import com.fr.base.Env; +import com.fr.base.FRContext; import com.fr.design.DesignerEnvManager; import com.fr.design.actions.UpdateAction; import com.fr.general.GeneralContext; @@ -24,7 +26,8 @@ public class ChartMapEditorAction extends UpdateAction { int port = DesignerEnvManager.getEnvManager().getJettyServerPort(); String web = GeneralContext.getCurrentAppNameOfEnv(); String serverlet = ConfigManager.getProviderInstance().getServletMapping(); - StartServer.browserURLWithLocalEnv(String.format("http://localhost:%d/%s/%s?op=map", port, web, serverlet)); + Env env = FRContext.getCurrentEnv(); + StartServer.browserURLWithLocalEnv(env.isLocalEnv() ? String.format("http://localhost:%d/%s/%s?op=map", port, web, serverlet) : env.getPath() + "?op=map"); } } diff --git a/designer_chart/src/com/fr/plugin/chart/multilayer/data/MultiPiePlotTableDataContentPane.java b/designer_chart/src/com/fr/plugin/chart/multilayer/data/MultiPiePlotTableDataContentPane.java index becec4822c..b5dad1e1c5 100644 --- a/designer_chart/src/com/fr/plugin/chart/multilayer/data/MultiPiePlotTableDataContentPane.java +++ b/designer_chart/src/com/fr/plugin/chart/multilayer/data/MultiPiePlotTableDataContentPane.java @@ -33,6 +33,7 @@ import java.util.List; public class MultiPiePlotTableDataContentPane extends AbstractTableDataContentPane implements UIObserver { private static final int HT = 20; private static final int WD = 100; + private static final int LABEL_WIDTH = 72; private UISpinner levelNumEdit; private UITextField nameField; @@ -84,7 +85,7 @@ public class MultiPiePlotTableDataContentPane extends AbstractTableDataContentPa private JPanel createCenterPane() { double p = TableLayout.PREFERRED; double f = TableLayout.FILL; - double[] columnSize_center = {f, COMPONENT_WIDTH}; + double[] columnSize_center = {LABEL_WIDTH, COMPONENT_WIDTH}; double[] rowSize_center = new double[levelNum + 3]; initLevelNameList(); @@ -113,8 +114,9 @@ public class MultiPiePlotTableDataContentPane extends AbstractTableDataContentPa registerListener4Center(); - return TableLayout4VanChartHelper.createGapTableLayoutPane(components_center,rowSize_center,columnSize_center); - + JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(components_center,rowSize_center,columnSize_center); + panel.setBorder(BorderFactory.createEmptyBorder(0,10,0,0)); + return panel; } @@ -147,8 +149,7 @@ public class MultiPiePlotTableDataContentPane extends AbstractTableDataContentPa private JPanel createNorthPane() { double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - double[] columnSize_north = {f, COMPONENT_WIDTH}; + double[] columnSize_north = {LABEL_WIDTH, COMPONENT_WIDTH}; double[] rowSize_north = {p, p, p}; levelNumEdit = new UISpinner(1, 15, 1, levelNum){ @@ -169,10 +170,8 @@ public class MultiPiePlotTableDataContentPane extends AbstractTableDataContentPa super.setTextFieldValue(value); } }; - levelNumEdit.setPreferredSize(new Dimension(WD, HT)); nameField = new UITextField(); - nameField.setPreferredSize(new Dimension(WD, HT)); Component[][] components_north = new Component[][]{ new Component[]{new UILabel(Inter.getLocText("Plugin-ChartF_MultiPie_Series_Name")), nameField}, @@ -180,7 +179,9 @@ public class MultiPiePlotTableDataContentPane extends AbstractTableDataContentPa new Component[]{new UILabel(Inter.getLocText("Plugin-ChartF_Level_Number")), levelNumEdit}, }; - return TableLayout4VanChartHelper.createGapTableLayoutPane(components_north, rowSize_north, columnSize_north); + JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(components_north, rowSize_north, columnSize_north); + panel.setBorder(BorderFactory.createEmptyBorder(0,10,0,0)); + return panel; } private void refreshCenterPane(){ diff --git a/designer_chart/src/com/fr/plugin/chart/pie/VanChartPiePlotPane.java b/designer_chart/src/com/fr/plugin/chart/pie/VanChartPiePlotPane.java index 61a403766e..81726c7e52 100644 --- a/designer_chart/src/com/fr/plugin/chart/pie/VanChartPiePlotPane.java +++ b/designer_chart/src/com/fr/plugin/chart/pie/VanChartPiePlotPane.java @@ -3,7 +3,6 @@ package com.fr.plugin.chart.pie; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; -import com.fr.design.mainframe.chart.gui.type.ChartImagePane; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.plugin.chart.PiePlot4VanChart; @@ -42,22 +41,6 @@ public class VanChartPiePlotPane extends AbstractVanChartTypePane { return Inter.getLocText("Plugin-ChartF_NewPie"); } - - /** - * 更新界面内容 - */ - public void populateBean(Chart chart) { - for(ChartImagePane imagePane : typeDemo) { - imagePane.isPressing = false; - } - Plot plot = chart.getPlot(); - if(plot instanceof PiePlot4VanChart) { - lastTypeIndex = ((PiePlot4VanChart)plot).getRoseType().ordinal(); - typeDemo.get(lastTypeIndex).isPressing = true; - } - checkDemosBackground(); - } - /** * 获取各图表类型界面ID, 本质是plotID * diff --git a/designer_chart/src/com/fr/plugin/chart/radar/VanChartRadarPlotPane.java b/designer_chart/src/com/fr/plugin/chart/radar/VanChartRadarPlotPane.java index 5dc2da2ced..11662e6216 100644 --- a/designer_chart/src/com/fr/plugin/chart/radar/VanChartRadarPlotPane.java +++ b/designer_chart/src/com/fr/plugin/chart/radar/VanChartRadarPlotPane.java @@ -2,7 +2,6 @@ package com.fr.plugin.chart.radar; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; -import com.fr.design.mainframe.chart.gui.type.ChartImagePane; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.plugin.chart.designer.type.AbstractVanChartTypePane; @@ -38,22 +37,6 @@ public class VanChartRadarPlotPane extends AbstractVanChartTypePane { return Inter.getLocText("Plugin-ChartF_NewRadar"); } - - /** - * 更新界面内容 - */ - public void populateBean(Chart chart) { - for(ChartImagePane imagePane : typeDemo) { - imagePane.isPressing = false; - } - Plot plot = chart.getPlot(); - if(plot instanceof VanChartRadarPlot) { - lastTypeIndex = ((VanChartRadarPlot)plot).getVanChartPlotType().ordinal(); - typeDemo.get(lastTypeIndex).isPressing = true; - } - checkDemosBackground(); - } - /** * 获取各图表类型界面ID, 本质是plotID * diff --git a/designer_chart/src/com/fr/plugin/chart/structure/desinger/style/VanChartStructureSeriesPane.java b/designer_chart/src/com/fr/plugin/chart/structure/desinger/style/VanChartStructureSeriesPane.java index ec85e3e30a..8227fc4df6 100644 --- a/designer_chart/src/com/fr/plugin/chart/structure/desinger/style/VanChartStructureSeriesPane.java +++ b/designer_chart/src/com/fr/plugin/chart/structure/desinger/style/VanChartStructureSeriesPane.java @@ -135,8 +135,10 @@ public class VanChartStructureSeriesPane extends VanChartAbstractPlotSeriesPane protected void updateCondition(ConditionAttr defaultAttr){ if(nodeStylePane != null){ AttrNode attrNode =defaultAttr.getExisted(AttrNode.class); - defaultAttr.remove(attrNode); - defaultAttr.addDataSeriesCondition(nodeStylePane.updateBean()); + if (attrNode != null) { + defaultAttr.remove(attrNode); + defaultAttr.addDataSeriesCondition(nodeStylePane.updateBean()); + } } } } diff --git a/designer_chart/src/com/fr/plugin/chart/structure/desinger/type/VanChartStructureTypePane.java b/designer_chart/src/com/fr/plugin/chart/structure/desinger/type/VanChartStructureTypePane.java index 31ee519053..694762474a 100644 --- a/designer_chart/src/com/fr/plugin/chart/structure/desinger/type/VanChartStructureTypePane.java +++ b/designer_chart/src/com/fr/plugin/chart/structure/desinger/type/VanChartStructureTypePane.java @@ -2,7 +2,6 @@ package com.fr.plugin.chart.structure.desinger.type; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; -import com.fr.design.mainframe.chart.gui.type.ChartImagePane; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.plugin.chart.base.VanChartTools; @@ -47,23 +46,7 @@ public class VanChartStructureTypePane extends AbstractVanChartTypePane{ public String title4PopupWindow() { return Inter.getLocText("Plugin-ChartF_NewStructure"); } - - /** - * 更新界面内容 - */ - public void populateBean(Chart chart) { - for(ChartImagePane imagePane : typeDemo) { - imagePane.isPressing = false; - } - Plot plot = chart.getPlot(); - if(plot instanceof VanChartStructurePlot) { - lastTypeIndex = ((VanChartStructurePlot)plot).getStructureType().ordinal(); - typeDemo.get(lastTypeIndex).isPressing = true; - } - checkDemosBackground(); - } - - + protected Plot getSelectedClonedPlot(){ VanChartStructurePlot newPlot = null; Chart[] charts = StructureIndependentVanChart.StructureVanCharts; diff --git a/designer_chart/src/com/fr/plugin/chart/wordcloud/designer/WordCloudIndependentVanChartInterface.java b/designer_chart/src/com/fr/plugin/chart/wordcloud/designer/WordCloudIndependentVanChartInterface.java index 5f7566081f..2b5ad405a2 100644 --- a/designer_chart/src/com/fr/plugin/chart/wordcloud/designer/WordCloudIndependentVanChartInterface.java +++ b/designer_chart/src/com/fr/plugin/chart/wordcloud/designer/WordCloudIndependentVanChartInterface.java @@ -6,7 +6,6 @@ import com.fr.design.beans.BasicBeanPane; import com.fr.design.condition.ConditionAttributesPane; import com.fr.design.dialog.BasicPane; import com.fr.design.gui.frpane.AttributeChangeListener; -import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.mainframe.chart.AbstractChartAttrPane; import com.fr.design.mainframe.chart.gui.ChartDataPane; import com.fr.design.mainframe.chart.gui.ChartStylePane; @@ -15,7 +14,6 @@ import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane; import com.fr.general.Inter; import com.fr.plugin.chart.base.VanChartConstants; -import com.fr.plugin.chart.designer.TableLayout4VanChartHelper; import com.fr.plugin.chart.designer.other.VanChartInteractivePaneWithOutSort; import com.fr.plugin.chart.designer.other.VanChartOtherPane; import com.fr.plugin.chart.designer.style.VanChartStylePane; @@ -26,7 +24,6 @@ import com.fr.plugin.chart.wordcloud.designer.other.VanChartWordCloudConditionPa import com.fr.plugin.chart.wordcloud.designer.style.VanChartWordCloudSeriesPane; import com.fr.plugin.chart.wordcloud.designer.type.VanChartWordCloudTypePane; -import javax.swing.*; import java.util.List; /** @@ -87,11 +84,6 @@ public class WordCloudIndependentVanChartInterface extends AbstractIndependentVa @Override protected BasicBeanPane createInteractivePane() { return new VanChartInteractivePaneWithOutSort(){ - @Override - protected JPanel getzoomTypePane(UIButtonGroup zoomType) { - JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(Inter.getLocText("Plugin-ChartF_ZoomType"), zoomType); - return panel; - } @Override protected String[] getNameArray() { diff --git a/designer_form/src/com/fr/design/designer/beans/ComponentAdapter.java b/designer_form/src/com/fr/design/designer/beans/ComponentAdapter.java index 58a5206c2b..3caffb33a0 100644 --- a/designer_form/src/com/fr/design/designer/beans/ComponentAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/ComponentAdapter.java @@ -9,6 +9,7 @@ import javax.swing.JPopupMenu; import com.fr.design.beans.GroupModel; import com.fr.design.designer.beans.events.DesignerEditor; +import com.fr.design.designer.creator.PropertyGroupPane; /** * 组件适配器接口 @@ -40,6 +41,12 @@ public interface ComponentAdapter { */ ArrayList getXCreatorPropertyModel(); + /** + * 为当前组件创建描述各属性pane, 分组返回 + * @return ArrayList + */ + ArrayList getXCreatorPropertyPane(); + /** * 提供双击设计器的编辑器 * @param bean 鼠标双击的被设计组件 diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/component/CompositeComponentAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/component/CompositeComponentAdapter.java index 12bd2515f8..176e6e1596 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/component/CompositeComponentAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/component/CompositeComponentAdapter.java @@ -7,6 +7,7 @@ import com.fr.design.designer.beans.ComponentAdapter; import com.fr.design.designer.beans.actions.ChangeNameAction; import com.fr.design.designer.beans.events.DesignerEditor; import com.fr.design.designer.creator.CRPropertyDescriptor; +import com.fr.design.designer.creator.PropertyGroupPane; import com.fr.design.designer.creator.XButton; import com.fr.design.designer.creator.XCreator; import com.fr.design.form.util.XCreatorConstants; @@ -90,6 +91,30 @@ public class CompositeComponentAdapter implements ComponentAdapter { private ArrayList createPropertyGroupModels(CRPropertyDescriptor[] properties) { HashMap> maps = new HashMap>(); + ArrayList groupNames = getGroupNames(properties, maps); + ArrayList groups = new ArrayList(); + for (String groupName : groupNames) { + ArrayList groupProperties = maps.get(groupName); + PropertyGroupModel groupModel = new PropertyGroupModel(groupName, xCreator, groupProperties + .toArray(new CRPropertyDescriptor[0]), designer); + groups.add(groupModel); + } + return groups; + } + + private ArrayList createPropertyGroupPanes(CRPropertyDescriptor[] properties) { + HashMap> maps = new HashMap>(); + ArrayList groupNames = getGroupNames(properties, maps); + ArrayList groups = new ArrayList(); + for (String groupName : groupNames) { + ArrayList groupProperties = maps.get(groupName); + PropertyGroupPane propertyGroupPane = new PropertyGroupPane(groupProperties.toArray(new CRPropertyDescriptor[0]), xCreator, groupName, designer); + groups.add(propertyGroupPane); + } + return groups; + } + + private ArrayList getGroupNames(CRPropertyDescriptor[] properties, HashMap> maps ){ ArrayList groupNames = new ArrayList(); for (CRPropertyDescriptor property : properties) { String groupName = (String) property.getValue(XCreatorConstants.PROPERTY_CATEGORY); @@ -108,14 +133,7 @@ public class CompositeComponentAdapter implements ComponentAdapter { groupProperties.add(property); } adjustGroupNamesPosition(groupNames); - ArrayList groups = new ArrayList(); - for (String groupName : groupNames) { - ArrayList groupProperties = maps.get(groupName); - PropertyGroupModel groupModel = new PropertyGroupModel(groupName, xCreator, groupProperties - .toArray(new CRPropertyDescriptor[0]), designer); - groups.add(groupModel); - } - return groups; + return groupNames; } public void adjustGroupNamesPosition(ArrayList groupNames){ @@ -138,6 +156,17 @@ public class CompositeComponentAdapter implements ComponentAdapter { return groupModels; } + @Override + public ArrayList getXCreatorPropertyPane() { + ArrayList groupModels = new ArrayList(); + CRPropertyDescriptor[] properties; + properties = getCalculateCreatorProperties(); + ArrayList groups = createPropertyGroupPanes(properties); +// Collections.sort(groups); + groupModels.addAll(groups); + return groupModels; + } + /** * 自适应布局中放置文本框等用的scaleLayout和报表块、图表块支持的标题控件用的titleLayout时 * 控件树处只显示父容器,但是控件属性还是为自身的 diff --git a/designer_form/src/com/fr/design/designer/beans/models/StateModel.java b/designer_form/src/com/fr/design/designer/beans/models/StateModel.java index ff3fcbedcd..d089e282f6 100644 --- a/designer_form/src/com/fr/design/designer/beans/models/StateModel.java +++ b/designer_form/src/com/fr/design/designer/beans/models/StateModel.java @@ -265,7 +265,15 @@ public class StateModel { Rectangle bounds = createCurrentBounds(x, y); if ((x != currentX) || (y != currentY)) { - selectionModel.setSelectedCreators(getHotspotCreators(bounds, designer.getRootComponent())); + ArrayList creators = getHotspotCreators(bounds, designer.getRootComponent()); + if (creators.isEmpty() && designer.getRootComponent().getXCreatorCount() > 0) { + //当初始化布局是绝对布局的时候特殊处理,画框的时候若没有控件,默认焦点设置在绝对布局上 + XCreator layout = designer.getRootComponent().getXCreator(0); + if (layout.acceptType(XWAbsoluteBodyLayout.class)) { + creators.add(layout); + } + } + selectionModel.setSelectedCreators(creators); } selectionModel.setHotspotBounds(null); } diff --git a/designer_form/src/com/fr/design/designer/creator/CRPropertyDescriptorPane.java b/designer_form/src/com/fr/design/designer/creator/CRPropertyDescriptorPane.java index 5940291b45..906769eaac 100644 --- a/designer_form/src/com/fr/design/designer/creator/CRPropertyDescriptorPane.java +++ b/designer_form/src/com/fr/design/designer/creator/CRPropertyDescriptorPane.java @@ -1,13 +1,21 @@ package com.fr.design.designer.creator; import com.fr.base.FRContext; +import com.fr.design.designer.IntervalConstants; +import com.fr.design.designer.beans.events.DesignerEvent; +import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.xtable.TableUtils; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.mainframe.FormDesigner; +import com.fr.design.mainframe.WidgetPropertyPane; import com.fr.design.mainframe.widget.editors.ExtendedPropertyEditor; import com.fr.design.mainframe.widget.editors.StringEditor; import com.fr.form.ui.Widget; - -import java.awt.*; +import com.fr.general.ComparatorUtils; +import javax.swing.BorderFactory; +import javax.swing.JPanel; +import java.awt.Component; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyEditor; @@ -20,37 +28,78 @@ public class CRPropertyDescriptorPane { private CRPropertyDescriptor crPropertyDescriptor; private XCreator xCreator; private PropertyEditor propertyEditor; + private boolean isPopulate = true; + private FormDesigner designer; - public CRPropertyDescriptorPane(CRPropertyDescriptor crPropertyDescriptor, XCreator xCreator) { + public CRPropertyDescriptorPane(CRPropertyDescriptor crPropertyDescriptor, XCreator xCreator, FormDesigner designer) { this.crPropertyDescriptor = crPropertyDescriptor; this.xCreator = xCreator; + this.designer = designer; } public Component[] createTableLayoutComponent() { - return new Component[]{new UILabel(crPropertyDescriptor.getDisplayName()), initEditorComponent(crPropertyDescriptor, xCreator)}; + Component component = initEditorComponent(crPropertyDescriptor, xCreator); + if (component instanceof UICheckBox) { + ((UICheckBox) component).setText(crPropertyDescriptor.getDisplayName()); + return new Component[]{component, null}; + } + if (crPropertyDescriptor.isSubLevel()) { + JPanel subPanel = TableLayoutHelper.createGapTableLayoutPane( + new Component[][]{new Component[]{new UILabel(crPropertyDescriptor.getDisplayName()), component}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L2, IntervalConstants.INTERVAL_L1); + subPanel.setBorder(BorderFactory.createEmptyBorder(0, IntervalConstants.INTERVAL_L5, 0, 0)); + return new Component[]{subPanel, null}; + } + return new Component[]{new UILabel(crPropertyDescriptor.getDisplayName()), component}; + } - private Component initEditorComponent(CRPropertyDescriptor crPropertyDescriptor, final XCreator xCreator) { + private Component initEditorComponent(final CRPropertyDescriptor crPropertyDescriptor, final XCreator xCreator) { Component component = null; try { // 如果已有的编辑器就生成对应的component Class editorClass = crPropertyDescriptor.getPropertyEditorClass(); + ExtendedPropertyEditor editor = null; if (editorClass != null) { - propertyEditor = initExtendEditor(crPropertyDescriptor, xCreator); - component = propertyEditor.getCustomEditor(); + editor = (ExtendedPropertyEditor) crPropertyDescriptor.createPropertyEditor(xCreator.toData()); + if (editor == null) { + Class propType = crPropertyDescriptor.getPropertyType(); + editor = TableUtils.getPropertyEditorClass(propType).newInstance(); + } + } else { Class propType = crPropertyDescriptor.getPropertyType(); - Class defaultEditorClass = TableUtils.getPropertyEditorClass(propType); + Class defaultEditorClass = TableUtils.getPropertyEditorClass(propType); if (defaultEditorClass == null) { defaultEditorClass = StringEditor.class; } - propertyEditor = defaultEditorClass.newInstance(); - component = propertyEditor.getCustomEditor(); + editor = defaultEditorClass.newInstance(); } - propertyEditor.addPropertyChangeListener(new PropertyChangeListener() { + propertyEditor = editor; + component = propertyEditor.getCustomEditor(); + final ExtendedPropertyEditor extendEditor = editor; + + extendEditor.addPropertyChangeListener(new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { + if (isPopulate) { + return; + } + if (ComparatorUtils.equals(extendEditor.getValue(), getValue(xCreator.toData()))) { + return; + } update(xCreator.toData()); + if (extendEditor.refreshInTime()) { + WidgetPropertyPane.getInstance().refreshDockingView(); + } + if (designer == null) { + return; + } + if ("widgetName".equals(crPropertyDescriptor.getName())) { + designer.getEditListenerTable().fireCreatorModified(xCreator, DesignerEvent.CREATOR_RENAMED); + } else { + designer.fireTargetModified(); + } + } }); } catch (Exception e) { @@ -58,32 +107,37 @@ public class CRPropertyDescriptorPane { } return component; } - - private PropertyEditor initExtendEditor(CRPropertyDescriptor crPropertyDescriptor, XCreator xCreator) throws Exception { - ExtendedPropertyEditor editor = (ExtendedPropertyEditor) crPropertyDescriptor.createPropertyEditor(xCreator.toData()); - if (editor == null) { - Class propType = crPropertyDescriptor.getPropertyType(); - editor = TableUtils.getPropertyEditorClass(propType).newInstance(); + + public void populate(Widget widget) { + try { + isPopulate = true; + Object value = getValue(widget); + propertyEditor.setValue(value); + isPopulate = false; + } catch (Exception e) { + FRContext.getLogger().error(e.getMessage(), e); } - return editor; } - public void populate(Widget widget) { + public Object getValue(Widget widget) { try { Method m = crPropertyDescriptor.getReadMethod(); Object value = m.invoke(widget); - propertyEditor.setValue(value); + return value; } catch (Exception e) { - + FRContext.getLogger().error(e.getMessage(), e); + return null; } - } public void update(Widget widget) { try { + Object value = propertyEditor.getValue(); Method m = crPropertyDescriptor.getWriteMethod(); - m.invoke(widget, propertyEditor.getValue()); + m.invoke(widget, value); + + crPropertyDescriptor.firePropertyChanged(); } catch (Exception e) { } diff --git a/designer_form/src/com/fr/design/designer/creator/PropertyGroupPane.java b/designer_form/src/com/fr/design/designer/creator/PropertyGroupPane.java index 9033426959..bb3c3a42fb 100644 --- a/designer_form/src/com/fr/design/designer/creator/PropertyGroupPane.java +++ b/designer_form/src/com/fr/design/designer/creator/PropertyGroupPane.java @@ -1,15 +1,16 @@ package com.fr.design.designer.creator; -import com.fr.base.FRContext; import com.fr.design.designer.IntervalConstants; import com.fr.design.dialog.BasicPane; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayoutHelper; -import com.fr.form.ui.FreeButton; +import com.fr.design.mainframe.FormDesigner; import com.fr.form.ui.Widget; -import javax.swing.*; -import java.awt.*; +import javax.swing.BorderFactory; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Component; /** * Created by kerry on 2017/9/7. @@ -18,20 +19,40 @@ public class PropertyGroupPane extends BasicPane { private CRPropertyDescriptor[] crPropertyDescriptors; private CRPropertyDescriptorPane[] crPropertyDescriptorPanes; private XCreator xCreator; + private String groupName; + private FormDesigner designer; + + public String getGroupName() { + return groupName; + } + + public void setGroupName(String groupName) { + this.groupName = groupName; + } + public PropertyGroupPane(CRPropertyDescriptor[] crPropertyDescriptors, XCreator xCreator) { this.crPropertyDescriptors = crPropertyDescriptors; this.xCreator = xCreator; - this.setLayout(FRGUIPaneFactory.createBorderLayout()); + initComponent(); + } + + + public PropertyGroupPane(CRPropertyDescriptor[] crPropertyDescriptors, XCreator xCreator, String groupName, FormDesigner designer) { + this.designer = designer; + this.groupName = groupName; + this.crPropertyDescriptors = crPropertyDescriptors; + this.xCreator = xCreator; initComponent(); } public void initComponent() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); int count = crPropertyDescriptors.length; crPropertyDescriptorPanes = new CRPropertyDescriptorPane[count]; Component[][] components = new Component[count][]; for (int i = 0; i < count; i++) { - crPropertyDescriptorPanes[i] = new CRPropertyDescriptorPane(crPropertyDescriptors[i], xCreator); + crPropertyDescriptorPanes[i] = new CRPropertyDescriptorPane(crPropertyDescriptors[i], xCreator, designer); components[i] = crPropertyDescriptorPanes[i].createTableLayoutComponent(); } @@ -40,8 +61,8 @@ public class PropertyGroupPane extends BasicPane { this.add(panel, BorderLayout.CENTER); } - public void populate(Widget widget){ - for(int i = 0; i< crPropertyDescriptorPanes.length; i++){ + public void populate(Widget widget) { + for (int i = 0; i < crPropertyDescriptorPanes.length; i++) { crPropertyDescriptorPanes[i].populate(widget); } } @@ -51,21 +72,5 @@ public class PropertyGroupPane extends BasicPane { return "PropertyGroupPane"; } - public static void main(String[] args) { - try{ - XCreator xCreator = new XButton(new FreeButton(),new Dimension(100, 100)); - PropertyGroupPane propertyGroupPane = new PropertyGroupPane(xCreator.supportedDescriptor(), xCreator); - JFrame jf = new JFrame("jFrame"); - jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - JPanel content = (JPanel) jf.getContentPane(); - content.setLayout(new BorderLayout()); - content.add(propertyGroupPane, BorderLayout.CENTER); - jf.setSize(439, 400); - jf.setVisible(true); - }catch (Exception e){ - FRContext.getLogger().error(e.getMessage()); - } - - } } diff --git a/designer_form/src/com/fr/design/designer/creator/XBorderStyleWidgetCreator.java b/designer_form/src/com/fr/design/designer/creator/XBorderStyleWidgetCreator.java index 7dd2a0bc04..ed995d29d2 100644 --- a/designer_form/src/com/fr/design/designer/creator/XBorderStyleWidgetCreator.java +++ b/designer_form/src/com/fr/design/designer/creator/XBorderStyleWidgetCreator.java @@ -145,16 +145,12 @@ public class XBorderStyleWidgetCreator extends XWidgetCreator{ return new Insets(padding.getTop(), padding.getLeft(), padding.getBottom(), padding.getRight()); } - public boolean supportSetVisibleOrEnable(){ - return false; - } - /** * data属性改变触发其他操作 * */ public void firePropertyChange(){ - initStyle(); + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/creator/XChartEditor.java b/designer_form/src/com/fr/design/designer/creator/XChartEditor.java index 2ac2c12e35..8e108ec945 100644 --- a/designer_form/src/com/fr/design/designer/creator/XChartEditor.java +++ b/designer_form/src/com/fr/design/designer/creator/XChartEditor.java @@ -263,4 +263,13 @@ public class XChartEditor extends XBorderStyleWidgetCreator { public JComponent getCoverPane(){ return coverPanel; } + + /** + * data属性改变触发其他操作 + * + */ + public void firePropertyChange(){ + initStyle(); + } + } \ 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 87f3e532e2..b46d9d2335 100644 --- a/designer_form/src/com/fr/design/designer/creator/XCreator.java +++ b/designer_form/src/com/fr/design/designer/creator/XCreator.java @@ -625,10 +625,18 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo } /** - * 是否支持设置可见和可用 + * 是否支持设置可见 * return boolean */ - public boolean supportSetVisibleOrEnable(){ + public boolean supportSetVisible(){ + return true; + } + + /** + * 是否支持设置可用 + * return boolean + */ + public boolean supportSetEnable(){ return true; } diff --git a/designer_form/src/com/fr/design/designer/creator/XElementCase.java b/designer_form/src/com/fr/design/designer/creator/XElementCase.java index c58ba60ef0..75c2bb80d0 100644 --- a/designer_form/src/com/fr/design/designer/creator/XElementCase.java +++ b/designer_form/src/com/fr/design/designer/creator/XElementCase.java @@ -318,4 +318,20 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme public void setXDescrption(String msg) { coverPanel.setHelpMsg(msg); } + + /** + * data属性改变触发其他操作 + * + */ + public void firePropertyChange(){ + initStyle(); + } + + /** + * 是否支持设置可用 + * return boolean + */ + public boolean supportSetEnable(){ + return false; + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/creator/XLayoutContainer.java b/designer_form/src/com/fr/design/designer/creator/XLayoutContainer.java index 27288cb62d..28427b9afb 100644 --- a/designer_form/src/com/fr/design/designer/creator/XLayoutContainer.java +++ b/designer_form/src/com/fr/design/designer/creator/XLayoutContainer.java @@ -527,4 +527,29 @@ public abstract class XLayoutContainer extends XBorderStyleWidgetCreator impleme public void setEditable(boolean isEditable) { this.editable = isEditable; } + + /** + * data属性改变触发其他操作 + * + */ + public void firePropertyChange(){ + initStyle(); + } + + /** + * 是否支持设置可见 + * return boolean + */ + public boolean supportSetVisible(){ + return false; + } + + /** + * 是否支持设置可用 + * return boolean + */ + public boolean supportSetEnable(){ + return false; + } + } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteBodyLayout.java b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteBodyLayout.java index 51ba4ef531..895eaf0310 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteBodyLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteBodyLayout.java @@ -99,4 +99,13 @@ public class XWAbsoluteBodyLayout extends XWAbsoluteLayout { initBorderStyle(); } + /** + * data属性改变触发其他操作 + * + */ + public void firePropertyChange(){ + initStyle(); + } + + } diff --git a/designer_form/src/com/fr/design/designer/creator/XWParameterLayout.java b/designer_form/src/com/fr/design/designer/creator/XWParameterLayout.java index 979d9bf082..084ab77947 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWParameterLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWParameterLayout.java @@ -210,4 +210,13 @@ public class XWParameterLayout extends XWAbsoluteLayout { protected String getIconName() { return "layout_absolute.png"; } + + /** + * data属性改变触发其他操作 + * + */ + public void firePropertyChange(){ + + } + } \ 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 97a12e80b8..cddcfac538 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWScaleLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWScaleLayout.java @@ -158,10 +158,6 @@ public class XWScaleLayout extends DedicateLayoutContainer { } - public boolean supportSetVisibleOrEnable(){ - return true; - } - /** * data属性改变触发其他操作 * diff --git a/designer_form/src/com/fr/design/designer/creator/XWidgetCreator.java b/designer_form/src/com/fr/design/designer/creator/XWidgetCreator.java index 21ff4ed20c..c1d9d950aa 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWidgetCreator.java +++ b/designer_form/src/com/fr/design/designer/creator/XWidgetCreator.java @@ -57,7 +57,7 @@ public abstract class XWidgetCreator extends XCreator { }), new CRPropertyDescriptor("labelName", this.data.getClass(), "getLabelName", "setLabelName") .setI18NName(Inter.getLocText("FR-Designer_Label_Name")) - .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "FR-Designer_Advanced") + .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced") }; } diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardLayout.java index 8a7db60597..2156478774 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardLayout.java @@ -443,4 +443,13 @@ public class XWCardLayout extends XLayoutContainer { public boolean supportRenameInWidgetTree() { return false; } + + /** + * data属性改变触发其他操作 + * + */ + public void firePropertyChange(){ + initStyle(); + } + } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/form/images/delete icon.png b/designer_form/src/com/fr/design/form/images/delete icon.png index 398c5db5c5..6fb2baac51 100644 Binary files a/designer_form/src/com/fr/design/form/images/delete icon.png and b/designer_form/src/com/fr/design/form/images/delete icon.png differ diff --git a/designer_form/src/com/fr/design/form/images/download icon.png b/designer_form/src/com/fr/design/form/images/download icon.png index 68ff09ac4f..b4cf81713f 100644 Binary files a/designer_form/src/com/fr/design/form/images/download icon.png and b/designer_form/src/com/fr/design/form/images/download icon.png differ diff --git a/designer_form/src/com/fr/design/form/images/install icon.png b/designer_form/src/com/fr/design/form/images/install icon.png index 37877a62c3..5cd5db7165 100644 Binary files a/designer_form/src/com/fr/design/form/images/install icon.png and b/designer_form/src/com/fr/design/form/images/install icon.png differ diff --git a/designer_form/src/com/fr/design/form/images/refresh.png b/designer_form/src/com/fr/design/form/images/refresh.png index d0efaf0482..3a5ef7368f 100644 Binary files a/designer_form/src/com/fr/design/form/images/refresh.png and b/designer_form/src/com/fr/design/form/images/refresh.png differ diff --git a/designer_form/src/com/fr/design/gui/core/FormWidgetOption.java b/designer_form/src/com/fr/design/gui/core/FormWidgetOption.java index b3fa73a26d..1569700601 100644 --- a/designer_form/src/com/fr/design/gui/core/FormWidgetOption.java +++ b/designer_form/src/com/fr/design/gui/core/FormWidgetOption.java @@ -1 +1,107 @@ -package com.fr.design.gui.core; import javax.swing.Icon; import com.fr.base.BaseUtils; import com.fr.form.ui.ElementCaseEditor; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WAbsoluteLayout; import com.fr.form.ui.container.WBorderLayout; import com.fr.form.ui.container.WCardLayout; import com.fr.form.ui.container.WFitLayout; import com.fr.form.ui.container.WHorizontalBoxLayout; import com.fr.form.ui.container.WParameterLayout; import com.fr.form.ui.container.WVerticalBoxLayout; import com.fr.general.Inter; /** * Author : Shockway * Date: 13-6-17 * Time: 上午10:40 */ public class FormWidgetOption extends WidgetOption { /** * 返回名字 * @return 名字 */ @Override public String optionName() { return null; } /** * 返回图标 * @return 图标 */ @Override public Icon optionIcon() { return null; } /** * 组件类 * @return 类 */ @Override public Class widgetClass() { return null; } /** * 返回组件 * @return 控件 */ @Override public Widget createWidget() { return null; } /* * 表单容器 */ public static WidgetOption[] getFormContainerInstance() { return new WidgetOption[] { ABSOLUTELAYOUTCONTAINER, BORDERLAYOUTCONTAINER, HORIZONTALBOXLAYOUTCONTAINER, VERTICALBOXLAYOUTCONTAINER, CARDLAYOUTCONTAINER, FITLAYOUTCONTAINER }; } /** * 表单工具栏上的布局 * @return 控件 */ public static WidgetOption[] getFormLayoutInstance() { return new WidgetOption[] {CARDLAYOUTCONTAINER, ABSOLUTELAYOUTCONTAINER}; } public static final WidgetOption ABSOLUTELAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter .getLocText("FR-Designer_Layout_Block_Absolute"), BaseUtils.readIcon("/com/fr/web/images/form/resources/layout_absolute_new.png"), WAbsoluteLayout.class); public static final WidgetOption BORDERLAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter .getLocText("FR-Designer_BorderLayout"), BaseUtils.readIcon("/com/fr/web/images/form/resources/layout_border.png"), WBorderLayout.class); public static final WidgetOption CARDLAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter .getLocText("FR-Designer_Layout_Block_Tab"), BaseUtils.readIcon("/com/fr/web/images/form/resources/card_layout_16.png"), WCardLayout.class); public static final WidgetOption HORIZONTALBOXLAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter .getLocText("FR-Designer_Layout-HBox"), BaseUtils.readIcon("/com/fr/web/images/form/resources/boxlayout_h_16.png"), WHorizontalBoxLayout.class); public static final WidgetOption VERTICALBOXLAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter .getLocText("FR-Designer_VerticalBoxLayout"), BaseUtils.readIcon("/com/fr/web/images/form/resources/boxlayout_v_16.png"), WVerticalBoxLayout.class); public static final WidgetOption FITLAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Designer-Layout_Adaptive_Layout"), BaseUtils.readIcon("/com/fr/web/images/form/resources/boxlayout_v_16.png"), WFitLayout.class); public static final WidgetOption PARAMETERCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter .getLocText("FR-Designer_Para-Body"), BaseUtils.readIcon("/com/fr/web/images/form/resources/layout_parameter.png"), WParameterLayout.class); public static final WidgetOption ELEMENTCASE = WidgetOptionFactory.createByWidgetClass(Inter .getLocText("FR-Designer_Form-Report"), BaseUtils.readIcon("/com/fr/web/images/form/resources/report_16.png"), ElementCaseEditor.class); } \ No newline at end of file +package com.fr.design.gui.core; + +import javax.swing.Icon; + +import com.fr.base.BaseUtils; +import com.fr.form.ui.ElementCaseEditor; +import com.fr.form.ui.Widget; +import com.fr.form.ui.container.WAbsoluteLayout; +import com.fr.form.ui.container.WBorderLayout; +import com.fr.form.ui.container.WCardLayout; +import com.fr.form.ui.container.WFitLayout; +import com.fr.form.ui.container.WHorizontalBoxLayout; +import com.fr.form.ui.container.WParameterLayout; +import com.fr.form.ui.container.WVerticalBoxLayout; +import com.fr.general.Inter; + +/** + * Author : Shockway + * Date: 13-6-17 + * Time: 上午10:40 + */ +public class FormWidgetOption extends WidgetOption { + + /** + * 返回名字 + * @return 名字 + */ + @Override + public String optionName() { + return null; + } + + /** + * 返回图标 + * @return 图标 + */ + @Override + public Icon optionIcon() { + return null; + } + + /** + * 组件类 + * @return 类 + */ + @Override + public Class widgetClass() { + return null; + } + + /** + * 返回组件 + * @return 控件 + */ + @Override + public Widget createWidget() { + return null; + } + + /* + * 表单容器 + */ + public static WidgetOption[] getFormContainerInstance() { + return new WidgetOption[] { ABSOLUTELAYOUTCONTAINER, BORDERLAYOUTCONTAINER, HORIZONTALBOXLAYOUTCONTAINER, VERTICALBOXLAYOUTCONTAINER, + CARDLAYOUTCONTAINER, FITLAYOUTCONTAINER }; + } + + /** + * 表单工具栏上的布局 + * @return 控件 + */ + public static WidgetOption[] getFormLayoutInstance() { + return new WidgetOption[] {CARDLAYOUTCONTAINER, ABSOLUTELAYOUTCONTAINER}; + } + + public static final WidgetOption ABSOLUTELAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter + .getLocText("FR-Designer_Layout_Block_Absolute"), BaseUtils.readIcon("/com/fr/design/images/buttonicon/layout_absolute_new.png"), + WAbsoluteLayout.class); + + public static final WidgetOption BORDERLAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter + .getLocText("FR-Designer_BorderLayout"), BaseUtils.readIcon("/com/fr/web/images/form/resources/layout_border.png"), + WBorderLayout.class); + + public static final WidgetOption CARDLAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter + .getLocText("FR-Designer_Layout_Block_Tab"), BaseUtils.readIcon("/com/fr/design/images/buttonicon/card_layout_16.png"), + WCardLayout.class); + + public static final WidgetOption HORIZONTALBOXLAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter + .getLocText("FR-Designer_Layout-HBox"), BaseUtils.readIcon("/com/fr/web/images/form/resources/boxlayout_h_16.png"), + WHorizontalBoxLayout.class); + + public static final WidgetOption VERTICALBOXLAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter + .getLocText("FR-Designer_VerticalBoxLayout"), BaseUtils.readIcon("/com/fr/web/images/form/resources/boxlayout_v_16.png"), + WVerticalBoxLayout.class); + + public static final WidgetOption FITLAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Designer-Layout_Adaptive_Layout"), + BaseUtils.readIcon("/com/fr/web/images/form/resources/boxlayout_v_16.png"), + WFitLayout.class); + + public static final WidgetOption PARAMETERCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter + .getLocText("FR-Designer_Para-Body"), BaseUtils.readIcon("/com/fr/web/images/form/resources/layout_parameter.png"), + WParameterLayout.class); + + public static final WidgetOption ELEMENTCASE = WidgetOptionFactory.createByWidgetClass(Inter + .getLocText("FR-Designer_Form-Report"), BaseUtils.readIcon("/com/fr/design/images/buttonicon/report_16.png"), + ElementCaseEditor.class); +} \ No newline at end of file diff --git a/designer_form/src/com/fr/design/mainframe/JForm.java b/designer_form/src/com/fr/design/mainframe/JForm.java index 09a5eac53d..79b4ccc960 100644 --- a/designer_form/src/com/fr/design/mainframe/JForm.java +++ b/designer_form/src/com/fr/design/mainframe/JForm.java @@ -13,7 +13,12 @@ import com.fr.design.designer.beans.actions.FormDeleteAction; import com.fr.design.designer.beans.actions.PasteAction; 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.creator.XComponent; +import com.fr.design.designer.creator.XCreator; +import com.fr.design.designer.creator.XCreatorUtils; +import com.fr.design.designer.creator.XLayoutContainer; +import com.fr.design.designer.creator.XWAbsoluteBodyLayout; +import com.fr.design.designer.creator.XWParameterLayout; import com.fr.design.designer.properties.FormWidgetAuthorityEditPane; import com.fr.design.event.TargetModifiedEvent; import com.fr.design.event.TargetModifiedListener; @@ -54,8 +59,17 @@ import com.fr.stable.ArrayUtils; import com.fr.stable.Constants; import com.fr.stable.bridge.StableFactory; -import javax.swing.*; -import java.awt.*; +import javax.swing.BorderFactory; +import javax.swing.Icon; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.SwingConstants; +import java.awt.BorderLayout; +import java.awt.CardLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; @@ -552,6 +566,24 @@ public class JForm extends JTemplate implements BaseJForm { } + @Override + public void setTarget(Form form) { + if (this.formDesign == null) { + super.setTarget(form); + return; + } + this.formDesign.setTarget(form); + } + + @Override + public Form getTarget() { + if (this.formDesign == null) { + return super.getTarget(); + } + + return this.formDesign.getTarget(); + } + @Override protected FormModelAdapter createDesignModel() { return new FormModelAdapter(this); diff --git a/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java b/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java index a01d4347a7..dab9b51481 100644 --- a/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java +++ b/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java @@ -2,6 +2,7 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; import com.fr.design.ExtraDesignClassManager; +import com.fr.design.constants.UIConstants; import com.fr.design.designer.beans.events.DesignerEditListener; import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.design.designer.creator.*; @@ -275,7 +276,8 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetPrope tabbedPane.show(center, tabTitles[index]); } }; - tabsHeaderIconPane.setNeedLeftRightOutLine(false); + tabsHeaderIconPane.setNeedLeftRightOutLine(true); + tabsHeaderIconPane.setBorder(BorderFactory.createMatteBorder(1, 0, 0, 0, UIConstants.SHADOW_GREY)); this.add(tabsHeaderIconPane, BorderLayout.NORTH); } diff --git a/designer_form/src/com/fr/design/mainframe/actions/NewFormAction.java b/designer_form/src/com/fr/design/mainframe/actions/NewFormAction.java index 78b17d4b3d..dfcc8805c2 100644 --- a/designer_form/src/com/fr/design/mainframe/actions/NewFormAction.java +++ b/designer_form/src/com/fr/design/mainframe/actions/NewFormAction.java @@ -22,7 +22,7 @@ public class NewFormAction extends UpdateAction { this.setMenuKeySet(NEW_FORM); this.setName(getMenuKeySet().getMenuKeySetName()); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/web/images/form/new_form3.png")); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/buttonicon/new_form3.png")); this.setAccelerator(getMenuKeySet().getKeyStroke()); } 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 7979e7ae34..31be76569b 100644 --- a/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java +++ b/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java @@ -16,6 +16,8 @@ import com.fr.design.designer.beans.*; import com.fr.design.designer.beans.events.DesignerEditListener; import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.design.designer.creator.XCreator; +import com.fr.design.gui.icombobox.UIComboBox; +import com.fr.design.gui.icombobox.UIComboBoxUI; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.mainframe.ComponentTree; import com.sun.java.swing.plaf.motif.*; @@ -24,7 +26,7 @@ import com.sun.java.swing.plaf.windows.*; /** * 控件树下拉列表框 */ -public class UITreeComboBox extends JComboBox{ +public class UITreeComboBox extends UIComboBox { /** * 显示用的树 */ @@ -53,6 +55,14 @@ public class UITreeComboBox extends JComboBox{ this.updateUI(); } + @Override + public void setRenderer(ListCellRenderer aRenderer) { + ListCellRenderer oldRenderer = renderer; + renderer = aRenderer; + firePropertyChange( "renderer", oldRenderer, renderer ); + invalidate(); + } + /** * 取得树 * @return JTree @@ -76,7 +86,7 @@ public class UITreeComboBox extends JComboBox{ } else if(cui instanceof MotifComboBoxUI){ cui = new MotifJTreeComboBoxUI(); } else { - cui = new WindowsJTreeComboBoxUI(); + cui = new UIJTreeComboBoxUI(); } setUI(cui); } @@ -107,6 +117,12 @@ public class UITreeComboBox extends JComboBox{ } } + class UIJTreeComboBoxUI extends UIComboBoxUI { + protected ComboPopup createPopup() { + return new TreePopup(comboBox); + } + } + class MotifJTreeComboBoxUI extends MotifComboBoxUI{ protected ComboPopup createPopup() { return new TreePopup(comboBox); diff --git a/designer_form/src/com/fr/design/mainframe/widget/accessibles/AccessibleElementCaseToolBarEditor.java b/designer_form/src/com/fr/design/mainframe/widget/accessibles/AccessibleElementCaseToolBarEditor.java index 1695892ba6..0fcf1e25bf 100644 --- a/designer_form/src/com/fr/design/mainframe/widget/accessibles/AccessibleElementCaseToolBarEditor.java +++ b/designer_form/src/com/fr/design/mainframe/widget/accessibles/AccessibleElementCaseToolBarEditor.java @@ -9,7 +9,7 @@ import com.fr.design.mainframe.widget.wrappers.ElementCaseToolBarWrapper; import com.fr.form.web.FormToolBarManager; import com.fr.stable.ArrayUtils; -import javax.swing.*; +import javax.swing.SwingUtilities; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -54,4 +54,5 @@ public class AccessibleElementCaseToolBarEditor extends UneditableAccessibleEdit options.addAll(defaultOptions); return options.toArray(new WidgetOption[options.size()]); } + } diff --git a/designer_form/src/com/fr/design/mainframe/widget/ui/BasicSetVisiblePropertyPane.java b/designer_form/src/com/fr/design/mainframe/widget/ui/BasicSetVisiblePropertyPane.java new file mode 100644 index 0000000000..e67bfc8bab --- /dev/null +++ b/designer_form/src/com/fr/design/mainframe/widget/ui/BasicSetVisiblePropertyPane.java @@ -0,0 +1,50 @@ +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.BorderFactory; +import javax.swing.JPanel; +import java.awt.BorderLayout; + +/** + * Created by kerry on 2017/9/30. + */ +public class BasicSetVisiblePropertyPane extends FormBasicPropertyPane { + private UICheckBox visibleCheckBox; + + public BasicSetVisiblePropertyPane() { + initComponent(); + } + + protected void initComponent() { + JPanel pane2 = FRGUIPaneFactory.createY_AXISBoxInnerContainer_M_Pane(); + pane2.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); + UICheckBox otherOtherConfig = createOtherConfig(); + if(otherOtherConfig != null){ + pane2.add(otherOtherConfig); + } + visibleCheckBox = new UICheckBox(Inter.getLocText("Widget-Visible"), true); + visibleCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0)); + pane2.add(visibleCheckBox); + this.add(pane2, BorderLayout.CENTER); + } + + public UICheckBox createOtherConfig(){ + return null; + } + + public void populate(Widget widget) { + super.populate(widget); + visibleCheckBox.setSelected(widget.isVisible()); + } + + public void update(Widget widget) { + super.update(widget); + widget.setVisible(visibleCheckBox.isSelected()); + } + + +} 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 index 8fd6c8b00f..d6aa882960 100644 --- a/designer_form/src/com/fr/design/mainframe/widget/ui/FormBasicWidgetPropertyPane.java +++ b/designer_form/src/com/fr/design/mainframe/widget/ui/FormBasicWidgetPropertyPane.java @@ -1,32 +1,24 @@ 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.*; +import javax.swing.BorderFactory; /** * Created by ibm on 2017/7/26. */ -public class FormBasicWidgetPropertyPane extends FormBasicPropertyPane { +public class FormBasicWidgetPropertyPane extends BasicSetVisiblePropertyPane { private UICheckBox enableCheckBox; - private UICheckBox visibleCheckBox; - public FormBasicWidgetPropertyPane (){ - initOtherPane(); + public FormBasicWidgetPropertyPane() { + super(); } - protected void initOtherPane() { - JPanel pane2 = FRGUIPaneFactory.createY_AXISBoxInnerContainer_M_Pane(); - pane2.setBorder(BorderFactory.createEmptyBorder(0,0,10,0)); + public UICheckBox createOtherConfig() { 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); + enableCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0)); + return enableCheckBox; } @Override @@ -37,13 +29,12 @@ public class FormBasicWidgetPropertyPane extends FormBasicPropertyPane { 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.setVisible(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 index fb75edbabb..66339e1780 100644 --- a/designer_form/src/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java +++ b/designer_form/src/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java @@ -18,11 +18,15 @@ import com.fr.form.ui.Widget; import com.fr.form.ui.container.WScaleLayout; import com.fr.form.ui.container.WTitleLayout; import com.fr.form.ui.widget.CRBoundsWidget; +import com.fr.general.ComparatorUtils; import com.fr.general.Inter; import com.fr.stable.StringUtils; -import javax.swing.*; -import java.awt.*; +import javax.swing.BorderFactory; +import javax.swing.JComponent; +import javax.swing.JPanel; +import java.awt.BorderLayout; + /** * Created by ibm on 2017/7/25. @@ -105,6 +109,8 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane { private void initComponents() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); + XCreator innerCreator = getXCreatorDedicated(); + final JPanel jPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); BasicScrollPane basicScrollPane = new BasicScrollPane() { @Override @@ -123,36 +129,37 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane { } }; this.add(basicScrollPane, BorderLayout.CENTER); - - if (xCreator.supportSetVisibleOrEnable()) { - widgetPropertyPane = new FormBasicWidgetPropertyPane(); - } else { - widgetPropertyPane = new FormBasicPropertyPane(); - } - - UIExpandablePane uiExpandablePane = new UIExpandablePane(Inter.getLocText("FR-Designer_Basic"), 280, 20, widgetPropertyPane); - - jPanel.add(uiExpandablePane, BorderLayout.NORTH); - attriCardPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - - jPanel.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0)); - jPanel.add(attriCardPane, BorderLayout.CENTER); + jPanel.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0)); + final boolean isExtraWidget = FormWidgetDefinePaneFactoryBase.isExtraXWidget(innerCreator.toData()); this.listener = new AttributeChangeListener() { @Override public void attributeChange() { - updateCreator(); + if(!isExtraWidget){ + updateCreator(); + } + updateWidgetBound(); } }; + if(isExtraWidget){ + return; + } + + widgetPropertyPane = WidgetBasicPropertyPaneFactory.createBasicPropertyPane(innerCreator); + + UIExpandablePane uiExpandablePane = new UIExpandablePane(Inter.getLocText("FR-Designer_Basic"), 280, 20, widgetPropertyPane); + + jPanel.add(uiExpandablePane, BorderLayout.NORTH); + } private void initDefinePane() { currentEditorDefinePane = null; XCreator creator = getXCreatorDedicated(); - FormWidgetDefinePaneFactoryBase.RN rn = FormWidgetDefinePaneFactoryBase.createWidgetDefinePane(creator, creator.toData(), new Operator() { + FormWidgetDefinePaneFactoryBase.RN rn = FormWidgetDefinePaneFactoryBase.createWidgetDefinePane(creator, designer, creator.toData(), new Operator() { @Override public void did(DataCreatorUI ui, String cardName) { //todo @@ -166,7 +173,7 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane { currentEditorDefinePane = definePane; } - private XCreator getXCreatorDedicated(){ + private XCreator getXCreatorDedicated() { boolean dedicateLayout = xCreator.acceptType(XWScaleLayout.class) && xCreator.getComponentCount() > 0 && ((XCreator) xCreator.getComponent(0)).shouldScaleCreator() || xCreator.acceptType(XWTitleLayout.class); return dedicateLayout ? (XCreator) xCreator.getComponent(0) : xCreator; } @@ -192,23 +199,33 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane { innerWidget = crBoundsWidget.getWidget(); } currentEditorDefinePane.populateBean(innerWidget); - widgetPropertyPane.populate(innerWidget); + if(widgetPropertyPane != null){ + widgetPropertyPane.populate(innerWidget); + } reinitAllListeners(); this.addAttributeChangeListener(listener); } public void updateCreator() { + currentEditorDefinePane.setGlobalName(getGlobalName()); Widget widget = currentEditorDefinePane.updateBean(); - widgetPropertyPane.update(widget); - if (widgetBoundPane != null) { - widgetBoundPane.update(); + if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_Widget_Name")) && widgetPropertyPane != null) { + widgetPropertyPane.update(widget); + xCreator.resetCreatorName(widget.getWidgetName()); + designer.getEditListenerTable().fireCreatorModified(xCreator, DesignerEvent.CREATOR_RENAMED); + return; } - xCreator.resetCreatorName(widget.getWidgetName()); - designer.getEditListenerTable().fireCreatorModified(xCreator, DesignerEvent.CREATOR_RENAMED); fireValueChanged(); } + public void updateWidgetBound (){ + if (widgetBoundPane != null && ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_Coords_And_Size"))) { + widgetBoundPane.update(); + } + designer.refreshDesignerUI(); + } + @Override /** @@ -222,7 +239,6 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane { XCreator creator = getXCreatorDedicated(); creator.firePropertyChange(); designer.fireTargetModified(); - designer.refreshDesignerUI(); } public String getIconPath() { diff --git a/designer_form/src/com/fr/design/mainframe/widget/ui/WidgetBasicPropertyPaneFactory.java b/designer_form/src/com/fr/design/mainframe/widget/ui/WidgetBasicPropertyPaneFactory.java new file mode 100644 index 0000000000..db98069094 --- /dev/null +++ b/designer_form/src/com/fr/design/mainframe/widget/ui/WidgetBasicPropertyPaneFactory.java @@ -0,0 +1,21 @@ +package com.fr.design.mainframe.widget.ui; + +import com.fr.design.designer.creator.XCreator; + +/** + * Created by kerry on 2017/9/30. + */ +public class WidgetBasicPropertyPaneFactory { + + public static FormBasicPropertyPane createBasicPropertyPane(XCreator xCreator){ + if(xCreator.supportSetVisible() && xCreator.supportSetEnable()){ + return new FormBasicWidgetPropertyPane(); + } + if(xCreator.supportSetVisible()){ + return new BasicSetVisiblePropertyPane(); + }else{ + return new FormBasicPropertyPane(); + } + + } +} diff --git a/designer_form/src/com/fr/design/parameter/RootDesignDefinePane.java b/designer_form/src/com/fr/design/parameter/RootDesignDefinePane.java index 6cb07d4f04..3a93e4feca 100644 --- a/designer_form/src/com/fr/design/parameter/RootDesignDefinePane.java +++ b/designer_form/src/com/fr/design/parameter/RootDesignDefinePane.java @@ -66,7 +66,7 @@ public class RootDesignDefinePane extends AbstractDataModify { Component[][] components = new Component[][]{ new Component[]{new UILabel(Inter.getLocText("Form-Desin_Width")), designerWidth}, }; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_L2, IntervalConstants.INTERVAL_L1); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); JPanel jPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); jPanel.add(panel); @@ -98,7 +98,7 @@ public class RootDesignDefinePane extends AbstractDataModify { new Component[]{useParamsTemplate, null}, new Component[]{new UILabel(Inter.getLocText("FR-Designer_WidgetDisplyPosition")), hAlignmentPane} }; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_L2, IntervalConstants.INTERVAL_L1); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W0, IntervalConstants.INTERVAL_L1); panel.setBorder(BorderFactory.createEmptyBorder(IntervalConstants.INTERVAL_L1, 0, IntervalConstants.INTERVAL_L1, 0)); jPanel.add(panel); return jPanel; diff --git a/designer_form/src/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java b/designer_form/src/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java index 7c39755491..47efd40fe8 100644 --- a/designer_form/src/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java +++ b/designer_form/src/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java @@ -3,6 +3,8 @@ package com.fr.design.widget; import com.fr.base.FRContext; import com.fr.design.designer.creator.XCreator; import com.fr.design.gui.core.WidgetConstants; +import com.fr.design.mainframe.FormDesigner; +import com.fr.design.widget.ui.designer.WidgetDefinePane; import com.fr.design.parameter.RootDesignDefinePane; import com.fr.design.widget.ui.designer.*; import com.fr.design.widget.ui.designer.layout.*; @@ -11,7 +13,6 @@ 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; @@ -66,8 +67,6 @@ public class FormWidgetDefinePaneFactoryBase { defineMap.put(WCardLayout.class, new Appearance(WCardLayoutDefinePane.class, "wCardLayout")); defineMap.put(Label.class, new Appearance(LabelDefinePane.class, "label")); defineMap.put(WTabFitLayout.class, new Appearance(WTabFitLayoutDefinePane.class, "wTabFitLayout")); - //todo 添加扩展控件接口 -// defineMap.putAll(getOtherWidgetOptionMap()); } @@ -76,11 +75,12 @@ public class FormWidgetDefinePaneFactoryBase { } - public static RN createWidgetDefinePane(XCreator creator, Widget widget, Operator operator) { - Appearance dn = defineMap.get(widget.getClass()); - if(dn == null){ - dn = new Appearance(DefaultWidgetDefinePane.class, "default"); + public static RN createWidgetDefinePane(XCreator creator, FormDesigner designer, Widget widget, Operator operator) { + if(isExtraXWidget(widget)){ + WidgetDefinePane widgetDefinePane = new WidgetDefinePane(creator, designer); + return new RN(widgetDefinePane, widgetDefinePane.title4PopupWindow()); } + Appearance dn = defineMap.get(widget.getClass()); DataModify definePane = null; try { Constructor con = dn.getDefineClass().getConstructor(XCreator.class); @@ -92,6 +92,10 @@ public class FormWidgetDefinePaneFactoryBase { return new RN(definePane, dn.getDisplayName()); } + public static boolean isExtraXWidget(Widget widget){ + return defineMap.get(widget.getClass()) == null; + } + public static class RN { private DataModify definePane; private String cardName; 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 index 7e521ac916..36c6531c95 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/AbstractDataModify.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/AbstractDataModify.java @@ -3,30 +3,50 @@ 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.mainframe.FormDesigner; import com.fr.design.widget.DataModify; -import javax.swing.*; +import javax.swing.JComponent; + /** * Created by kerry on 17/07/28. */ public abstract class AbstractDataModify extends BasicBeanPane implements DataModify { protected XCreator creator; + protected FormDesigner designer; + protected String globalName; public AbstractDataModify(XCreator xCreator){ this.creator = xCreator; } + + public AbstractDataModify(XCreator xCreator, FormDesigner designer){ + this.creator = xCreator; + this.designer = designer; + } @Override public DataCreatorUI dataUI() { return null; } + @Override + public String title4PopupWindow() { + return creator.createDefaultName(); + } + @Override public JComponent toSwingComponent() { return this; } + public void setGlobalName(String globalName){ + this.globalName = globalName; + } + public String getGlobalName(){ + return globalName; + } } \ 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 index 5d5d093b12..d0ed62b0a7 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/ButtonDefinePane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/ButtonDefinePane.java @@ -1,5 +1,6 @@ package com.fr.design.widget.ui.designer; +import com.fr.design.designer.IntervalConstants; import com.fr.design.designer.creator.XCreator; import com.fr.design.foldablepane.UIExpandablePane; import com.fr.design.gui.ilable.UILabel; @@ -52,7 +53,7 @@ public abstract class ButtonDefinePane extends AbstractDataMod {new UILabel(Inter.getLocText("FR-Designer_Button-Hotkeys")), hotkeysTextField} }; hotkeysTextField.setToolTipText(StableUtils.join(ButtonConstants.HOTKEYS, ",")); - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(n_components, rowSize, columnSize, rowCount, 10, 10); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(n_components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); JPanel boundsPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); boundsPane.add(panel); diff --git a/designer_form/src/com/fr/design/widget/ui/designer/CheckBoxDefinePane.java b/designer_form/src/com/fr/design/widget/ui/designer/CheckBoxDefinePane.java index fd84442462..ab65dbda6f 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/CheckBoxDefinePane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/CheckBoxDefinePane.java @@ -1,5 +1,6 @@ package com.fr.design.widget.ui.designer; +import com.fr.design.designer.IntervalConstants; import com.fr.design.designer.creator.XCreator; import com.fr.design.foldablepane.UIExpandablePane; import com.fr.design.gui.ilable.UILabel; @@ -43,7 +44,7 @@ public class CheckBoxDefinePane extends AbstractDataModify { double[] rowSize = {p, p, p, p, p, p}; double[] columnSize = {p, f}; int[][] rowCount = {{1, 1},{1, 1}, {1, 3},{1, 1}}; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 10, 7); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); JPanel boundsPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); boundsPane.add(panel); diff --git a/designer_form/src/com/fr/design/widget/ui/designer/CheckBoxGroupDefinePane.java b/designer_form/src/com/fr/design/widget/ui/designer/CheckBoxGroupDefinePane.java index 15ed7b1042..1ffee293a5 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/CheckBoxGroupDefinePane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/CheckBoxGroupDefinePane.java @@ -1,6 +1,7 @@ package com.fr.design.widget.ui.designer; import com.fr.design.data.DataCreatorUI; +import com.fr.design.designer.IntervalConstants; import com.fr.design.designer.creator.XCreator; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.layout.TableLayout; @@ -50,8 +51,7 @@ public class CheckBoxGroupDefinePane extends ButtonGroupDefinePane public JPanel createOtherPane(){ supportTagCheckBox = new UICheckBox(Inter.getLocText("Form-SupportTag"), true); + supportTagCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); checkBoxDictPane = new CheckBoxDictPane(); double f = TableLayout.FILL; @@ -49,8 +51,7 @@ public class ComboCheckBoxDefinePane extends DictEditorDefinePane double[] rowSize = {p, p}; double[] columnSize = {p, f}; int[][] rowCount = {{1, 1},{1, 1}}; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 10, 7); - panel.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0)); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_L2, IntervalConstants.INTERVAL_L1); return panel; } diff --git a/designer_form/src/com/fr/design/widget/ui/designer/CustomWritableRepeatEditorPane.java b/designer_form/src/com/fr/design/widget/ui/designer/CustomWritableRepeatEditorPane.java index 96b4cc46a6..a962078715 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/CustomWritableRepeatEditorPane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/CustomWritableRepeatEditorPane.java @@ -1,6 +1,5 @@ package com.fr.design.widget.ui.designer; -import com.fr.base.GraphHelper; import com.fr.design.designer.creator.XCreator; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.utils.gui.GUICoreUtils; @@ -18,8 +17,6 @@ import java.awt.*; public abstract class CustomWritableRepeatEditorPane extends WritableRepeatEditorPane { private UICheckBox customDataCheckBox; - private static final int CUSTOM_DATA_CHECK_BOX_WIDTH = GraphHelper.getLocTextWidth("Form-Allow_CustomData") + 30; - private static final int CUSTOM_DATA_CHECK_BOX_HEIGHT = 30; public CustomWritableRepeatEditorPane(XCreator xCreator) { super(xCreator); @@ -28,9 +25,7 @@ public abstract class CustomWritableRepeatEditorPane(new String[] {Inter.getLocText("Date") , Inter.getLocText("String")}); JPanel formatHead = createFormatHead(); startDv = new DateValuePane(); @@ -64,20 +66,19 @@ public class DateEditorDefinePane extends DirectWriteEditorDefinePane可以自动换行 + super.setText("" + text + ""); + } + }; sampleLabel.setHorizontalAlignment(SwingConstants.CENTER); sampleLabel.setFont(FRContext.getDefaultValues().getFRFont()); return sampleLabel; diff --git a/designer_form/src/com/fr/design/widget/ui/designer/DirectWriteEditorDefinePane.java b/designer_form/src/com/fr/design/widget/ui/designer/DirectWriteEditorDefinePane.java index 4663f3c75f..6f96a03f0d 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/DirectWriteEditorDefinePane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/DirectWriteEditorDefinePane.java @@ -1,5 +1,6 @@ package com.fr.design.widget.ui.designer; +import com.fr.design.designer.IntervalConstants; import com.fr.design.designer.creator.XCreator; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; @@ -44,8 +45,8 @@ public abstract class DirectWriteEditorDefinePane e double[] rowSize = {p, p, p, p, p, p, p, p}; double[] columnSize = {p, f}; int[][] rowCount = {{1, 1},{1, 3},{1, 1},{1, 1},{1,1},{1,1}}; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 10, 7); - panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); +// panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); advancePane.add(panel, BorderLayout.NORTH); JPanel otherPane = createOtherPane(); if(otherPane != null){ @@ -75,9 +76,8 @@ public abstract class DirectWriteEditorDefinePane e directWriteCheckBox = new UICheckBox(Inter.getLocText("Form-Allow_Edit"), false); directWriteCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); JPanel otherContentPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); - otherContentPane.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); + otherContentPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0)); JPanel jPanel = GUICoreUtils.createFlowPane(new JComponent[]{directWriteCheckBox}, FlowLayout.LEFT, 0); - jPanel.setPreferredSize(new Dimension(220, 30)); otherContentPane.add(jPanel); return otherContentPane; } diff --git a/designer_form/src/com/fr/design/widget/ui/designer/FieldEditorDefinePane.java b/designer_form/src/com/fr/design/widget/ui/designer/FieldEditorDefinePane.java index f6eac1df8e..8392ac2b6c 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/FieldEditorDefinePane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/FieldEditorDefinePane.java @@ -43,8 +43,11 @@ public abstract class FieldEditorDefinePane extends Abstr fontSizePane = new UISpinner(0, 20, 1, 0); errorMsgTextField = new UITextField(); JPanel contentPane = this.setFirstContentPane(); + JPanel jPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); + jPanel.add(contentPane, BorderLayout.CENTER); + contentPane.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); if (contentPane != null) { - UIExpandablePane uiExpandablePane = new UIExpandablePane(Inter.getLocText("FR-Designer_Advanced"), 280, 20, contentPane); + UIExpandablePane uiExpandablePane = new UIExpandablePane(Inter.getLocText("FR-Designer_Advanced"), 280, 20, jPanel); this.add(uiExpandablePane, BorderLayout.NORTH); } this.addValidatePane(); @@ -110,7 +113,7 @@ public abstract class FieldEditorDefinePane extends Abstr final UILabel uiLabel = new UILabel(Inter.getLocText("FR-Designer_Widget_Error_Tip")); JPanel borderPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); final JPanel errorTipPane = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{new Component[]{uiLabel, errorMsgTextField}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L1, LayoutConstants.VGAP_MEDIUM); - errorTipPane.setBorder(BorderFactory.createEmptyBorder(0, IntervalConstants.INTERVAL_L5, 0, 0)); + errorTipPane.setBorder(BorderFactory.createEmptyBorder(IntervalConstants.INTERVAL_L6, IntervalConstants.INTERVAL_L5, 0, 0)); borderPane.add(errorTipPane, BorderLayout.CENTER); allowBlankCheckBox.addItemListener(new ItemListener() { @Override @@ -124,7 +127,7 @@ public abstract class FieldEditorDefinePane extends Abstr new Component[]{allowBlankCheckBox}, new Component[]{borderPane}, }; - JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L6, IntervalConstants.INTERVAL_L6); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_L6, 0); panel.setBorder(BorderFactory.createEmptyBorder(IntervalConstants.INTERVAL_L1, 0, IntervalConstants.INTERVAL_L1, 0)); validatePane.add(panel, BorderLayout.NORTH); JPanel contentPane = this.setValidatePane(); diff --git a/designer_form/src/com/fr/design/widget/ui/designer/LabelDefinePane.java b/designer_form/src/com/fr/design/widget/ui/designer/LabelDefinePane.java index 30d703aee5..2cf3c72bb6 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/LabelDefinePane.java +++ b/designer_form/src/com/fr/design/widget/ui/designer/LabelDefinePane.java @@ -1,6 +1,7 @@ package com.fr.design.widget.ui.designer; import com.fr.base.BaseUtils; +import com.fr.design.designer.IntervalConstants; import com.fr.design.designer.creator.XCreator; import com.fr.design.foldablepane.UIExpandablePane; import com.fr.design.gui.ibutton.UIButtonGroup; @@ -44,7 +45,10 @@ public class LabelDefinePane extends AbstractDataModify