diff --git a/designer/src/com/fr/design/dscolumn/DSColumnAdvancedEditorPane.java b/designer/src/com/fr/design/dscolumn/DSColumnAdvancedEditorPane.java new file mode 100644 index 000000000..57af1a340 --- /dev/null +++ b/designer/src/com/fr/design/dscolumn/DSColumnAdvancedEditorPane.java @@ -0,0 +1,38 @@ +package com.fr.design.dscolumn; + +import com.fr.design.mainframe.cell.CellEditorPane; +import com.fr.report.cell.TemplateCellElement; + + +/** + * 单元格元素 数据列 基本设置内容面板 + * + * @author yaoh.wu + * @version 2017年7月25日 + * @since 9.0 + */ +public class DSColumnAdvancedEditorPane extends CellEditorPane { + + + @Override + public String getIconPath() { + return "Advanced"; + } + + @Override + public String title4PopupWindow() { + return "Advanced"; + } + + + @Override + public void update() { + + } + + @Override + public void populate(TemplateCellElement cellElement) { + + } + +} diff --git a/designer/src/com/fr/design/dscolumn/DSColumnBasicEditorPane.java b/designer/src/com/fr/design/dscolumn/DSColumnBasicEditorPane.java new file mode 100644 index 000000000..ef0c5e0b5 --- /dev/null +++ b/designer/src/com/fr/design/dscolumn/DSColumnBasicEditorPane.java @@ -0,0 +1,84 @@ +package com.fr.design.dscolumn; + +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.mainframe.cell.CellEditorPane; +import com.fr.report.cell.TemplateCellElement; + +import javax.swing.*; +import java.awt.*; + +/** + * 单元格元素 数据列 高级设置内容面板 + * + * @author yaoh.wu + * @version 2017年7月25日 + * @since 9.0 + */ +public class DSColumnBasicEditorPane extends CellEditorPane { + + //数据集和数据列 + private SelectedDataColumnPane dataPane; + //数据分组设置 + private ResultSetGroupDockingPane groupPane; + //当前编辑的单元格 + private TemplateCellElement cellElement; + //条件过滤按钮面板 + private JPanel conditionPane; + + public DSColumnBasicEditorPane(TemplateCellElement cellElement, SelectedDataColumnPane dataPane, ResultSetGroupDockingPane groupPane, JPanel conditionPane) { + this.setLayout(new BorderLayout()); + this.cellElement = cellElement; + this.dataPane = dataPane; + this.groupPane = groupPane; + this.conditionPane = conditionPane; + this.add(this.createContentPane(), BorderLayout.CENTER); + } + + + @Override + public String getIconPath() { + return "Basic"; + } + + @Override + public String title4PopupWindow() { + return "Basic"; + } + + + @Override + public void update() { + dataPane.update(this.cellElement); + groupPane.update(); + } + + @Override + public void populate(TemplateCellElement cellElement) { + this.cellElement = cellElement; + dataPane.populate(null, cellElement); + groupPane.populate(cellElement); + } + + + /** + * 创建有内容的面板显示信息 + * + * @return content JPanel + */ + private JPanel createContentPane() { + double p = TableLayout.PREFERRED; + double f = TableLayout.FILL; + double[] columnSize = {f}; + double[] rowSize = {p, p, p}; + Component[][] components = new Component[][]{ + //数据集列选择 + new Component[]{this.dataPane}, + //数据分组设置 + new Component[]{this.groupPane}, + //条件过滤 + new Component[]{this.conditionPane} + }; + return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); + } +} diff --git a/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java b/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java index 780e81e94..dd583e1ef 100644 --- a/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java +++ b/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java @@ -1,247 +1,252 @@ -package com.fr.design.dscolumn; - -import com.fr.base.Parameter; -import com.fr.design.data.DesignTableDataManager; -import com.fr.data.SimpleDSColumn; -import com.fr.data.TableDataSource; -import com.fr.design.data.datapane.TableDataComboBox; -import com.fr.design.data.tabledata.wrapper.TableDataWrapper; -import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.itableeditorpane.ParameterTableModel; -import com.fr.design.gui.itableeditorpane.UITableEditorPane; -import com.fr.design.gui.icombobox.LazyComboBox; -import com.fr.design.layout.TableLayout; -import com.fr.design.layout.TableLayoutHelper; -import com.fr.design.mainframe.DesignerContext; -import com.fr.design.dialog.BasicDialog; -import com.fr.design.dialog.BasicPane; -import com.fr.design.dialog.DialogActionAdapter; -import com.fr.general.Inter; -import com.fr.general.data.TableDataColumn; -import com.fr.report.cell.CellElement; -import com.fr.report.cell.TemplateCellElement; -import com.fr.report.cell.cellattr.core.group.DSColumn; -import com.fr.stable.ParameterProvider; -import com.fr.stable.StringUtils; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Pattern; - -public class SelectedDataColumnPane extends BasicPane { - protected UITableEditorPane editorPane; - protected Parameter[] ps; - - protected TableDataComboBox tableNameComboBox; - protected LazyComboBox columnNameComboBox; - private ItemListener itemListener; - - private UIButton paramButton; - - public SelectedDataColumnPane() { - this(true); - } - - public SelectedDataColumnPane(boolean showParameterButton) { - initComponent(showParameterButton); - } - - /** - * 初始化组件 - * - * @param showParameterButton 是否显示参数按钮 - * - */ - public void initComponent(boolean showParameterButton) { - initTableNameComboBox(); - if (showParameterButton) { - initWithParameterButton(); - } - columnNameComboBox = new LazyComboBox() { - - @Override - public Object[] load() { - List l = calculateColumnNameList(); - return l.toArray(new String[l.size()]); - } - - }; - columnNameComboBox.setEditable(true); - double p = TableLayout.PREFERRED; - UILabel label1 = new UILabel(Inter.getLocText("TableData") + ":"); - UILabel label2 = new UILabel(Inter.getLocText("DataColumn") + ":"); - if (showParameterButton) { - label1.setPreferredSize(new Dimension(200, 25)); - label2.setPreferredSize(new Dimension(200, 25)); - } - if (showParameterButton) { - Component[][] comps = {{label1, null, label2}, {tableNameComboBox, paramButton, columnNameComboBox}}; - this.add(TableLayoutHelper.createTableLayoutPane(comps, new double[]{p, p}, new double[]{p, p, p})); - } else { - double f = TableLayout.FILL; - double[] columnSize = {p, f}; - double[] rowSize = {p, p}; - Component[][] components = new Component[][]{ - new Component[]{label1, tableNameComboBox}, - new Component[]{label2, columnNameComboBox} - }; - JPanel jPanel = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); - this.setLayout(new BorderLayout()); - this.add(jPanel, BorderLayout.CENTER); - } - } - - protected void initTableNameComboBox() { - tableNameComboBox = new TableDataComboBox(DesignTableDataManager.getEditingTableDataSource()); - tableNameComboBox.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - columnNameComboBox.setLoaded(false); -// columnNameComboBox.loadList(); - } - }); - tableNameComboBox.setPreferredSize(new Dimension(100, 20)); - } - - private void initWithParameterButton() { - editorPane = new UITableEditorPane(new ParameterTableModel()); - paramButton = new UIButton(Inter.getLocText("TableData_Dynamic_Parameter_Setting")); - paramButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - BasicDialog paramDialog = editorPane.showSmallWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { - @Override - public void doOk() { - List parameterList = editorPane.update(); - ps = parameterList.toArray(new Parameter[parameterList.size()]); - } - }); - - editorPane.populate(ps == null ? new Parameter[0] : ps); - paramDialog.setVisible(true); - } - }); - } - - @Override - protected String title4PopupWindow() { - return "DSColumn"; - } - - public void populate(TableDataSource source, TemplateCellElement cellElement) { - if (cellElement == null) { - return; - } - - if (itemListener != null) { - removeListener(itemListener); - } - - Object value = cellElement.getValue(); - if (!(value instanceof DSColumn)) { - return; - } - - DSColumn dsColumn = (DSColumn) value; - String dsName = dsColumn.getDSName(); - tableNameComboBox.setSelectedTableDataByName(dsName); - columnNameComboBox.setSelectedItem(TableDataColumn.getColumnName(dsColumn.getColumn())); - ps = dsColumn.getParameters(); - - addListener(itemListener); - } - - public void update(CellElement cellElement) { - if (cellElement == null) { - return; - } - Object value = cellElement.getValue(); - if (this.tableNameComboBox.getSelectedItem() == null && this.columnNameComboBox.getSelectedItem() == null) { - return; - } - DSColumn dsColumn = null; - if (value == null || !(value instanceof DSColumn)) { - dsColumn = new DSColumn(); - cellElement.setValue(dsColumn); - } - dsColumn = (DSColumn) cellElement.getValue(); - - SimpleDSColumn simpleDSColumn = updateColumnPane(); - dsColumn.setDSName(simpleDSColumn.getDsName()); - dsColumn.setColumn(simpleDSColumn.getColumn()); - - dsColumn.setParameters((ps != null && ps.length > 0) ? ps : null); - } - - /** - * 更新面板 - * - * @return 更新后的值 - * - */ - public SimpleDSColumn updateColumnPane() { - SimpleDSColumn dsColumn = new SimpleDSColumn(); - TableDataWrapper tableDataWrappe = this.tableNameComboBox.getSelectedItem(); - if (tableDataWrappe == null) { - return null; - } - dsColumn.setDsName(tableDataWrappe.getTableDataName()); - TableDataColumn column; - String columnExp = (String) this.columnNameComboBox.getSelectedItem(); - if (isColumnName(columnExp)) { - String number = columnExp.substring(1); - Pattern pattern = Pattern.compile("[^\\d]"); - if (pattern.matcher(number).find()) { - column = TableDataColumn.createColumn(columnExp); - } else { - int serialNumber = Integer.parseInt(columnExp.substring(1)); - column = TableDataColumn.createColumn(serialNumber); - } - } else { - column = TableDataColumn.createColumn(columnExp); - } - dsColumn.setColumn(column); - return dsColumn; - } - - private boolean isColumnName(String columnExp) { - return StringUtils.isNotBlank(columnExp) && (columnExp.length() > 0 && columnExp.charAt(0) == '#') && !columnExp.endsWith("#"); - - } - - /** - * 添加监听事件 - * - * @param i 监听事件 - * - */ - public void addListener(ItemListener i) { - itemListener = i; - tableNameComboBox.addItemListener(i); - columnNameComboBox.addItemListener(i); - } - - /** - * 移除监听事件 - * - * @param i 监听事件 - * - */ - public void removeListener(ItemListener i) { - tableNameComboBox.removeItemListener(i); - columnNameComboBox.removeItemListener(i); - } - - private List calculateColumnNameList() { - if (this.tableNameComboBox.getSelectedItem() != null) { - return this.tableNameComboBox.getSelectedItem().calculateColumnNameList(); - } - return new ArrayList(); - } +package com.fr.design.dscolumn; + +import com.fr.base.Parameter; +import com.fr.data.SimpleDSColumn; +import com.fr.data.TableDataSource; +import com.fr.design.data.DesignTableDataManager; +import com.fr.design.data.datapane.TableDataComboBox; +import com.fr.design.data.tabledata.wrapper.TableDataWrapper; +import com.fr.design.dialog.BasicDialog; +import com.fr.design.dialog.BasicPane; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.icombobox.LazyComboBox; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.itableeditorpane.ParameterTableModel; +import com.fr.design.gui.itableeditorpane.UITableEditorPane; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.mainframe.DesignerContext; +import com.fr.general.Inter; +import com.fr.general.data.TableDataColumn; +import com.fr.report.cell.CellElement; +import com.fr.report.cell.TemplateCellElement; +import com.fr.report.cell.cellattr.core.group.DSColumn; +import com.fr.stable.ParameterProvider; +import com.fr.stable.StringUtils; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; + +/** + * 数据集列动态参数设置组件 + * + * @author yaoh.wu + * @version 2017年7月26日 + * 9.0设计器更新,修改动态参数注入按钮部分,使其显示动态参数按钮时能在右侧边栏正常显示 + * @since 8.0 + */ +public class SelectedDataColumnPane extends BasicPane { + private UITableEditorPane editorPane; + private Parameter[] ps; + + TableDataComboBox tableNameComboBox; + LazyComboBox columnNameComboBox; + private ItemListener itemListener; + + private UIButton paramButton; + + public SelectedDataColumnPane() { + this(true); + } + + SelectedDataColumnPane(boolean showParameterButton) { + initComponent(showParameterButton); + } + + /** + * 初始化组件 + * + * @param showParameterButton 是否显示参数按钮 + */ + public void initComponent(boolean showParameterButton) { + initTableNameComboBox(); + if (showParameterButton) { + initWithParameterButton(); + } + columnNameComboBox = new LazyComboBox() { + @Override + public Object[] load() { + List l = calculateColumnNameList(); + return l.toArray(new String[l.size()]); + } + }; + columnNameComboBox.setEditable(true); + double f = TableLayout.FILL; + double p = TableLayout.PREFERRED; + UILabel label1 = new UILabel(Inter.getLocText("TableData")); + UILabel label3 = new UILabel(Inter.getLocText("DataColumn")); + if (showParameterButton) { + //todo 国际化 + UILabel label2 = new UILabel("param"); + Component[][] components = { + {label1, tableNameComboBox}, + {label2, paramButton}, + {label3, columnNameComboBox} + }; + this.setLayout(new BorderLayout()); + this.add(TableLayoutHelper.createTableLayoutPane(components, new double[]{p, p, p}, new double[]{p, f})); + } else { + double[] columnSize = {p, f}; + double[] rowSize = {p, p}; + Component[][] components = new Component[][]{ + new Component[]{label1, tableNameComboBox}, + new Component[]{label3, columnNameComboBox} + }; + JPanel jPanel = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); + this.setLayout(new BorderLayout()); + this.add(jPanel, BorderLayout.CENTER); + } + } + + + public void populate(TableDataSource source, TemplateCellElement cellElement) { + if (cellElement == null) { + return; + } + if (itemListener != null) { + removeListener(itemListener); + } + Object value = cellElement.getValue(); + if (!(value instanceof DSColumn)) { + return; + } + DSColumn dsColumn = (DSColumn) value; + String dsName = dsColumn.getDSName(); + tableNameComboBox.setSelectedTableDataByName(dsName); + columnNameComboBox.setSelectedItem(TableDataColumn.getColumnName(dsColumn.getColumn())); + ps = dsColumn.getParameters(); + + addListener(itemListener); + } + + public void update(CellElement cellElement) { + if (cellElement == null) { + return; + } + Object value = cellElement.getValue(); + if (this.tableNameComboBox.getSelectedItem() == null && this.columnNameComboBox.getSelectedItem() == null) { + return; + } + DSColumn dsColumn = null; + if (value == null || !(value instanceof DSColumn)) { + dsColumn = new DSColumn(); + cellElement.setValue(dsColumn); + } + dsColumn = (DSColumn) cellElement.getValue(); + + SimpleDSColumn simpleDSColumn = updateColumnPane(); + dsColumn.setDSName(simpleDSColumn.getDsName()); + dsColumn.setColumn(simpleDSColumn.getColumn()); + + dsColumn.setParameters((ps != null && ps.length > 0) ? ps : null); + } + + /** + * 更新面板 + * + * @return 更新后的值 + */ + public SimpleDSColumn updateColumnPane() { + SimpleDSColumn dsColumn = new SimpleDSColumn(); + TableDataWrapper tableDataWrappe = this.tableNameComboBox.getSelectedItem(); + if (tableDataWrappe == null) { + return null; + } + dsColumn.setDsName(tableDataWrappe.getTableDataName()); + TableDataColumn column; + String columnExp = (String) this.columnNameComboBox.getSelectedItem(); + if (isColumnName(columnExp)) { + String number = columnExp.substring(1); + Pattern pattern = Pattern.compile("[^\\d]"); + if (pattern.matcher(number).find()) { + column = TableDataColumn.createColumn(columnExp); + } else { + int serialNumber = Integer.parseInt(columnExp.substring(1)); + column = TableDataColumn.createColumn(serialNumber); + } + } else { + column = TableDataColumn.createColumn(columnExp); + } + dsColumn.setColumn(column); + return dsColumn; + } + + /** + * 添加监听事件 + * + * @param i 监听事件 + */ + public void addListener(ItemListener i) { + itemListener = i; + tableNameComboBox.addItemListener(i); + columnNameComboBox.addItemListener(i); + } + + /** + * 移除监听事件 + * + * @param i 监听事件 + */ + public void removeListener(ItemListener i) { + tableNameComboBox.removeItemListener(i); + columnNameComboBox.removeItemListener(i); + } + + + protected void initTableNameComboBox() { + tableNameComboBox = new TableDataComboBox(DesignTableDataManager.getEditingTableDataSource()); + tableNameComboBox.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + columnNameComboBox.setLoaded(false); + } + }); + tableNameComboBox.setPreferredSize(new Dimension(100, 20)); + } + + @Override + protected String title4PopupWindow() { + return "DSColumn"; + } + + + private void initWithParameterButton() { + editorPane = new UITableEditorPane(new ParameterTableModel()); + paramButton = new UIButton(Inter.getLocText("TableData_Dynamic_Parameter_Setting")); + paramButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + BasicDialog paramDialog = editorPane.showSmallWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { + @Override + public void doOk() { + List parameterList = editorPane.update(); + ps = parameterList.toArray(new Parameter[parameterList.size()]); + } + }); + + editorPane.populate(ps == null ? new Parameter[0] : ps); + paramDialog.setVisible(true); + } + }); + } + + + private boolean isColumnName(String columnExp) { + return StringUtils.isNotBlank(columnExp) && (columnExp.length() > 0 && columnExp.charAt(0) == '#') && !columnExp.endsWith("#"); + } + + + private List calculateColumnNameList() { + if (this.tableNameComboBox.getSelectedItem() != null) { + return this.tableNameComboBox.getSelectedItem().calculateColumnNameList(); + } + return new ArrayList(); + } } \ No newline at end of file diff --git a/designer/src/com/fr/design/mainframe/ReportComponentComposite.java b/designer/src/com/fr/design/mainframe/ReportComponentComposite.java index c54fd51b2..7a4f24ea6 100644 --- a/designer/src/com/fr/design/mainframe/ReportComponentComposite.java +++ b/designer/src/com/fr/design/mainframe/ReportComponentComposite.java @@ -64,8 +64,6 @@ public class ReportComponentComposite extends JComponent { this.add(createSouthControlPane(), BorderLayout.SOUTH); jSliderContainer.getShowVal().addChangeListener(showValSpinnerChangeListener); jSliderContainer.getSelfAdaptButton().addItemListener(selfAdaptButtonItemListener); - this.centerCardPane.editingComponet.elementCasePane.getGrid().addMouseWheelListener(showValSpinnerMouseWheelListener); - this.centerCardPane.editingComponet.elementCasePane.getGrid().addKeyListener(showValSpinnerKeyListener); } KeyListener showValSpinnerKeyListener = new KeyListener() { @@ -155,6 +153,9 @@ public class ReportComponentComposite extends JComponent { } Grid grid = centerCardPane.editingComponet.elementCasePane.getGrid(); + this.centerCardPane.editingComponet.elementCasePane.getGrid().addMouseWheelListener(showValSpinnerMouseWheelListener); + this.centerCardPane.editingComponet.elementCasePane.getGrid().addKeyListener(showValSpinnerKeyListener); + if (!grid.hasFocus() && grid.isRequestFocusEnabled()) { grid.requestFocus(); } diff --git a/designer/src/com/fr/design/mainframe/cell/CellEditorPane.java b/designer/src/com/fr/design/mainframe/cell/CellEditorPane.java new file mode 100644 index 000000000..b0f09af43 --- /dev/null +++ b/designer/src/com/fr/design/mainframe/cell/CellEditorPane.java @@ -0,0 +1,30 @@ +package com.fr.design.mainframe.cell; + +import com.fr.design.dialog.BasicPane; +import com.fr.report.cell.TemplateCellElement; + +/** + * 右侧单元格元素面板抽象类 + * + * @author yaoh.wu + * @version 2017年7月25日 + * @since 9.0 + */ +public abstract class CellEditorPane extends BasicPane { + + public abstract String getIconPath(); + + public abstract String title4PopupWindow(); + + /** + * 从面板拿数据保存 + */ + public abstract void update(); + + /** + * 更新面板数据 + * + * @param cellElement 单元格 + */ + public abstract void populate(TemplateCellElement cellElement); +} diff --git a/designer/src/com/fr/design/mainframe/cell/CellElementEditPane.java b/designer/src/com/fr/design/mainframe/cell/CellElementEditPane.java index 07f95d54f..8bcb0540d 100644 --- a/designer/src/com/fr/design/mainframe/cell/CellElementEditPane.java +++ b/designer/src/com/fr/design/mainframe/cell/CellElementEditPane.java @@ -1,31 +1,28 @@ package com.fr.design.mainframe.cell; -import java.awt.*; -import java.util.*; -import java.util.List; - -import javax.swing.*; - -import com.fr.base.BaseUtils; import com.fr.design.ExtraDesignClassManager; +import com.fr.design.dialog.BasicPane; import com.fr.design.fun.CellAttributeProvider; import com.fr.design.gui.frpane.AttributeChangeListener; import com.fr.design.gui.ibutton.UIHeadGroup; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itabpane.TitleChangeListener; +import com.fr.design.mainframe.ElementCasePane; import com.fr.design.mainframe.cell.settingpane.*; -import com.fr.design.dialog.BasicPane; -import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.design.utils.DesignUtils; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; -import com.fr.design.mainframe.ElementCasePane; import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.Selection; import com.fr.report.cell.CellElement; import com.fr.report.cell.DefaultTemplateCellElement; import com.fr.report.cell.TemplateCellElement; import com.fr.report.elementcase.TemplateElementCase; -import com.fr.design.utils.DesignUtils; + +import javax.swing.*; +import java.awt.*; +import java.util.ArrayList; +import java.util.List; /** * the new 单元格属性表 !!!:只对当前选中的设置面板进行数据的populate和update操作 @@ -51,16 +48,6 @@ public class CellElementEditPane extends BasicPane { private CellAttributeProvider cellAttributeProvider = null; - public static void main(String[] args){ - JFrame jf = new JFrame("test"); - jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - JPanel content = (JPanel)jf.getContentPane(); - content.setLayout(new BorderLayout()); - content.add(new CellElementEditPane(),BorderLayout.CENTER); - GUICoreUtils.centerWindow(jf); - jf.setSize(270, 400); - jf.setVisible(true); - } public CellElementEditPane() { setLayout(new BorderLayout()); @@ -87,19 +74,11 @@ public class CellElementEditPane extends BasicPane { }; tabsHeaderIconPane.setNeedLeftRightOutLine(false); - titlename = new UILabel(Inter.getLocText("Cell-Cell_Attributes")); - titlename.setFont(new Font("Dialog", 1, 14)); - titlename.setForeground(new Color(30,190,245)); - title = new JPanel(); - title.setLayout(new BorderLayout()); - title.add(titlename, BorderLayout.NORTH); - downTitle = new JPanel(); downTitle.setLayout(new BorderLayout()); downTitle.add(tabsHeaderIconPane, BorderLayout.NORTH); downTitle.add(center, BorderLayout.CENTER); - this.add(title, BorderLayout.NORTH); this.add(downTitle, BorderLayout.CENTER); } @@ -154,8 +133,8 @@ public class CellElementEditPane extends BasicPane { @Override public void attributeChange() { boolean isChooseFatherPane = ComparatorUtils.equals(paneList.get(tabsHeaderIconPane.getSelectedIndex()).getGlobalName(), Inter.getLocText("FR-Designer_LeftParent")) || - ComparatorUtils.equals(paneList.get(tabsHeaderIconPane.getSelectedIndex()).getGlobalName(), Inter.getLocText("ExpandD-Up_Father_Cell")); - boolean isChooseExpandPane = ComparatorUtils.equals(paneList.get(tabsHeaderIconPane.getSelectedIndex()).getGlobalName(), Inter.getLocText("ExpandD-Expand_Direction")); + ComparatorUtils.equals(paneList.get(tabsHeaderIconPane.getSelectedIndex()).getGlobalName(), Inter.getLocText("FR-Designer_ExpandD_Up_Father_Cell")); + boolean isChooseExpandPane = ComparatorUtils.equals(paneList.get(tabsHeaderIconPane.getSelectedIndex()).getGlobalName(), Inter.getLocText("FR-Designer_ExpandD_Expand_Direction")); if (isChooseExpandPane || isChooseFatherPane) { ePane.setSupportDefaultParentCalculate(true); } @@ -170,7 +149,7 @@ public class CellElementEditPane extends BasicPane { ePane.fireTargetModified(); } } else { - DesignUtils.errorMessage(Inter.getLocText(new String[]{"Not_use_a_cell_attribute_table_editing", "M_Insert-Float"}) + "!"); + DesignUtils.errorMessage(Inter.getLocText(new String[]{"FR-Designer_Not_use_a_cell_attribute_table_editing", "FR-Designer_Float_Element"}) + "!"); } ePane.setSupportDefaultParentCalculate(false); } @@ -191,7 +170,7 @@ public class CellElementEditPane extends BasicPane { @Override protected String title4PopupWindow() { - return Inter.getLocText("CellElement-Property_Table"); + return Inter.getLocText("FR-Designer_CellElement_Property_Table"); } @Override @@ -207,7 +186,7 @@ public class CellElementEditPane extends BasicPane { paneList.add(new CellOtherSetPane()); cellAttributeProvider = ExtraDesignClassManager.getInstance().getSingle(CellAttributeProvider.MARK_STRING); - if (cellAttributeProvider != null){ + if (cellAttributeProvider != null) { paneList.add((AbstractCellAttrPane) cellAttributeProvider.createCellAttributePane()); } } diff --git a/designer/src/com/fr/design/mainframe/cell/QuickEditorRegion.java b/designer/src/com/fr/design/mainframe/cell/QuickEditorRegion.java index f105ad479..517f98312 100644 --- a/designer/src/com/fr/design/mainframe/cell/QuickEditorRegion.java +++ b/designer/src/com/fr/design/mainframe/cell/QuickEditorRegion.java @@ -1,57 +1,57 @@ -package com.fr.design.mainframe.cell; - -import java.awt.BorderLayout; - -import javax.swing.BorderFactory; -import javax.swing.JPanel; - -import com.fr.design.gui.ilable.UILabel; -import com.fr.general.Inter; -import com.fr.design.selection.QuickEditor; - -/** - * QuickEditorRegion - * - * @editor zhou - * @since 2012-3-23下午3:21:36 - */ - -public class QuickEditorRegion extends JPanel { - - public static QuickEditorRegion getInstance() { - return singleton; - } - - public static JPanel getEmptyEditor() { - if(EMPTY == null) { - EMPTY = new JPanel(new BorderLayout()); - UILabel content = new UILabel(Inter.getLocText(new String[]{"DataFunction-None", "HJS-Message", "Form-Widget_Property_Table"})+"!"); - content.setBorder(BorderFactory.createEmptyBorder(0, 70, 0, 0)); - EMPTY.add(content, BorderLayout.CENTER); - } - return EMPTY; - } - - private static QuickEditorRegion singleton = new QuickEditorRegion(); - private static JPanel EMPTY; - - public QuickEditorRegion() { - this.setLayout(new BorderLayout()); - } - - /** - * 传值 - * - * @param ePane - */ - public void populate(final QuickEditor quickEditor) { - this.removeAll(); - if(quickEditor.getComponentCount() == 0) { - this.add(getEmptyEditor(), BorderLayout.CENTER); - } else { - this.add(quickEditor, BorderLayout.CENTER); - } - validate(); - repaint(); - } +package com.fr.design.mainframe.cell; + +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.selection.QuickEditor; +import com.fr.general.Inter; + +import javax.swing.*; +import java.awt.*; + +/** + * QuickEditorRegion + * + * @author zhou, yaoh.wu + * @version 2017年7月25日 + * @since 8.0 + */ + +public class QuickEditorRegion extends JPanel { + + + private static QuickEditorRegion singleton = new QuickEditorRegion(); + private static JPanel EMPTY; + + private QuickEditorRegion() { + this.setLayout(new BorderLayout()); + } + + public static QuickEditorRegion getInstance() { + return singleton; + } + + public static JPanel getEmptyEditor() { + if (EMPTY == null) { + EMPTY = new JPanel(new BorderLayout()); + UILabel content = new UILabel(Inter.getLocText(new String[]{"DataFunction-None", "HJS-Message", "Form-Widget_Property_Table"}) + "!"); + content.setBorder(BorderFactory.createEmptyBorder(0, 70, 0, 0)); + EMPTY.add(content, BorderLayout.CENTER); + } + return EMPTY; + } + + /** + * 更新面板显示数据 + * + * @param currentEditor 当前正在编辑的单元格编辑器或者默认的单元格编辑器 + */ + public void populate(final QuickEditor currentEditor) { + this.removeAll(); + if (currentEditor.getComponentCount() == 0) { + this.add(getEmptyEditor(), BorderLayout.CENTER); + } else { + this.add(currentEditor, BorderLayout.CENTER); + } + validate(); + repaint(); + } } \ No newline at end of file diff --git a/designer/src/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java b/designer/src/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java index ee4ecfa4d..33d11b5e5 100644 --- a/designer/src/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java +++ b/designer/src/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java @@ -1,29 +1,18 @@ package com.fr.design.mainframe.cell.settingpane; -import java.awt.*; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.util.Locale; - -import com.fr.base.FRContext; +import com.fr.design.constants.LayoutConstants; +import com.fr.design.editor.ValueEditorPane; +import com.fr.design.editor.ValueEditorPaneFactory; import com.fr.design.file.HistoryTemplateListPane; -import com.fr.design.gui.ilable.UILabel; - -import javax.swing.JPanel; -import javax.swing.JSeparator; -import javax.swing.SwingConstants; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; - +import com.fr.design.foldablepane.UIExpandablePane; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.icombobox.UIComboBox; +import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.JTemplate; -import com.fr.design.editor.ValueEditorPane; -import com.fr.design.editor.ValueEditorPaneFactory; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; import com.fr.report.cell.DefaultTemplateCellElement; @@ -33,11 +22,21 @@ import com.fr.report.cell.cellattr.CellInsertPolicyAttr; import com.fr.report.cell.cellattr.CellPageAttr; import com.fr.report.elementcase.TemplateElementCase; +import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import java.awt.*; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; + /** * @author zhou * @since 2012-5-11下午5:24:31 */ public class CellOtherSetPane extends AbstractCellAttrPane { + + private static final int HEAD_WDITH = 290; + private static final int HEAD_HEIGTH = 20; // normal private UIButtonGroup autoshrik; @@ -59,7 +58,8 @@ public class CellOtherSetPane extends AbstractCellAttrPane { private UICheckBox canBreakOnPaginateCheckBox; private UICheckBox repeatCheckBox; - + private UICheckBox autoHeightCheckBox; + private UICheckBox autoWidthCheckBox; // 插入行策略 private UIButtonGroup insertRowPolicy; private ValueEditorPane valueEditor; @@ -69,146 +69,169 @@ public class CellOtherSetPane extends AbstractCellAttrPane { /** * 初始化 - * @return 面板 + * + * @return 面板 */ public JPanel createContentPane() { - final JPanel fileNamePane = createNormal(); - createOthers(); + JPanel downPane = new JPanel(new BorderLayout()); + downPane.add(new UIExpandablePane(Inter.getLocText("FR-Designer_Advanced"), HEAD_WDITH, HEAD_HEIGTH, seniorPane()), BorderLayout.NORTH); + downPane.add(new UIExpandablePane(Inter.getLocText("FR-Designer_Pagination"), HEAD_WDITH, HEAD_HEIGTH, pagePane()), BorderLayout.CENTER); + JPanel contentPane = new JPanel(new BorderLayout(0, 10)); + contentPane.add(new UIExpandablePane(Inter.getLocText("FR-Designer_Basic"), HEAD_WDITH, HEAD_HEIGTH, basicPane()), BorderLayout.NORTH); + contentPane.add(downPane, BorderLayout.CENTER); + initAllNames(); + return contentPane; + } + + + private JPanel basicPane() { + autoHeightCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Auto_Adjust_Height")); + autoWidthCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Auto_Adjust_Wdith")); + double p = TableLayout.PREFERRED; + double[] rowSize = {p, p, p, p, p}; + double[] columnSize = {p}; + int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}; + Component[][] components = new Component[][]{ + new Component[]{null}, + new Component[]{autoHeightCheckBox}, + new Component[]{null}, + new Component[]{autoWidthCheckBox}, + new Component[]{null}, + }; + return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM); + + } + + private JPanel seniorPane() { + // 插入行策略 + insertRowPolicy = new UIButtonGroup(new String[]{Inter.getLocText("FR-Designer_CellWrite_InsertRow_NULL"), Inter.getLocText("FR-Designer-Estate_Default_Text"), + Inter.getLocText("FR-Designer_CellWrite_InsertRow_COPY")}); + defaultValuePane = new JPanel(new BorderLayout(4, 0)); + valueEditor = ValueEditorPaneFactory.createBasicValueEditorPane(); + defaultValuePane.add(valueEditor, BorderLayout.CENTER); + defaultValuePane.setVisible(false); + + insertRowPolicy.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + defaultValuePane.setVisible(insertRowPolicy.getSelectedIndex() == 1); + } + }); + JPanel fileNamePane = createNormal(); double f = TableLayout.FILL; double p = TableLayout.PREFERRED; - double[] rowSize1 = {p, p, p, p, p, p, p}; - double[] columnSize1 = {p, f}; - UILabel autoAdjustLabel = new UILabel(Inter.getLocText("FR-Designer_Auto_Adjust_Size") + ":", SwingConstants.RIGHT); - autoAdjustLabel.setVerticalAlignment(UILabel.TOP); - Component[][] components1 = new Component[][]{ - new Component[]{autoAdjustLabel, autoshrik}, - new Component[]{new UILabel(Inter.getLocText("FR-Designer_Preview") + ":", SwingConstants.RIGHT), previewCellContent}, - new Component[]{new UILabel(Inter.getLocText("CellWrite-Print_Export") + ":", SwingConstants.RIGHT), printAndExportContent}, - new Component[]{null, printAndExportBackground}, - new Component[]{new UILabel(Inter.getLocText("FR-Designer_Show_Content") + ":", SwingConstants.RIGHT), showContent}, + double[] rowSize = {p, p, p, p, p, p, p, p, p}; + double[] columnSize = {p, f}; + int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}; + Component[][] components = new Component[][]{ + new Component[]{null, null}, + new Component[]{previewCellContent, null}, + new Component[]{printAndExportContent, null}, + new Component[]{printAndExportBackground, null}, + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Show_Content"), SwingConstants.LEFT), showContent}, new Component[]{null, fileNamePane}, - new Component[]{new UILabel(Inter.getLocText("FR-Designer_CellWrite_ToolTip") + ":", SwingConstants.RIGHT), tooltipTextField}, - }; - JPanel northContentPane = TableLayoutHelper.createTableLayoutPane(components1, rowSize1, columnSize1); - double[] rowSize2 = {p, p, p, p, p, p}; - double[] columnSize2 = {p, f}; - Component[][] components2 = new Component[][]{ - new Component[]{new JSeparator(JSeparator.HORIZONTAL), null}, - new Component[]{new UILabel(Inter.getLocText("FR-Designer_Pagination")), null}, - new Component[]{pageBeforeRowCheckBox, pageAfterRowCheckBox}, - new Component[]{pageBeforeColumnCheckBox, pageAfterColumnCheckBox}, - new Component[]{canBreakOnPaginateCheckBox, null}, - new Component[]{repeatCheckBox, null} + new Component[]{new UILabel(Inter.getLocText("FR-Designer_CellWrite_ToolTip"), SwingConstants.RIGHT), tooltipTextField}, + new Component[]{null, null}, }; - JPanel centerContentPane = TableLayoutHelper.createTableLayoutPane(components2, rowSize2, columnSize2); - double[] rowSize3 = {p, p, p, p}; - double[] columnSize3 = {f}; - Component[][] components3 = new Component[][]{ - new Component[]{new JSeparator(JSeparator.HORIZONTAL)}, - new Component[]{new UILabel(Inter.getLocText("CellWrite-InsertRow_Policy"), SwingConstants.LEFT)}, - new Component[]{insertRowPolicy}, - new Component[]{defaultValuePane} + JPanel seniorCenterPane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM); + double[] rowSize1 = {p, p}; + double[] columnSize1 = {p, f}; + int[][] rowCount1 = {{1, 1}, {1, 1}}; + Component[][] components1 = new Component[][]{ + new Component[]{new UILabel(Inter.getLocText("FR-Designer_CellWrite_InsertRow_Policy"), SwingConstants.LEFT), insertRowPolicy}, + new Component[]{null, defaultValuePane}, }; - southContentPane = TableLayoutHelper.createTableLayoutPane(components3, rowSize3, columnSize3); - JPanel contentsmallPane = new JPanel(new BorderLayout(0, 10)); - contentsmallPane.add(northContentPane, BorderLayout.NORTH); - contentsmallPane.add(centerContentPane, BorderLayout.CENTER); - JPanel contentPane = new JPanel(new BorderLayout(0, 10)); - contentPane.add(contentsmallPane, BorderLayout.NORTH); - contentPane.add(southContentPane, BorderLayout.CENTER); - initAllNames(); - return contentPane; + southContentPane = TableLayoutHelper.createGapTableLayoutPane(components1, rowSize1, columnSize1, rowCount1, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM); + JPanel seniorPane = new JPanel(new BorderLayout()); + seniorPane.add(seniorCenterPane, BorderLayout.NORTH); + seniorPane.add(southContentPane, BorderLayout.CENTER); + return seniorPane; } + private JPanel pagePane() { + // 分页 + pageBeforeRowCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_CellWrite_Page_Before_Row")); - private JPanel createNormal() { - String[] AjustRowTypes = new String[]{ - Inter.getLocText("FR-Designer_No"), Inter.getLocText("Utils-Row_Height"), Inter.getLocText("Utils-Column_Width"), Inter.getLocText("FR-Designer_DEFAULT")}; - autoshrik = new UIButtonGroup(AjustRowTypes); - if (FRContext.getLocale().equals(Locale.US)) { - // 英文显示不全,故每行一个按钮 - autoshrik.setFourLine(); - autoshrik.setLayout(new GridLayout(4, 1, 1, 1)); - } else { - autoshrik.setTwoLine(); - autoshrik.setLayout(new GridLayout(2, 2, 1, 1)); - } + pageAfterRowCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_CellWrite_Page_After_Row")); + pageBeforeColumnCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_CellWrite_Page_Before_Column")); + pageAfterColumnCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_CellWrite_Page_After_Column")); - previewCellContent = new UICheckBox(Inter.getLocText("CellWrite-Preview_Cell_Content")); - printAndExportContent = new UICheckBox(Inter.getLocText("CellWrite-Print_Content")); - printAndExportBackground = new UICheckBox(Inter.getLocText("CellWrite-Print_Background")); + canBreakOnPaginateCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_CellPage_Can_Break_On_Paginate")); + repeatCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_CellPage_Repeat_Content_When_Paging")); - showContent = new UIComboBox(new String[]{Inter.getLocText("FR-Designer_DEFAULT"), Inter.getLocText("CellWrite-Show_As_Image"), Inter.getLocText("CellWrite-Show_As_HTML"), + double p = TableLayout.PREFERRED; + double[] rowSize = {p, p, p, p, p, p, p, p, p, p, p}; + double[] columnSize = {p}; + int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}; + Component[][] components = new Component[][]{ + new Component[]{null}, + new Component[]{pageBeforeRowCheckBox}, + new Component[]{pageAfterRowCheckBox}, + new Component[]{null}, + new Component[]{pageBeforeColumnCheckBox}, + new Component[]{pageAfterColumnCheckBox}, + new Component[]{null}, + new Component[]{canBreakOnPaginateCheckBox}, + new Component[]{repeatCheckBox}, + }; + return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM); + + } + + private JPanel createNormal() { + previewCellContent = new UICheckBox(Inter.getLocText("FR-Designer_CellWrite_Preview_Cell_Content")); + printAndExportContent = new UICheckBox(Inter.getLocText("FR-Designer_CellWrite_Print_Content")); + printAndExportBackground = new UICheckBox(Inter.getLocText("FR-Designer_CellWrite_Print_Background")); + showContent = new UIComboBox(new String[]{Inter.getLocText("FR-Designer_DEFAULT"), Inter.getLocText("FR-Designer_CellWrite_Show_As_Image"), Inter.getLocText("FR-Designer_CellWrite_Show_As_HTML"), Inter.getLocText("FR-Designer_Show_As_Download")}); final CardLayout fileNameLayout = new CardLayout(); final JPanel fileNamePane = new JPanel(fileNameLayout); JPanel fileNameCCPane = new JPanel(new BorderLayout(4, 0)); - fileNameCCPane.add(new UILabel(Inter.getLocText("FR-Designer_File_Name_For_Download")), BorderLayout.WEST); fileNameTextField = new UITextField(); - tooltipTextField = new UITextField(); tooltipTextField.getUI(); fileNamePane.add(new JPanel(), "none"); fileNamePane.add(fileNameCCPane, "content"); + fileNamePane.setPreferredSize(new Dimension(0, 0)); fileNameCCPane.add(fileNameTextField, BorderLayout.CENTER); - showContent.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { - fileNameLayout.show(fileNamePane, showContent.getSelectedIndex() == 3 ? "content" : "none"); + if (showContent.getSelectedIndex() == 3) { + fileNamePane.setPreferredSize(new Dimension(100, 20)); + fileNameLayout.show(fileNamePane, "content"); + } else { + fileNameLayout.show(fileNamePane, "none"); + fileNamePane.setPreferredSize(new Dimension(0, 0)); + } } }); - tooltipTextField = new UITextField(); tooltipTextField.getUI(); return fileNamePane; } - private void createOthers() { - // 分页 - pageBeforeRowCheckBox = new UICheckBox(Inter.getLocText("CellWrite-Page_Before_Row")); - pageAfterRowCheckBox = new UICheckBox(Inter.getLocText("CellWrite-Page_After_Row")); - pageBeforeColumnCheckBox = new UICheckBox(Inter.getLocText("CellWrite-Page_Before_Column")); - pageAfterColumnCheckBox = new UICheckBox(Inter.getLocText("CellWrite-Page_After_Column")); - - canBreakOnPaginateCheckBox = new UICheckBox(Inter.getLocText("CellPage-Can_Break_On_Paginate")); - repeatCheckBox = new UICheckBox(Inter.getLocText("CellWrite-Repeat_Content_When_Paging")); - - // 插入行策略 - insertRowPolicy = new UIButtonGroup(new String[]{Inter.getLocText("CellWrite-InsertRow_NULL"), Inter.getLocText("CellWrite-InsertRow_DEFAULT"), - Inter.getLocText("CellWrite-InsertRow_COPY")}); - defaultValuePane = new JPanel(new BorderLayout(4, 0)); - valueEditor = ValueEditorPaneFactory.createBasicValueEditorPane(); - defaultValuePane.add(valueEditor, BorderLayout.CENTER); - defaultValuePane.setVisible(false); - - insertRowPolicy.addChangeListener(new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - defaultValuePane.setVisible(insertRowPolicy.getSelectedIndex() == 1); - } - }); - - } private void initAllNames() { - autoshrik.setGlobalName(Inter.getLocText("FR-Designer_Auto_Adjust_Size")); +// autoshrik.setGlobalName(Inter.getLocText("FR-Designer_Auto_Adjust_Size")); + autoHeightCheckBox.setGlobalName(Inter.getLocText("FR-Designer_Auto_Adjust_Height")); + autoWidthCheckBox.setGlobalName(Inter.getLocText("FR-Designer_Auto_Adjust_Wdith")); previewCellContent.setGlobalName(Inter.getLocText("FR-Designer_Preview")); printAndExportContent.setGlobalName(Inter.getLocText("CellWrite-Preview_Cell_Content")); printAndExportBackground.setGlobalName(Inter.getLocText("CellWrite-Print_Background")); showContent.setGlobalName(Inter.getLocText("FR-Designer_Show_Content")); fileNameTextField.setGlobalName(Inter.getLocText("FR-Designer_Show_Content")); tooltipTextField.setGlobalName(Inter.getLocText("FR-Designer_CellWrite_ToolTip")); - pageBeforeRowCheckBox.setGlobalName(Inter.getLocText("CellWrite-Page_Before_Row")); - pageAfterRowCheckBox.setGlobalName(Inter.getLocText("CellWrite-Page_After_Row")); - pageBeforeColumnCheckBox.setGlobalName(Inter.getLocText("CellWrite-Page_Before_Column")); - pageAfterColumnCheckBox.setGlobalName(Inter.getLocText("CellWrite-Page_After_Column")); - canBreakOnPaginateCheckBox.setGlobalName(Inter.getLocText("CellPage-Can_Break_On_Paginate")); - repeatCheckBox.setGlobalName(Inter.getLocText("CellWrite-Repeat_Content_When_Paging")); - insertRowPolicy.setGlobalName(Inter.getLocText("CellWrite-InsertRow_Policy")); - valueEditor.setGlobalName(Inter.getLocText("CellWrite-InsertRow_Policy")); + pageBeforeRowCheckBox.setGlobalName(Inter.getLocText("FR-Designer_CellWrite_Page_Before_Row")); + pageAfterRowCheckBox.setGlobalName(Inter.getLocText("FR-Designer_CellWrite_Page_After_Row")); + pageBeforeColumnCheckBox.setGlobalName(Inter.getLocText("FR-Designer_CellWrite_Page_Before_Column")); + pageAfterColumnCheckBox.setGlobalName(Inter.getLocText("FR-Designer_CellWrite_Page_After_Column")); + canBreakOnPaginateCheckBox.setGlobalName(Inter.getLocText("FR-Designer_CellPage_Can_Break_On_Paginate")); + repeatCheckBox.setGlobalName(Inter.getLocText("FR-Designer_CellPage_Repeat_Content_When_Paging")); + insertRowPolicy.setGlobalName(Inter.getLocText("FR-Designer_CellWrite_InsertRow_Policy")); + valueEditor.setGlobalName(Inter.getLocText("FR-Designer_CellWrite_InsertRow_Policy")); } @@ -224,14 +247,34 @@ public class CellOtherSetPane extends AbstractCellAttrPane { if (cellGUIAttr == null) { cellGUIAttr = CellGUIAttr.DEFAULT_CELLGUIATTR; } - autoshrik.setSelectedIndex(cellGUIAttr.getAdjustMode()); +// autoshrik.setSelectedIndex(cellGUIAttr.getAdjustMode()); + switch (cellGUIAttr.getAdjustMode()) { + case 0: + autoHeightCheckBox.setSelected(false); + autoWidthCheckBox.setSelected(false); + break; + case 1: + autoHeightCheckBox.setSelected(true); + autoWidthCheckBox.setSelected(false); + break; + case 2: + autoHeightCheckBox.setSelected(false); + autoWidthCheckBox.setSelected(true); + break; + case 3: + autoHeightCheckBox.setSelected(true); + autoWidthCheckBox.setSelected(true); + break; + default: + break; + } previewCellContent.setSelected(cellGUIAttr.isPreviewContent()); printAndExportContent.setSelected(cellGUIAttr.isPrintContent()); printAndExportBackground.setSelected(cellGUIAttr.isPrintBackground()); if (cellGUIAttr.isShowAsImage()) { - showContent.setSelectedItem(Inter.getLocText("CellWrite-Show_As_Image")); + showContent.setSelectedItem(Inter.getLocText("FR-Designer_CellWrite_Show_As_Image")); } else if (cellGUIAttr.isShowAsHTML()) { - showContent.setSelectedItem(Inter.getLocText("CellWrite-Show_As_HTML")); + showContent.setSelectedItem(Inter.getLocText("FR-Designer_CellWrite_Show_As_HTML")); } else if (cellGUIAttr.isShowAsDownload()) { showContent.setSelectedItem(Inter.getLocText("FR-Designer_Show_As_Download")); fileNameTextField.setText(cellGUIAttr.getFileName()); @@ -265,7 +308,7 @@ public class CellOtherSetPane extends AbstractCellAttrPane { defaultValuePane.setVisible(insertRowPolicy.getSelectedIndex() == 1); southContentPane.setVisible(true); JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - if (!jTemplate.isJWorkBook()){ //表单中报表块编辑屏蔽掉 插入行策略 + if (!jTemplate.isJWorkBook()) { //表单中报表块编辑屏蔽掉 插入行策略 southContentPane.setVisible(false); } } @@ -281,19 +324,36 @@ public class CellOtherSetPane extends AbstractCellAttrPane { cellGUIAttr = new CellGUIAttr(); } - if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_Auto_Adjust_Size"))) { - cellGUIAttr.setAdjustMode(autoshrik.getSelectedIndex()); +// if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_Auto_Adjust_Size"))) { +// cellGUIAttr.setAdjustMode(autoshrik.getSelectedIndex()); +// } + + if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_Auto_Adjust_Height")) || ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_Auto_Adjust_Wdith"))) { + int flag; + if (autoHeightCheckBox.isSelected()) { + if (autoWidthCheckBox.isSelected()) { + flag = 3; + } else { + flag = 1; + } + } else if (autoWidthCheckBox.isSelected()) { + flag = 2; + } else { + flag = 0; + } + cellGUIAttr.setAdjustMode(flag); } + if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_Preview"))) { cellGUIAttr.setPreviewContent(previewCellContent.isSelected()); } - if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("CellWrite-Preview_Cell_Content"))) { + if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_CellWrite_Preview_Cell_Content"))) { cellGUIAttr.setPrintContent(printAndExportContent.isSelected()); } - if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("CellWrite-Print_Background"))) { + if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_CellWrite_Print_Background"))) { cellGUIAttr.setPrintBackground(printAndExportBackground.isSelected()); } @@ -334,28 +394,28 @@ public class CellOtherSetPane extends AbstractCellAttrPane { cellPageAttr = new CellPageAttr(); } - if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("CellWrite-Page_Before_Row"))) { + if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_CellWrite_Page_Before_Row"))) { cellPageAttr.setPageBeforeRow(this.pageBeforeRowCheckBox.isSelected()); } - if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("CellWrite-Page_After_Row"))) { + if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_CellWrite_Page_After_Row"))) { cellPageAttr.setPageAfterRow(this.pageAfterRowCheckBox.isSelected()); } - if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("CellWrite-Page_Before_Column"))) { + if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_CellWrite_Page_Before_Column"))) { cellPageAttr.setPageBeforeColumn(this.pageBeforeColumnCheckBox.isSelected()); } - if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("CellWrite-Page_After_Column"))) { + if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_CellWrite_Page_After_Column"))) { cellPageAttr.setPageAfterColumn(this.pageAfterColumnCheckBox.isSelected()); } - if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("CellPage-Can_Break_On_Paginate"))) { + if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_CellWrite_Can_Break_On_Paginate"))) { cellPageAttr.setCanBreakOnPaginate(canBreakOnPaginateCheckBox.isSelected()); } - if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("CellWrite-Repeat_Content_When_Paging"))) { + if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_CellWrite_Repeat_Content_When_Paging"))) { cellPageAttr.setRepeat(this.repeatCheckBox.isSelected()); } cellElement.setCellPageAttr(cellPageAttr); - if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("CellWrite-InsertRow_Policy"))) { + if (ComparatorUtils.equals(getGlobalName(), Inter.getLocText("FR-Designer_CellWrite_InsertRow_Policy"))) { // 插入 CellInsertPolicyAttr cellInsertPolicyAttr = new CellInsertPolicyAttr(); @@ -373,7 +433,7 @@ public class CellOtherSetPane extends AbstractCellAttrPane { } /** - *存储 + * 存储 */ public void updateBeans() { TemplateElementCase elementCase = elementCasePane.getEditingElementCase(); @@ -398,10 +458,11 @@ public class CellOtherSetPane extends AbstractCellAttrPane { /** * 返回界面的标题 - * @return 标题 + * + * @return 标题 */ public String title4PopupWindow() { - return Inter.getLocText("Datasource-Other_Attributes"); + return Inter.getLocText("FR-Designer_Datasource_Other_Attributes"); } } \ No newline at end of file diff --git a/designer/src/com/fr/design/mainframe/form/FormReportComponentComposite.java b/designer/src/com/fr/design/mainframe/form/FormReportComponentComposite.java index b6173c6d8..ecff0addf 100644 --- a/designer/src/com/fr/design/mainframe/form/FormReportComponentComposite.java +++ b/designer/src/com/fr/design/mainframe/form/FormReportComponentComposite.java @@ -5,10 +5,12 @@ import com.fr.base.ScreenResolution; import com.fr.design.cell.bar.DynamicScrollBar; import com.fr.design.event.TargetModifiedEvent; import com.fr.design.event.TargetModifiedListener; -import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.gui.ispinner.UIBasicSpinner; import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.mainframe.*; +import com.fr.design.mainframe.BaseJForm; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.ElementCasePane; +import com.fr.design.mainframe.JSliderPane; import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; import com.fr.form.FormElementCaseContainerProvider; import com.fr.form.FormElementCaseProvider; @@ -26,12 +28,12 @@ import java.awt.event.*; /** * 整个FormElementCase编辑区域 包括滚动条、中间的grid或者聚合块、下面的sheetTab */ -public class FormReportComponentComposite extends JComponent implements TargetModifiedListener, FormECCompositeProvider{ +public class FormReportComponentComposite extends JComponent implements TargetModifiedListener, FormECCompositeProvider { private static final int MAX = 400; private static final int HUND = 100; private static final int MIN = 10; - public FormElementCaseDesigner elementCaseDesigner; + public FormElementCaseDesigner elementCaseDesigner; private BaseJForm jForm; private FormTabPane sheetNameTab; @@ -48,8 +50,6 @@ public class FormReportComponentComposite extends JComponent implements TargetMo this.add(createSouthControlPane(), BorderLayout.SOUTH); jSliderContainer.getShowVal().addChangeListener(showValSpinnerChangeListener); jSliderContainer.getSelfAdaptButton().addItemListener(selfAdaptButtonItemListener); - ((JForm)this.jForm).getFormDesign().getArea().addMouseWheelListener(showValSpinnerMouseWheelListener); - ((JForm)this.jForm).getFormDesign().getArea().addKeyListener(showValSpinnerKeyListener); this.elementCaseDesigner.elementCasePane.getGrid().addMouseWheelListener(showValSpinnerMouseWheelListener); this.elementCaseDesigner.elementCasePane.getGrid().addKeyListener(showValSpinnerKeyListener); elementCaseDesigner.addTargetModifiedListener(this); @@ -60,22 +60,24 @@ public class FormReportComponentComposite extends JComponent implements TargetMo public void keyTyped(KeyEvent e) { } + @Override public void keyPressed(KeyEvent e) { - if( e.isControlDown()){ - isCtrl = true ; + if (e.isControlDown()) { + isCtrl = true; } } + @Override public void keyReleased(KeyEvent e) { - isCtrl = false ; + isCtrl = false; } }; MouseWheelListener showValSpinnerMouseWheelListener = new MouseWheelListener() { @Override public void mouseWheelMoved(MouseWheelEvent e) { - if (isCtrl){ + if (isCtrl) { int dir = e.getWheelRotation(); int old_resolution = (int) jSliderContainer.getShowVal().getValue(); jSliderContainer.getShowVal().setValue(old_resolution - (dir * MIN)); @@ -87,10 +89,10 @@ public class FormReportComponentComposite extends JComponent implements TargetMo ChangeListener showValSpinnerChangeListener = new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { - double value = (int) ((UIBasicSpinner)e.getSource()).getValue(); + double value = (int) ((UIBasicSpinner) e.getSource()).getValue(); value = value > MAX ? MAX : value; value = value < MIN ? MIN : value; - int resolution = (int) (ScreenResolution.getScreenResolution()*value/HUND); + int resolution = (int) (ScreenResolution.getScreenResolution() * value / HUND); setScale(resolution); // HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().setScale(resolution); } @@ -99,18 +101,17 @@ public class FormReportComponentComposite extends JComponent implements TargetMo ItemListener selfAdaptButtonItemListener = new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { - if (jSliderContainer.getSelfAdaptButton().isSelected()){ + if (jSliderContainer.getSelfAdaptButton().isSelected()) { int resolution = selfAdaptUpdate(); - jSliderContainer.getShowVal().setValue(resolution*HUND/ScreenResolution.getScreenResolution()); + jSliderContainer.getShowVal().setValue(resolution * HUND / ScreenResolution.getScreenResolution()); } } }; private java.util.List targetModifiedList = new java.util.ArrayList(); - private void setScale(int resolution){ - JForm jForm = (JForm) HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - ElementCasePane elementCasePane = ((FormReportComponentComposite)jForm.getReportComposite()).elementCaseDesigner.getEditingElementCasePane(); + private void setScale(int resolution) { + ElementCasePane elementCasePane = elementCaseDesigner.getEditingElementCasePane(); elementCasePane.setResolution(resolution); elementCasePane.getGrid().getGridMouseAdapter().setResolution(resolution); elementCasePane.getGrid().setResolution(resolution); @@ -122,20 +123,16 @@ public class FormReportComponentComposite extends JComponent implements TargetMo grid.setHorizontalExtent(GridUtils.getExtentValue(0, columnWidthList, grid.getWidth(), resolution)); elementCasePane.getGrid().updateUI(); //更新Column和Row - ((DynamicScrollBar)elementCasePane.getVerticalScrollBar()).setDpi(resolution); - ((DynamicScrollBar)elementCasePane.getHorizontalScrollBar()).setDpi(resolution); + ((DynamicScrollBar) elementCasePane.getVerticalScrollBar()).setDpi(resolution); + ((DynamicScrollBar) elementCasePane.getHorizontalScrollBar()).setDpi(resolution); elementCasePane.getGridColumn().setResolution(resolution); elementCasePane.getGridColumn().updateUI(); elementCasePane.getGridRow().setResolution(resolution); elementCasePane.getGridRow().updateUI(); } - private int selfAdaptUpdate(){ - JForm jForm = (JForm) HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - if (jForm.resolution == 0){ - jForm.resolution = ScreenResolution.getScreenResolution(); - } - ElementCasePane elementCasePane = ((FormReportComponentComposite)jForm.getReportComposite()).elementCaseDesigner.getEditingElementCasePane(); + private int selfAdaptUpdate() { + ElementCasePane elementCasePane = elementCaseDesigner.getEditingElementCasePane(); ElementCasePane reportPane = elementCasePane.getGrid().getElementCasePane(); int column = reportPane.getSelection().getSelectedColumns()[0]; double columnLength = reportPane.getSelection().getSelectedColumns().length; @@ -143,10 +140,10 @@ public class FormReportComponentComposite extends JComponent implements TargetMo int row = reportPane.getSelection().getSelectedRows()[0]; double rowLength = reportPane.getSelection().getSelectedRows().length; double rowExtent = reportPane.getGrid().getVerticalExtent(); - if (columnLength == 0||rowLength == 0){ - return jForm.resolution; + if (columnLength == 0 || rowLength == 0) { + return ScreenResolution.getScreenResolution(); } - double time =(columnExtent/columnLength)<(rowExtent/rowLength) ? (columnExtent/columnLength) : (rowExtent/rowLength); + double time = (columnExtent / columnLength) < (rowExtent / rowLength) ? (columnExtent / columnLength) : (rowExtent / rowLength); if (reportPane.isHorizontalScrollBarVisible()) { reportPane.getVerticalScrollBar().setValue(row); reportPane.getHorizontalScrollBar().setValue(column); @@ -155,23 +152,26 @@ public class FormReportComponentComposite extends JComponent implements TargetMo } /** - * 添加目标改变的监听 - * @param targetModifiedListener 目标改变事件 + * 添加目标改变的监听 + * + * @param targetModifiedListener 目标改变事件 */ public void addTargetModifiedListener(TargetModifiedListener targetModifiedListener) { - targetModifiedList.add(targetModifiedListener); + targetModifiedList.add(targetModifiedListener); } /** * 目标改变 - * @param e 事件 + * + * @param e 事件 */ - public void targetModified(TargetModifiedEvent e) { + public void targetModified(TargetModifiedEvent e) { for (TargetModifiedListener l : targetModifiedList) { l.targetModified(e); } - } - public void setEditingElementCase(FormElementCase formElementCase){ + } + + public void setEditingElementCase(FormElementCase formElementCase) { elementCaseDesigner.setTarget(formElementCase); fireTargetModified(); } @@ -183,8 +183,8 @@ public class FormReportComponentComposite extends JComponent implements TargetMo jSliderContainer = JSliderPane.getInstance(); JSplitPane splitpane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, sheetNameTab, jSliderContainer); - southPane.add(hbarContainer,BorderLayout.NORTH); - southPane.add(splitpane,BorderLayout.CENTER); + southPane.add(hbarContainer, BorderLayout.NORTH); + southPane.add(splitpane, BorderLayout.CENTER); splitpane.setBorder(null); splitpane.setDividerSize(3); splitpane.setResizeWeight(1); @@ -195,7 +195,7 @@ public class FormReportComponentComposite extends JComponent implements TargetMo * 停止编辑 */ public void stopEditing() { - elementCaseDesigner.stopEditing(); + elementCaseDesigner.stopEditing(); } public void setComposite() { @@ -203,12 +203,12 @@ public class FormReportComponentComposite extends JComponent implements TargetMo this.validate(); this.repaint(40); } - - public void setSelectedWidget(FormElementCaseProvider fc) { - if (fc != null){ + + public void setSelectedWidget(FormElementCaseProvider fc) { + if (fc != null) { elementCaseDesigner.setTarget(fc); } - } + } /** * 模板更新 diff --git a/designer/src/com/fr/design/present/BarCodePane.java b/designer/src/com/fr/design/present/BarCodePane.java index 27a42a7e9..e34a382c9 100644 --- a/designer/src/com/fr/design/present/BarCodePane.java +++ b/designer/src/com/fr/design/present/BarCodePane.java @@ -1,57 +1,47 @@ package com.fr.design.present; -import java.awt.BorderLayout; -import java.awt.CardLayout; -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.FlowLayout; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.awt.font.FontRenderContext; -import java.awt.font.LineBreakMeasurer; -import java.awt.font.TextAttribute; -import java.awt.font.TextLayout; -import java.awt.geom.AffineTransform; -import java.text.AttributedCharacterIterator; -import java.text.AttributedString; -import java.util.HashMap; -import java.util.Map; - -import javax.swing.*; - -import com.fr.design.constants.UIConstants; -import com.fr.design.gui.ilable.UILabel; - -import javax.swing.border.TitledBorder; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; - import com.fr.design.beans.FurtherBasicBeanPane; import com.fr.design.border.UIRoundedBorder; +import com.fr.design.constants.UIConstants; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.icombobox.UIComboBoxRenderer; +import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UIBasicSpinner; 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.cellattr.BarcodeAttr; import com.fr.report.cell.cellattr.BarcodePresent; import com.fr.report.cell.painter.barcode.BarcodeImpl; import com.fr.report.cell.painter.barcode.core.BarCodeUtils; import com.fr.stable.pinyin.ChineseHelper; -import com.fr.design.utils.gui.GUICoreUtils; + +import javax.swing.*; +import javax.swing.border.TitledBorder; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import java.awt.*; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.font.FontRenderContext; +import java.awt.font.LineBreakMeasurer; +import java.awt.font.TextAttribute; +import java.awt.font.TextLayout; +import java.awt.geom.AffineTransform; +import java.text.AttributedCharacterIterator; +import java.text.AttributedString; +import java.util.HashMap; +import java.util.Map; /** * @author zhou * @since 2012-6-4下午6:49:59 */ public class BarCodePane extends FurtherBasicBeanPane { - private final int num16 = 16; + private final int NUM16 = 16; private BarCodePreviewPane barCodePreviewPane; private UIComboBox typeComboBox; private UIBasicSpinner barWidthSpinner; @@ -69,13 +59,23 @@ public class BarCodePane extends FurtherBasicBeanPane { addlistener(); } + public static void main(String[] args) { + JFrame jf = new JFrame("test"); + jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + JPanel content = (JPanel) jf.getContentPane(); + content.setLayout(new BorderLayout()); + content.add(new BarCodePane(), BorderLayout.CENTER); + GUICoreUtils.centerWindow(jf); + jf.setSize(270, 400); + jf.setVisible(true); + } private void initComponents() { barCodePreviewPane = new BarCodePreviewPane(); - this.barWidthSpinner = new UIBasicSpinner(new SpinnerNumberModel(1, 1, 100, 0.1)); + this.barWidthSpinner = new UIBasicSpinner(new SpinnerNumberModel(10.0, 1, 100, 1.0)); this.barHeightSpinner = new UIBasicSpinner(new SpinnerNumberModel(30, 1, 100, 1)); - this.barWidthSpinner.setPreferredSize(new Dimension(45, 20)); - this.barHeightSpinner.setPreferredSize(new Dimension(45, 20)); + this.barWidthSpinner.setPreferredSize(new Dimension(60, 20)); + this.barHeightSpinner.setPreferredSize(new Dimension(60, 20)); JPanel borderPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); TitledBorder titledBorder = new TitledBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 5), Inter.getLocText("StyleFormat-Sample"), 4, 2, this.getFont(), UIConstants.LINE_COLOR); borderPane.setBorder(titledBorder); @@ -95,7 +95,7 @@ public class BarCodePane extends FurtherBasicBeanPane { double f = TableLayout.FILL; double[] columnSize = {p, f}; double[] rowSize = {p, p, p, p, p, p, p, p}; - barCodePreviewPane.setPreferredSize(new Dimension(0, 145)); + barCodePreviewPane.setPreferredSize(new Dimension(0, 125)); final JPanel centerPane = new JPanel(new CardLayout()); Component[][] components = new Component[][]{ @@ -109,7 +109,7 @@ public class BarCodePane extends FurtherBasicBeanPane { typeComboBox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { CardLayout cardLayout = (CardLayout) centerPane.getLayout(); - cardLayout.show(centerPane, typeComboBox.getSelectedIndex() == num16 ? "special" : "normal"); + cardLayout.show(centerPane, typeComboBox.getSelectedIndex() == NUM16 ? "special" : "normal"); setTestText(BarCodeUtils.getTestTextByBarCode(typeComboBox.getSelectedIndex())); repaintPreviewBarCode(); } @@ -142,25 +142,22 @@ public class BarCodePane extends FurtherBasicBeanPane { } private JPanel getNormalPane() { + double f = TableLayout.FILL; double p = TableLayout.PREFERRED; double[] rowSize = {p, p, p, p, p, p, p, p}; - - + double[] columnSize1 = {p, f, f}; JPanel barWidthContainer = new JPanel(new FlowLayout(FlowLayout.LEFT, 2, 0)); barWidthContainer.add(barWidthSpinner); - - JPanel barHeightContainer = new JPanel(new FlowLayout(FlowLayout.LEFT, 2, 0)); barHeightContainer.add(barHeightSpinner); UILabel uiLabel = new UILabel(Inter.getLocText("Tree-Width") + ":", UILabel.RIGHT); uiLabel.setPreferredSize(typeSetLabel.getPreferredSize()); Component[][] components_normal = new Component[][]{ - new Component[]{uiLabel, barWidthContainer}, - new Component[]{new UILabel(Inter.getLocText("Height") + ":", UILabel.RIGHT), barHeightContainer}, - new Component[]{new UILabel(Inter.getLocText("Text") + ":", UILabel.RIGHT), drawingTextCheckBox} + new Component[]{new UILabel("条形码大小", UILabel.LEFT), barWidthContainer, barHeightContainer}, + new Component[]{null, new UILabel(Inter.getLocText("Tree-Width"), UILabel.CENTER), new UILabel(Inter.getLocText("Height"), UILabel.CENTER)}, + new Component[]{drawingTextCheckBox, null, null} }; - double[] columnSize1 = {p, p}; JPanel normalPane = TableLayoutHelper.createTableLayoutPane(components_normal, rowSize, columnSize1); return normalPane; @@ -247,7 +244,7 @@ public class BarCodePane extends FurtherBasicBeanPane { private void repaintPreviewBarCode() { try { // carl:不支持中文转条形码 - if (ChineseHelper.containChinese(getTestText()) && this.typeComboBox.getSelectedIndex() != num16) { + if (ChineseHelper.containChinese(getTestText()) && this.typeComboBox.getSelectedIndex() != NUM16) { throw new Exception("Illegal Character."); } this.barCodePreviewPane.setObject(BarCodeUtils.getBarcodeImpl(this.updateBean().getBarcode(), getTestText())); @@ -281,13 +278,13 @@ public class BarCodePane extends FurtherBasicBeanPane { @Override public BarcodePresent updateBean() { BarcodeAttr barcodeAttr = new BarcodeAttr(); - if ((typeComboBox.getSelectedIndex() == num16 )) { + if ((typeComboBox.getSelectedIndex() == NUM16)) { barcodeAttr.setRCodeVersion(this.RCodeVersionComboBox.getSelectedIndex()); barcodeAttr.setRCodeErrorCorrect(this.RCodeErrorCorrectComboBox.getSelectedIndex()); barcodeAttr.setRcodeDrawPix(((Integer) this.RCodesizespinner.getValue()).intValue()); } barcodeAttr.setType(this.typeComboBox.getSelectedIndex()); - barcodeAttr.setBarWidth(((Double) this.barWidthSpinner.getValue()).doubleValue()); + barcodeAttr.setBarWidth(((Double) this.barWidthSpinner.getValue()).doubleValue() / 10); barcodeAttr.setBarHeight(((Integer) this.barHeightSpinner.getValue()).intValue()); barcodeAttr.setDrawingText(this.drawingTextCheckBox.isSelected()); return new BarcodePresent(barcodeAttr); diff --git a/designer/src/com/fr/design/present/CurrencyLinePane.java b/designer/src/com/fr/design/present/CurrencyLinePane.java index 8d627b7d8..4bf9ea756 100644 --- a/designer/src/com/fr/design/present/CurrencyLinePane.java +++ b/designer/src/com/fr/design/present/CurrencyLinePane.java @@ -1,238 +1,231 @@ package com.fr.design.present; -import java.awt.*; - -import javax.swing.JComponent; - -import com.fr.design.constants.UIConstants; -import com.fr.design.gui.ilable.UILabel; -import javax.swing.JPanel; -import javax.swing.SpinnerNumberModel; -import javax.swing.border.TitledBorder; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; -import javax.swing.event.DocumentEvent; -import javax.swing.event.DocumentListener; - import com.fr.design.beans.FurtherBasicBeanPane; import com.fr.design.border.UIRoundedBorder; +import com.fr.design.constants.UIConstants; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.ispinner.UIBasicSpinner; 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.cellattr.CurrencyLineAttr; import com.fr.report.cell.cellattr.CurrencyLinePresent; import com.fr.report.cell.painter.barcode.BarcodeException; import com.fr.report.core.CurrencyLineImpl; -import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.design.gui.ispinner.UIBasicSpinner; + +import javax.swing.*; +import javax.swing.border.TitledBorder; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import java.awt.*; /** - * * @author zhou * @since 2012-6-4下午7:34:52 */ public class CurrencyLinePane extends FurtherBasicBeanPane { private static final int VS_NUM = 4; private static final int VG_NUM = 6; - private UIBasicSpinner intPartSpinner; - private UIBasicSpinner deciPartSpinner; - private UITextField textField; - private CurrencyLinePreviewPane CurrencyLinePreviewPane; - private int intPart = 9; - private int deciPart = 3; - - private static final int POSITION = 8; - ChangeListener listener2 = new ChangeListener() { - - @Override - public void stateChanged(ChangeEvent e) { - CurrencyLinePreviewPane.setObject(textField.getText(), update()); - } - - }; - - DocumentListener listener = new DocumentListener() { - @Override - public void insertUpdate(DocumentEvent e) { - CurrencyLinePreviewPane.setObject(textField.getText(), update()); - } - - @Override - public void removeUpdate(DocumentEvent e) { - CurrencyLinePreviewPane.setObject(textField.getText(), update()); - } - - @Override - public void changedUpdate(DocumentEvent e) { - CurrencyLinePreviewPane.setObject(textField.getText(), update()); - } - }; - - public CurrencyLinePane() { - this.initComponents(); - } - - protected void initComponents() { - // 整数位选择 - intPartSpinner = new UIBasicSpinner(new SpinnerNumberModel(9, 1, 20, 1)); - intPartSpinner.setPreferredSize(new Dimension(45, 20)); - - // 小数位选择 - deciPartSpinner = new UIBasicSpinner(new SpinnerNumberModel(2, 1, 10, 1)); - deciPartSpinner.setPreferredSize(new Dimension(45, 20)); - // 预览区域 - textField = new UITextField(10); - - CurrencyLinePreviewPane = new CurrencyLinePreviewPane(); - CurrencyLinePreviewPane.setPreferredSize(new Dimension(0, 145)); - JPanel borderPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - TitledBorder titledBorder = new TitledBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 5), Inter.getLocText("StyleFormat-Sample"), 4, 2, this.getFont(), UIConstants.LINE_COLOR); - borderPane.setBorder(titledBorder); - borderPane.add(CurrencyLinePreviewPane, BorderLayout.CENTER); - - textField.requestFocus(); - - double vs = VS_NUM; - double vg = VG_NUM; - double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - double[] columnSize = { p, f }; - double[] rowSize = { p, p,p,p }; + private UIBasicSpinner intPartSpinner; + private UIBasicSpinner deciPartSpinner; + private UITextField textField; + private CurrencyLinePreviewPane CurrencyLinePreviewPane; + private int intPart = 9; + private int deciPart = 3; + + private static final int POSITION = 8; + ChangeListener listener2 = new ChangeListener() { + + @Override + public void stateChanged(ChangeEvent e) { + CurrencyLinePreviewPane.setObject(textField.getText(), update()); + } + + }; + + DocumentListener listener = new DocumentListener() { + @Override + public void insertUpdate(DocumentEvent e) { + CurrencyLinePreviewPane.setObject(textField.getText(), update()); + } + + @Override + public void removeUpdate(DocumentEvent e) { + CurrencyLinePreviewPane.setObject(textField.getText(), update()); + } + + @Override + public void changedUpdate(DocumentEvent e) { + CurrencyLinePreviewPane.setObject(textField.getText(), update()); + } + }; + + public CurrencyLinePane() { + this.initComponents(); + } + + protected void initComponents() { + // 整数位选择 + intPartSpinner = new UIBasicSpinner(new SpinnerNumberModel(9, 1, 20, 1)); + intPartSpinner.setPreferredSize(new Dimension(135, 20)); + + // 小数位选择 + deciPartSpinner = new UIBasicSpinner(new SpinnerNumberModel(2, 1, 10, 1)); + deciPartSpinner.setPreferredSize(new Dimension(135, 20)); + // 预览区域 + textField = new UITextField(10); + + CurrencyLinePreviewPane = new CurrencyLinePreviewPane(); + CurrencyLinePreviewPane.setPreferredSize(new Dimension(0, 145)); + JPanel borderPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + TitledBorder titledBorder = new TitledBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 5), Inter.getLocText("StyleFormat-Sample"), 4, 2, this.getFont(), UIConstants.LINE_COLOR); + borderPane.setBorder(titledBorder); + borderPane.add(CurrencyLinePreviewPane, BorderLayout.CENTER); + + textField.requestFocus(); + + double vs = VS_NUM; + double vg = VG_NUM; + double p = TableLayout.PREFERRED; + double f = TableLayout.FILL; + double[] columnSize = {p, f}; + double[] rowSize = {p, p, p, p}; Component[][] components = new Component[][]{ - new Component[]{new UILabel(Inter.getLocText("Data") + ":", UILabel.RIGHT),textField}, - new Component[]{borderPane,null}, - new Component[]{new UILabel(Inter.getLocText("IntPart") + ":", UILabel.RIGHT), groupPane(intPartSpinner)}, - new Component[]{new UILabel(Inter.getLocText("DeciPart") + ":", UILabel.RIGHT), groupPane(deciPartSpinner)} + new Component[]{new UILabel(Inter.getLocText("Data"), UILabel.LEFT), textField}, + new Component[]{borderPane, null}, + new Component[]{new UILabel(Inter.getLocText("IntPart"), UILabel.LEFT), groupPane(intPartSpinner)}, + new Component[]{new UILabel(Inter.getLocText("DeciPart"), UILabel.LEFT), groupPane(deciPartSpinner)} - } ; + }; - JPanel linePane = TableLayoutHelper.createTableLayoutPane(components,rowSize,columnSize); + JPanel linePane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); this.setLayout(new BorderLayout()); - this.add(linePane,BorderLayout.CENTER); + this.add(linePane, BorderLayout.CENTER); - - - textField.getDocument().addDocumentListener(listener); - intPartSpinner.addChangeListener(listener2); - deciPartSpinner.addChangeListener(listener2); - textField.setText("123456.78"); - } + textField.getDocument().addDocumentListener(listener); + intPartSpinner.addChangeListener(listener2); + deciPartSpinner.addChangeListener(listener2); + textField.setText("123456.78"); + } - @Override + @Override /** * 窗口名 - * @return 同上 + * @return 同上 */ - public String title4PopupWindow() { - return Inter.getLocText("Currency_Line"); - } + public String title4PopupWindow() { + return Inter.getLocText("Currency_Line"); + } /** - * + * */ - public CurrencyLineAttr update() { - CurrencyLineAttr currencylineAttr = new CurrencyLineAttr(); - currencylineAttr.setintPart(((Integer)this.intPartSpinner.getValue()).intValue()); - currencylineAttr.setdeciPart(((Integer)this.deciPartSpinner.getValue()).intValue()); - return currencylineAttr; - } + public CurrencyLineAttr update() { + CurrencyLineAttr currencylineAttr = new CurrencyLineAttr(); + currencylineAttr.setintPart(((Integer) this.intPartSpinner.getValue()).intValue()); + currencylineAttr.setdeciPart(((Integer) this.deciPartSpinner.getValue()).intValue()); + return currencylineAttr; + } /** - * + * */ - public void setintPart(int intpart) { - this.intPart = intpart; - } + public void setintPart(int intpart) { + this.intPart = intpart; + } /** - * + * */ - public void setdeciPart(int decipart) { - this.deciPart = decipart; - } + public void setdeciPart(int decipart) { + this.deciPart = decipart; + } - private class CurrencyLinePreviewPane extends JPanel { - private String text; - CurrencyLineAttr currencyLineAttr; + private class CurrencyLinePreviewPane extends JPanel { + private String text; + CurrencyLineAttr currencyLineAttr; - public CurrencyLinePreviewPane() { + public CurrencyLinePreviewPane() { // setBackground(Color.white); - } - - public void setObject(String text, CurrencyLineAttr currencyLineAttr) { - this.text = text; - this.currencyLineAttr = currencyLineAttr; - GUICoreUtils.repaint(this); - } - - @Override - public void paintComponent(Graphics g) { - super.paintComponent(g); - if (text == null){ - return; + } + + public void setObject(String text, CurrencyLineAttr currencyLineAttr) { + this.text = text; + this.currencyLineAttr = currencyLineAttr; + GUICoreUtils.repaint(this); + } + + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + if (text == null) { + return; + } + Dimension size = this.getSize(); + try { + CurrencyLineImpl currencyLineImpl = new CurrencyLineImpl(text, currencyLineAttr); + currencyLineImpl.draw((Graphics2D) g, (int) (size.getWidth()), (int) (size.getHeight())); + } catch (BarcodeException e) { + Color oldColor = g.getColor(); + g.setColor(Color.red); + g.drawString(e.getMessage(), (int) (size.getWidth() / POSITION), (int) (size.getHeight() / POSITION)); + g.setColor(oldColor); } - Dimension size = this.getSize(); - try { - CurrencyLineImpl currencyLineImpl = new CurrencyLineImpl(text, currencyLineAttr); - currencyLineImpl.draw((Graphics2D)g, (int)(size.getWidth()), (int)(size.getHeight())); - } catch (BarcodeException e) { - Color oldColor = g.getColor(); - g.setColor(Color.red); - g.drawString(e.getMessage(), (int)(size.getWidth() / POSITION), (int)(size.getHeight() / POSITION)); - g.setColor(oldColor); - } - } - - } - - protected static JPanel groupPane(JComponent comp) { - JPanel jp = new JPanel(); - jp.setBorder(null); - jp.setLayout(new FlowLayout(FlowLayout.LEFT)); - jp.add(comp); - return jp; - } - - @Override + } + + } + + protected static JPanel groupPane(JComponent comp) { + JPanel jp = new JPanel(); + jp.setBorder(null); + jp.setLayout(new FlowLayout(FlowLayout.LEFT)); + jp.add(comp); + return jp; + } + + @Override /** * 是否为该类型 * @param ob 对象 * @return 同上 - * + * */ - public boolean accept(Object ob) { - return ob instanceof CurrencyLinePresent; - } + public boolean accept(Object ob) { + return ob instanceof CurrencyLinePresent; + } /** - * 重置 + * 重置 */ - public void reset() { - this.intPartSpinner.setValue(9); - this.deciPartSpinner.setValue(3); - } - - @Override - public void populateBean(CurrencyLinePresent ob) { - CurrencyLineAttr currencyLine = ob.getCurrencyLineAttr(); - if (currencyLine == null) { - currencyLine = new CurrencyLineAttr(); - } - this.intPartSpinner.setValue(new Integer(currencyLine.getintPart())); - this.deciPartSpinner.setValue(new Integer(currencyLine.getdeciPart())); - } - - @Override - public CurrencyLinePresent updateBean() { - CurrencyLineAttr currencylineAttr = new CurrencyLineAttr(); - currencylineAttr.setintPart(((Integer)this.intPartSpinner.getValue()).intValue()); - currencylineAttr.setdeciPart(((Integer)this.deciPartSpinner.getValue()).intValue()); - return new CurrencyLinePresent(currencylineAttr); - } + public void reset() { + this.intPartSpinner.setValue(9); + this.deciPartSpinner.setValue(3); + } + + @Override + public void populateBean(CurrencyLinePresent ob) { + CurrencyLineAttr currencyLine = ob.getCurrencyLineAttr(); + if (currencyLine == null) { + currencyLine = new CurrencyLineAttr(); + } + this.intPartSpinner.setValue(new Integer(currencyLine.getintPart())); + this.deciPartSpinner.setValue(new Integer(currencyLine.getdeciPart())); + } + + @Override + public CurrencyLinePresent updateBean() { + CurrencyLineAttr currencylineAttr = new CurrencyLineAttr(); + currencylineAttr.setintPart(((Integer) this.intPartSpinner.getValue()).intValue()); + currencylineAttr.setdeciPart(((Integer) this.deciPartSpinner.getValue()).intValue()); + return new CurrencyLinePresent(currencylineAttr); + } } \ No newline at end of file diff --git a/designer/src/com/fr/quickeditor/CellQuickEditor.java b/designer/src/com/fr/quickeditor/CellQuickEditor.java index 1190b433a..7ae3dbba3 100644 --- a/designer/src/com/fr/quickeditor/CellQuickEditor.java +++ b/designer/src/com/fr/quickeditor/CellQuickEditor.java @@ -1,123 +1,129 @@ -package com.fr.quickeditor; - -import com.fr.base.BaseUtils; -import com.fr.design.actions.utils.DeprecatedActionManager; -import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.itextfield.UITextField; -import com.fr.design.layout.TableLayout; -import com.fr.design.layout.TableLayoutHelper; -import com.fr.design.mainframe.DesignerContext; -import com.fr.design.mainframe.ElementCasePane; -import com.fr.design.selection.QuickEditor; -import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.general.Inter; -import com.fr.grid.selection.CellSelection; -import com.fr.report.cell.TemplateCellElement; -import com.fr.stable.ColumnRow; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; - -/** - * - * @author zhou - * @since 2012-7-23下午5:16:53 - */ -public abstract class CellQuickEditor extends QuickEditor { - - protected UITextField columnRowTextField; - protected UIButton cellElementEditButton; - protected TemplateCellElement cellElement; - - public CellQuickEditor() { - double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - double[] columnSize = { p, f }; - double[] rowSize = { p,p,p}; - - Component[][] components = new Component[][]{ - new Component[]{new UILabel(" "+Inter.getLocText("Cell")),columnRowTextField = initColumnRowTextField()}, - new Component[]{new UILabel(Inter.getLocText("HF-Insert_Content")+" "),cellElementEditButton = initCellElementEditButton()}, - new Component[]{createCenterBody(),null} - }; - - JPanel panel = TableLayoutHelper.createTableLayoutPane(components,rowSize,columnSize); - this.setLayout(new BorderLayout()); - this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); - this.add(panel,BorderLayout.CENTER); - - - - } - - protected UIButton initCellElementEditButton() { - final UIButton cellElementEditButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")); - cellElementEditButton.addMouseListener(new MouseAdapter() { - - @Override - public void mousePressed(MouseEvent evt) { - GUICoreUtils.showPopMenuWithParentWidth(DeprecatedActionManager.getCellMenu(tc).createJPopupMenu(), cellElementEditButton, 0, cellElementEditButton.getY() - 6); - } - }); - return cellElementEditButton; - } - - protected UITextField initColumnRowTextField() { - final UITextField columnRowTextField = new UITextField(4); - // barry:输入位置定位单元格 - columnRowTextField.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - ColumnRow columnRowEdit = ColumnRow.valueOf(columnRowTextField.getText()); - - // barry:检查输入是否正确 - if (!ColumnRow.validate(columnRowEdit)) { - - Object[] options = { Inter.getLocText("OK") }; - JOptionPane.showOptionDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("Please_Input_Letters+Numbers(A1,AA1,A11....)"), Inter.getLocText("Warning"), - JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); - - // 重新选中当前的selection,把columnRowTextField - tc.setSelection(tc.getSelection()); - return; - } - - JScrollBar verticalBar = tc.getVerticalScrollBar(), horizontalBar = tc.getHorizontalScrollBar(); - int m = columnRowEdit.getColumn(), n = columnRowEdit.getRow(); - - verticalBar.setMaximum(n); - verticalBar.setValue(n < 21 ? verticalBar.getValue() : n - 20); - horizontalBar.setMaximum(m); - horizontalBar.setValue(m < 13 ? horizontalBar.getValue() : m - 12); - - tc.setSelection(new CellSelection(m, n, 1, 1)); - tc.requestFocus(); - } - }); - return columnRowTextField; - } - - public abstract JComponent createCenterBody(); - - @Override - protected void refresh() { - CellSelection cs = (CellSelection)tc.getSelection(); - ColumnRow columnRow = ColumnRow.valueOf(cs.getColumn(), cs.getRow()); - columnRowTextField.setText(columnRow.toString()); - cellElement = tc.getEditingElementCase().getTemplateCellElement(cs.getColumn(), cs.getRow()); - refreshDetails(); - } - - protected abstract void refreshDetails(); - - - - - +package com.fr.quickeditor; + +import com.fr.base.BaseUtils; +import com.fr.design.actions.utils.DeprecatedActionManager; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.itextfield.UITextField; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.ElementCasePane; +import com.fr.design.selection.QuickEditor; +import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.Inter; +import com.fr.grid.selection.CellSelection; +import com.fr.report.cell.TemplateCellElement; +import com.fr.stable.ColumnRow; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +/** + * @author zhou + * @since 2012-7-23下午5:16:53 + */ +public abstract class CellQuickEditor extends QuickEditor { + + protected UITextField columnRowTextField; + private UIButton cellElementEditButton; + protected TemplateCellElement cellElement; + + public CellQuickEditor() { + double p = TableLayout.PREFERRED; + double f = TableLayout.FILL; + double[] columnSize = {p, f}; + double[] rowSize = {p, p, p}; + Component[][] components = new Component[][]{ + new Component[]{new UILabel(" " + Inter.getLocText("Cell")), columnRowTextField = initColumnRowTextField()}, + new Component[]{new UILabel(Inter.getLocText("HF-Insert_Content") + " "), cellElementEditButton = initCellElementEditButton()}, + new Component[]{createCenterBody(), null} + }; + JPanel panel = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); + this.setLayout(new BorderLayout()); + this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); + this.add(panel, BorderLayout.CENTER); + } + + /** + * 初始化添加按钮 + * TODO 9.0 换成下拉菜单后原来的快捷键不好处理,先跳过。 + * + * @return UIButton + */ + private UIButton initCellElementEditButton() { + final UIButton cellElementEditButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")); + cellElementEditButton.addMouseListener(new MouseAdapter() { + + @Override + public void mousePressed(MouseEvent evt) { + GUICoreUtils.showPopMenuWithParentWidth(DeprecatedActionManager.getCellMenu(tc).createJPopupMenu(), cellElementEditButton, 0, cellElementEditButton.getY() - 6); + } + }); + return cellElementEditButton; + } + + /** + * 初始化单元格域,存储当前选择的单元格,例A3,B4等 + * + * @return 单元格信息文本域 + */ + private UITextField initColumnRowTextField() { + final UITextField columnRowTextField = new UITextField(4); + + // barry:输入位置定位单元格 + columnRowTextField.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + ColumnRow columnRowEdit = ColumnRow.valueOf(columnRowTextField.getText()); + // barry:检查输入是否正确 + if (!ColumnRow.validate(columnRowEdit)) { + Object[] options = {Inter.getLocText("OK")}; + JOptionPane.showOptionDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("Please_Input_Letters+Numbers(A1,AA1,A11....)"), Inter.getLocText("Warning"), + JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); + // 重新选中当前的selection,把columnRowTextField + tc.setSelection(tc.getSelection()); + return; + } + JScrollBar verticalBar = tc.getVerticalScrollBar(), horizontalBar = tc.getHorizontalScrollBar(); + int m = columnRowEdit.getColumn(), n = columnRowEdit.getRow(); + verticalBar.setMaximum(n); + verticalBar.setValue(n < 21 ? verticalBar.getValue() : n - 20); + horizontalBar.setMaximum(m); + horizontalBar.setValue(m < 13 ? horizontalBar.getValue() : m - 12); + tc.setSelection(new CellSelection(m, n, 1, 1)); + tc.requestFocus(); + } + }); + return columnRowTextField; + } + + + /** + * 初始化详细信息面板 + * + * @return JComponent 待显示的详细信息面板 + */ + public abstract JComponent createCenterBody(); + + /** + * 刷新 + */ + @Override + protected void refresh() { + CellSelection cs = (CellSelection) tc.getSelection(); + ColumnRow columnRow = ColumnRow.valueOf(cs.getColumn(), cs.getRow()); + columnRowTextField.setText(columnRow.toString()); + cellElement = tc.getEditingElementCase().getTemplateCellElement(cs.getColumn(), cs.getRow()); + refreshDetails(); + } + + /** + * 刷新详细信息 + */ + protected abstract void refreshDetails(); } \ No newline at end of file diff --git a/designer/src/com/fr/quickeditor/cellquick/CellBiasTextPainterEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellBiasTextPainterEditor.java index e9387cccc..fcb36c8cb 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellBiasTextPainterEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellBiasTextPainterEditor.java @@ -1,61 +1,63 @@ -package com.fr.quickeditor.cellquick; - -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.BorderFactory; -import javax.swing.JComponent; - -import com.fr.base.BaseUtils; -import com.fr.design.cell.editor.BiasTextPainterCellEditor.BiasTextPainterPane; -import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.mainframe.DesignerContext; -import com.fr.design.dialog.DialogActionAdapter; -import com.fr.general.ComparatorUtils; -import com.fr.general.Inter; -import com.fr.quickeditor.CellQuickEditor; -import com.fr.report.cell.painter.BiasTextPainter; - -public class CellBiasTextPainterEditor extends CellQuickEditor { - - @Override - public JComponent createCenterBody() { - UIButton editbutton = new UIButton(Inter.getLocText("Edit"), BaseUtils.readIcon("/com/fr/design/images/m_insert/bias.png")); - editbutton.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - showEditingDialog(); - } - }); - editbutton.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0)); - editbutton.setMargin(null); - editbutton.setOpaque(false); - return editbutton; - } - - private void showEditingDialog() { - final BiasTextPainter oldbiasTextPainter = (BiasTextPainter)cellElement.getValue(); - final BiasTextPainterPane biasTextPainterPane = new BiasTextPainterPane(); - biasTextPainterPane.populate(oldbiasTextPainter); - biasTextPainterPane.showSmallWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { - - @Override - public void doOk() { - BiasTextPainter newbiasTextPainter = biasTextPainterPane.update(); - if (!ComparatorUtils.equals(oldbiasTextPainter, newbiasTextPainter)) { - cellElement.setValue(newbiasTextPainter); - fireTargetModified(); - } - } - - }).setVisible(true); - } - - @Override - protected void refreshDetails() { - // TODO Auto-generated method stub - - } - +package com.fr.quickeditor.cellquick; + +import com.fr.base.BaseUtils; +import com.fr.design.cell.editor.BiasTextPainterCellEditor.BiasTextPainterPane; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.mainframe.DesignerContext; +import com.fr.general.ComparatorUtils; +import com.fr.general.Inter; +import com.fr.quickeditor.CellQuickEditor; +import com.fr.report.cell.painter.BiasTextPainter; + +import javax.swing.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +/** + * 单元格元素斜线编辑器 + * TODO 9.0 大体没有改动 + */ +public class CellBiasTextPainterEditor extends CellQuickEditor { + + @Override + public JComponent createCenterBody() { + UIButton editbutton = new UIButton(Inter.getLocText("Edit"), BaseUtils.readIcon("/com/fr/design/images/m_insert/bias.png")); + editbutton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + showEditingDialog(); + } + }); + editbutton.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0)); + editbutton.setMargin(null); + editbutton.setOpaque(false); + return editbutton; + } + + private void showEditingDialog() { + final BiasTextPainter oldbiasTextPainter = (BiasTextPainter) cellElement.getValue(); + final BiasTextPainterPane biasTextPainterPane = new BiasTextPainterPane(); + biasTextPainterPane.populate(oldbiasTextPainter); + biasTextPainterPane.showSmallWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { + + @Override + public void doOk() { + BiasTextPainter newbiasTextPainter = biasTextPainterPane.update(); + if (!ComparatorUtils.equals(oldbiasTextPainter, newbiasTextPainter)) { + cellElement.setValue(newbiasTextPainter); + fireTargetModified(); + } + } + + }).setVisible(true); + } + + @Override + protected void refreshDetails() { + // TODO Auto-generated method stub + + } + } \ No newline at end of file diff --git a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java index 11cea3e15..321da63fb 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java @@ -1,111 +1,201 @@ -package com.fr.quickeditor.cellquick; - -import com.fr.design.actions.columnrow.DSColumnAdvancedAction; -import com.fr.design.actions.columnrow.DSColumnBasicAction; -import com.fr.design.actions.columnrow.DSColumnConditionAction; -import com.fr.design.constants.LayoutConstants; -import com.fr.design.dscolumn.ResultSetGroupDockingPane; -import com.fr.design.dscolumn.SelectedDataColumnPane; -import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.layout.TableLayout; -import com.fr.design.layout.TableLayoutHelper; -import com.fr.quickeditor.CellQuickEditor; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; - -public class CellDSColumnEditor extends CellQuickEditor { - private JPanel dsColumnRegion; - private JPanel centerPane; - private SelectedDataColumnPane dataPane; - private ResultSetGroupDockingPane groupPane; - private ItemListener groupListener = new ItemListener() { - - @Override - public void itemStateChanged(ItemEvent e) { - if (e == null) { - //分组-高级-自定义点确定的时候传进来null的e,但是这时候应该触发保存 - groupPane.update(); - fireTargetModified(); - return; - } - if (e.getStateChange() == ItemEvent.DESELECTED) { - if (!isEditing) { - return; - } - groupPane.update(); - fireTargetModified(); - } - } - }; - - private ItemListener dataListener = new ItemListener() { - - @Override - public void itemStateChanged(ItemEvent e) { - if (e.getStateChange() == ItemEvent.SELECTED) { - if (!isEditing) { - return; - } - dataPane.update(cellElement); - fireTargetModified(); - } - } - }; - - private CellDSColumnEditor() { - super(); - } - - @Override - public JComponent createCenterBody() { - double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - double[] columnSize = {p, f}; - double[] rowSize = {p, p, p, p}; - Component[][] components = new Component[][]{}; - dsColumnRegion = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); - centerPane = new JPanel(new BorderLayout(0, 0)); - centerPane.add(dsColumnRegion, BorderLayout.CENTER); - return centerPane; - } - - // august:这里面的东西都全部重新动态生成,不然容易出错 - @Override - protected void refreshDetails() { - JPanel pane = new JPanel(new BorderLayout(LayoutConstants.HGAP_LARGE, 0)); - pane.add(new UIButton(new DSColumnConditionAction(tc)), BorderLayout.WEST); - pane.add(new UIButton(new DSColumnAdvancedAction(tc)), BorderLayout.CENTER); - double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - double[] columnSize = {p, f}; - double[] rowSize = {p, p, p, p}; - Component[][] components = new Component[][]{ - new Component[]{new UIButton(new DSColumnBasicAction(tc)), null}, - new Component[]{pane, null}, - new Component[]{dataPane = new SelectedDataColumnPane(false), null}, - new Component[]{groupPane = new ResultSetGroupDockingPane(tc), null} - }; - centerPane.removeAll(); - dsColumnRegion = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); - centerPane.add(dsColumnRegion, BorderLayout.CENTER); - dataPane.addListener(dataListener); - groupPane.addListener(groupListener); - dataPane.populate(null, cellElement); - groupPane.populate(cellElement); - this.validate(); - } - - - /** - * for 关闭时候释放 - */ - public void release () { - super.release(); - dsColumnRegion = null; - centerPane = null; - } - +package com.fr.quickeditor.cellquick; + +import com.fr.design.actions.columnrow.DSColumnConditionAction; +import com.fr.design.dscolumn.DSColumnAdvancedEditorPane; +import com.fr.design.dscolumn.DSColumnBasicEditorPane; +import com.fr.design.dscolumn.ResultSetGroupDockingPane; +import com.fr.design.dscolumn.SelectedDataColumnPane; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.ibutton.UIHeadGroup; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.mainframe.cell.CellEditorPane; +import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.quickeditor.CellQuickEditor; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.util.ArrayList; + +/** + * 单元格元素 数据列编辑器 + * + * @author yaoh.wu + * @version 2017年7月24日 + * @since 9.0 + */ +public class CellDSColumnEditor extends CellQuickEditor { + + private JPanel dsColumnRegion; + private JPanel centerPane; + //数据集列选择组件 + private SelectedDataColumnPane dataPane; + //数据分组设置组件 + private ResultSetGroupDockingPane groupPane; + //过滤条件面板 + private JPanel conditionPane; + // 基本和高级设置 + private ArrayList paneList; + // 基本和高级设置 卡片布局 + private CardLayout card; + // 基本和高级设置 容器面板 + private JPanel center; + // 卡片布局TAB切换按钮 + private UIHeadGroup tabsHeaderIconPane; + // 分组设置监听器 + private ItemListener groupListener = new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (e == null) { + //分组-高级-自定义点确定的时候传进来null的e,但是这时候应该触发保存 + groupPane.update(); + fireTargetModified(); + return; + } + if (e.getStateChange() == ItemEvent.DESELECTED) { + if (!isEditing) { + return; + } + groupPane.update(); + fireTargetModified(); + } + } + }; + //数据集列设置监听器 + private ItemListener dataListener = new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + if (!isEditing) { + return; + } + dataPane.update(cellElement); + fireTargetModified(); + } + } + }; + + private CellDSColumnEditor() { + super(); + } + + /** + * Test Main + * + * @param args 参数 + */ + public static void main(String[] args) { + JFrame jf = new JFrame("test"); + jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); + JPanel content = (JPanel) jf.getContentPane(); + content.setLayout(new BorderLayout()); + content.add(new CellDSColumnEditor(), BorderLayout.CENTER); + GUICoreUtils.centerWindow(jf); + jf.setSize(220, 400); + jf.setVisible(true); + } + + /** + * 创建面板占位 + * + * @return JComponent 详细信息面板 + */ + @Override + public JComponent createCenterBody() { + this.createPanes(); + this.createSwitchTab(); + dsColumnRegion = new JPanel(new BorderLayout()); + dsColumnRegion.add(tabsHeaderIconPane, BorderLayout.NORTH); + dsColumnRegion.add(center, BorderLayout.CENTER); + centerPane = new JPanel(new BorderLayout()); + centerPane.add(dsColumnRegion, BorderLayout.CENTER); + return centerPane; + } + + /** + * 内容全部重新动态生成,不然容易出错 + * 刷新详细信息面板 + */ + @Override + protected void refreshDetails() { + + this.createPanes(); + this.createSwitchTab(); + dsColumnRegion = new JPanel(new BorderLayout()); + dsColumnRegion.add(tabsHeaderIconPane, BorderLayout.NORTH); + dsColumnRegion.add(center, BorderLayout.CENTER); + //必须removeAll之后再添加;重新再实例化一个centerJPanel,因为对象变了会显示不出来 + centerPane.removeAll(); + centerPane.add(dsColumnRegion, BorderLayout.CENTER); + for (CellEditorPane cellEditorPane : paneList) { + cellEditorPane.populate(cellElement); + } + this.validate(); + } + + + /** + * 关闭时候释放 + */ + public void release() { + super.release(); + dsColumnRegion = null; + centerPane = null; + } + + + /** + * 初始化基本和高级设置切换tab + */ + private void createSwitchTab() { + String[] iconArray = new String[paneList.size()]; + card = new CardLayout(); + center = new JPanel(card); + center.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); + for (int i = 0; i < paneList.size(); i++) { + CellEditorPane pane = paneList.get(i); + iconArray[i] = pane.getIconPath(); + center.add(pane, pane.title4PopupWindow()); + } + tabsHeaderIconPane = new UIHeadGroup(iconArray) { + @Override + public void tabChanged(int index) { + card.show(center, paneList.get(index).title4PopupWindow()); + paneList.get(index).populate(cellElement); + } + }; + tabsHeaderIconPane.setNeedLeftRightOutLine(false); + } + + /** + * 刷新数据列基本和高级设置面板 + */ + private void createPanes() { + paneList = new ArrayList<>(); + + /*基本设置面板*/ + this.dataPane = new SelectedDataColumnPane(); + this.groupPane = new ResultSetGroupDockingPane(tc); + double p = TableLayout.PREFERRED, f = TableLayout.FILL; + double[] rowSize = {p}, columnSize = {p, f}; + UILabel uiLabel = new UILabel("filter"); + UIButton uiButton = new UIButton(); + if (tc != null) { + //第一次初始化时tc为空,引发NullPointerException + uiButton = new UIButton(new DSColumnConditionAction(tc)); + } + Component[][] components = new Component[][]{ + new Component[]{uiLabel, uiButton} + }; + this.conditionPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); + dataPane.addListener(dataListener); + groupPane.addListener(groupListener); + paneList.add(new DSColumnBasicEditorPane(cellElement, dataPane, groupPane, conditionPane)); + + /*高级设置面板*/ + paneList.add(new DSColumnAdvancedEditorPane()); + } } \ No newline at end of file diff --git a/designer/src/com/fr/quickeditor/cellquick/CellImageQuickEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellImageQuickEditor.java index 98fab671d..b39514ef6 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellImageQuickEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellImageQuickEditor.java @@ -1,75 +1,77 @@ -package com.fr.quickeditor.cellquick; - -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.BorderFactory; -import javax.swing.JComponent; - -import com.fr.base.BaseUtils; -import com.fr.base.Style; -import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.mainframe.DesignerContext; -import com.fr.design.report.SelectImagePane; -import com.fr.design.dialog.DialogActionAdapter; -import com.fr.general.ComparatorUtils; -import com.fr.general.Inter; -import com.fr.quickeditor.CellQuickEditor; -import com.fr.report.cell.cellattr.CellImage; - -public class CellImageQuickEditor extends CellQuickEditor { - private static CellImageQuickEditor THIS; - - public static final CellImageQuickEditor getInstance() { - if(THIS == null) { - THIS = new CellImageQuickEditor(); - } - return THIS; - } - - private CellImageQuickEditor() { - super(); - } - - @Override - public JComponent createCenterBody() { - UIButton editbutton = new UIButton(Inter.getLocText("Edit"), BaseUtils.readIcon("/com/fr/design/images/m_insert/image.png")); - editbutton.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - showEditingDialog(); - } - }); - editbutton.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0)); - editbutton.setMargin(null); - editbutton.setOpaque(false); - return editbutton; - } - - private void showEditingDialog() { - final SelectImagePane imageEditorPane = new SelectImagePane(); - imageEditorPane.populate(cellElement); - final Object oldValue = cellElement.getValue(); - final Style oldStyle = cellElement.getStyle(); - imageEditorPane.showWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { - - @Override - public void doOk() { - CellImage cellImage = imageEditorPane.update(); - if (!ComparatorUtils.equals(cellImage.getImage(), oldValue) || !ComparatorUtils.equals(cellImage.getStyle(), oldStyle)) { - cellElement.setValue(cellImage.getImage()); - cellElement.setStyle(cellImage.getStyle()); - fireTargetModified(); - } - } - - }).setVisible(true); - } - - @Override - protected void refreshDetails() { - - } - +package com.fr.quickeditor.cellquick; + +import com.fr.base.BaseUtils; +import com.fr.base.Style; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.report.SelectImagePane; +import com.fr.general.ComparatorUtils; +import com.fr.general.Inter; +import com.fr.quickeditor.CellQuickEditor; +import com.fr.report.cell.cellattr.CellImage; + +import javax.swing.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +/** + * 单元格元素图片编辑器 + * TODO 9.0大体上没有改动 + */ +public class CellImageQuickEditor extends CellQuickEditor { + private static CellImageQuickEditor THIS; + + public static final CellImageQuickEditor getInstance() { + if (THIS == null) { + THIS = new CellImageQuickEditor(); + } + return THIS; + } + + private CellImageQuickEditor() { + super(); + } + + @Override + public JComponent createCenterBody() { + UIButton editbutton = new UIButton(Inter.getLocText("Edit"), BaseUtils.readIcon("/com/fr/design/images/m_insert/image.png")); + editbutton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + showEditingDialog(); + } + }); + editbutton.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0)); + editbutton.setMargin(null); + editbutton.setOpaque(false); + return editbutton; + } + + private void showEditingDialog() { + final SelectImagePane imageEditorPane = new SelectImagePane(); + imageEditorPane.populate(cellElement); + final Object oldValue = cellElement.getValue(); + final Style oldStyle = cellElement.getStyle(); + imageEditorPane.showWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { + + @Override + public void doOk() { + CellImage cellImage = imageEditorPane.update(); + if (!ComparatorUtils.equals(cellImage.getImage(), oldValue) || !ComparatorUtils.equals(cellImage.getStyle(), oldStyle)) { + cellElement.setValue(cellImage.getImage()); + cellElement.setStyle(cellImage.getStyle()); + fireTargetModified(); + } + } + + }).setVisible(true); + } + + @Override + protected void refreshDetails() { + + } + } \ No newline at end of file diff --git a/designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java index f49fcdff1..41596ddba 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java @@ -1,50 +1,50 @@ -package com.fr.quickeditor.cellquick; - -import javax.swing.BorderFactory; -import javax.swing.JComponent; - -import com.fr.design.actions.insert.cell.RichTextCellAction; -import com.fr.design.gui.ibutton.UIButton; -import com.fr.general.Inter; -import com.fr.quickeditor.CellQuickEditor; - -public class CellRichTextEditor extends CellQuickEditor { - private UIButton subReportButton; - private static CellRichTextEditor THIS; - - public static final CellRichTextEditor getInstance() { - if(THIS == null) { - THIS = new CellRichTextEditor(); - } - return THIS; - } - - private CellRichTextEditor() { - super(); - } - - /** - * 创建界面上中间的部分 - * - * @return 界面元素 - * - * - * @date 2014-12-7-下午9:41:52 - * - */ - public JComponent createCenterBody() { - subReportButton = new UIButton(); - subReportButton.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0)); - subReportButton.setMargin(null); - subReportButton.setOpaque(false); - return subReportButton; - } - - @Override - protected void refreshDetails() { - RichTextCellAction subReportCellAction = new RichTextCellAction(tc); - subReportCellAction.setName(Inter.getLocText("FR-Designer_RichTextEditor")); - subReportButton.setAction(subReportCellAction); - } - +package com.fr.quickeditor.cellquick; + +import com.fr.design.actions.insert.cell.RichTextCellAction; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.general.Inter; +import com.fr.quickeditor.CellQuickEditor; + +import javax.swing.*; + +/** + * 单元格元素富文本编辑器 + * TODO 9.0 大体上没有改动 + */ +public class CellRichTextEditor extends CellQuickEditor { + private UIButton subReportButton; + private static CellRichTextEditor THIS; + + public static final CellRichTextEditor getInstance() { + if (THIS == null) { + THIS = new CellRichTextEditor(); + } + return THIS; + } + + private CellRichTextEditor() { + super(); + } + + /** + * 创建界面上中间的部分 + * + * @return 界面元素 + * @date 2014-12-7-下午9:41:52 + */ + public JComponent createCenterBody() { + subReportButton = new UIButton(); + subReportButton.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0)); + subReportButton.setMargin(null); + subReportButton.setOpaque(false); + return subReportButton; + } + + @Override + protected void refreshDetails() { + RichTextCellAction subReportCellAction = new RichTextCellAction(tc); + subReportCellAction.setName(Inter.getLocText("FR-Designer_RichTextEditor")); + subReportButton.setAction(subReportCellAction); + } + } \ No newline at end of file diff --git a/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java index fa200631d..01d3c7d6e 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java @@ -1,151 +1,155 @@ -package com.fr.quickeditor.cellquick; - -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; - -import javax.swing.JComponent; -import javax.swing.event.DocumentEvent; -import javax.swing.event.DocumentListener; - -import com.fr.base.Formula; -import com.fr.base.Style; -import com.fr.base.TextFormat; -import com.fr.design.gui.itextfield.UITextField; -import com.fr.grid.selection.CellSelection; -import com.fr.quickeditor.CellQuickEditor; -import com.fr.report.ReportHelper; -import com.fr.report.cell.DefaultTemplateCellElement; -import com.fr.stable.ColumnRow; -import com.fr.stable.StringUtils; - -public class CellStringQuickEditor extends CellQuickEditor { - - - private static CellStringQuickEditor THIS; - - private UITextField stringTextField; - - private boolean isEditing = false; - - public static final CellStringQuickEditor getInstance() { - if (THIS == null) { - THIS = new CellStringQuickEditor(); - } - return THIS; - } - - // august:如果是原来编辑的是公式,要保留公式里的这些属性,不然在公式和字符串转化时,就会丢失这些属性设置 - private boolean reserveInResult = false; - private boolean reserveOnWriteOrAnaly = true; - - private CellStringQuickEditor() { - super(); - } - - @Override - /** - * - */ - public JComponent createCenterBody() { - stringTextField = new UITextField(); - stringTextField.addKeyListener(new KeyAdapter() { - - @Override - public void keyReleased(KeyEvent e) { - if (tc != null) { - tc.getGrid().dispatchEvent(e); - } - } - - }); - - return stringTextField; - } - - DocumentListener documentListener = new DocumentListener() { - - @Override - public void insertUpdate(DocumentEvent e) { - changeReportPaneCell(stringTextField.getText().trim()); - } - - @Override - public void removeUpdate(DocumentEvent e) { - changeReportPaneCell(stringTextField.getText().trim()); - } - - @Override - public void changedUpdate(DocumentEvent e) { - changeReportPaneCell(stringTextField.getText().trim()); - } - - }; - - protected void changeReportPaneCell(String tmpText) { - isEditing = true; - //refresh一下,如果单元格内有新添加的控件,此时并不知道 - CellSelection cs1 = (CellSelection) tc.getSelection(); - ColumnRow columnRow = ColumnRow.valueOf(cs1.getColumn(), cs1.getRow()); - columnRowTextField.setText(columnRow.toString()); - cellElement = tc.getEditingElementCase().getTemplateCellElement(cs1.getColumn(), cs1.getRow()); - - if (cellElement == null) { - CellSelection cs = (CellSelection) tc.getSelection(); - cellElement = new DefaultTemplateCellElement(cs.getColumn(), cs.getRow()); - tc.getEditingElementCase().addCellElement(cellElement, false); - } - if (tmpText != null && (tmpText.length() > 0 && tmpText.charAt(0) == '=')) { - Formula textFormula = new Formula(tmpText); - textFormula.setReserveInResult(reserveInResult); - textFormula.setReserveOnWriteOrAnaly(reserveOnWriteOrAnaly); - cellElement.setValue(textFormula); - } else { - Style style = cellElement.getStyle(); - if (cellElement != null && style != null && style.getFormat() != null && style.getFormat() == TextFormat.getInstance()) { - cellElement.setValue(tmpText); - } else { - cellElement.setValue(ReportHelper.convertGeneralStringAccordingToExcel(tmpText)); - } - } - fireTargetModified(); - stringTextField.requestFocus(); - isEditing = false; - } - - @Override - protected void refreshDetails() { - String str = null; - if (cellElement == null) { - str = StringUtils.EMPTY; - } else { - Object value = cellElement.getValue(); - if (value == null) { - str = StringUtils.EMPTY; - } else if (value instanceof Formula) { - Formula formula = (Formula) value; - str = formula.getContent(); - reserveInResult = formula.isReserveInResult(); - reserveOnWriteOrAnaly = formula.isReserveOnWriteOrAnaly(); - } else { - str = value.toString(); - } - } - showText(str); - stringTextField.setEditable(tc.isSelectedOneCell()); - } - - /** - * - * @param str - */ - public void showText(String str) { - // 本编辑框在输入过程中引发的后续事件如果还调用了本框的setText方法不能执行 - if (isEditing) { - return; - } - stringTextField.getDocument().removeDocumentListener(documentListener); - stringTextField.setText(str); - stringTextField.getDocument().addDocumentListener(documentListener); - } - +package com.fr.quickeditor.cellquick; + +import com.fr.base.Formula; +import com.fr.base.Style; +import com.fr.base.TextFormat; +import com.fr.design.gui.itextfield.UITextField; +import com.fr.grid.selection.CellSelection; +import com.fr.quickeditor.CellQuickEditor; +import com.fr.report.ReportHelper; +import com.fr.report.cell.DefaultTemplateCellElement; +import com.fr.stable.ColumnRow; +import com.fr.stable.StringUtils; + +import javax.swing.*; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; + +/** + * + */ +public class CellStringQuickEditor extends CellQuickEditor { + //instance + private static CellStringQuickEditor THIS; + //文本域 + //TODO 9.0 文本域要根据具体文本数量自适应大小,比较难搞,先跳过。 + private UITextField stringTextField; + //编辑状态 + private boolean isEditing = false; + + public static CellStringQuickEditor getInstance() { + if (THIS == null) { + THIS = new CellStringQuickEditor(); + } + return THIS; + } + + //august:如果是原来编辑的是公式,要保留公式里的这些属性,不然在公式和字符串转化时,就会丢失这些属性设置。 + private boolean reserveInResult = false; + private boolean reserveOnWriteOrAnaly = true; + + private DocumentListener documentListener = new DocumentListener() { + @Override + public void insertUpdate(DocumentEvent e) { + changeReportPaneCell(stringTextField.getText().trim()); + } + + @Override + public void removeUpdate(DocumentEvent e) { + changeReportPaneCell(stringTextField.getText().trim()); + } + + @Override + public void changedUpdate(DocumentEvent e) { + changeReportPaneCell(stringTextField.getText().trim()); + } + + }; + + private CellStringQuickEditor() { + super(); + } + + /** + * 详细信息面板 + * todo 文本框可自适应大小,公式编辑也是在这边,如果是公式那么要加一个公式编辑器的触发按钮 + */ + @Override + public JComponent createCenterBody() { + stringTextField = new UITextField(); + stringTextField.addKeyListener(new KeyAdapter() { + @Override + public void keyReleased(KeyEvent e) { + if (tc != null) { + tc.getGrid().dispatchEvent(e); + } + } + }); + return stringTextField; + } + + + private void changeReportPaneCell(String tmpText) { + isEditing = true; + //refresh一下,如果单元格内有新添加的控件,此时并不知道 + CellSelection cs1 = (CellSelection) tc.getSelection(); + ColumnRow columnRow = ColumnRow.valueOf(cs1.getColumn(), cs1.getRow()); + columnRowTextField.setText(columnRow.toString()); + cellElement = tc.getEditingElementCase().getTemplateCellElement(cs1.getColumn(), cs1.getRow()); + + if (cellElement == null) { + CellSelection cs = (CellSelection) tc.getSelection(); + cellElement = new DefaultTemplateCellElement(cs.getColumn(), cs.getRow()); + tc.getEditingElementCase().addCellElement(cellElement, false); + } + if (tmpText != null && (tmpText.length() > 0 && tmpText.charAt(0) == '=')) { + Formula textFormula = new Formula(tmpText); + textFormula.setReserveInResult(reserveInResult); + textFormula.setReserveOnWriteOrAnaly(reserveOnWriteOrAnaly); + cellElement.setValue(textFormula); + } else { + Style style = cellElement.getStyle(); + if (style != null && style.getFormat() != null && style.getFormat() == TextFormat.getInstance()) { + cellElement.setValue(tmpText); + } else { + cellElement.setValue(ReportHelper.convertGeneralStringAccordingToExcel(tmpText)); + } + } + fireTargetModified(); + stringTextField.requestFocus(); + isEditing = false; + } + + /** + * 刷新详细内容 + */ + @Override + protected void refreshDetails() { + String str; + if (cellElement == null) { + str = StringUtils.EMPTY; + } else { + Object value = cellElement.getValue(); + if (value == null) { + str = StringUtils.EMPTY; + } else if (value instanceof Formula) { + Formula formula = (Formula) value; + str = formula.getContent(); + reserveInResult = formula.isReserveInResult(); + reserveOnWriteOrAnaly = formula.isReserveOnWriteOrAnaly(); + } else { + str = value.toString(); + } + } + showText(str); + stringTextField.setEditable(tc.isSelectedOneCell()); + } + + /** + * 显示文本 + * + * @param str 文本 + */ + public void showText(String str) { + // 正在编辑时不处理 + if (isEditing) { + return; + } + stringTextField.getDocument().removeDocumentListener(documentListener); + stringTextField.setText(str); + stringTextField.getDocument().addDocumentListener(documentListener); + } + } \ No newline at end of file diff --git a/designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java index db26bdb38..de755f1df 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java @@ -1,42 +1,45 @@ -package com.fr.quickeditor.cellquick; - -import javax.swing.BorderFactory; -import javax.swing.JComponent; - -import com.fr.design.actions.insert.cell.SubReportCellAction; -import com.fr.design.gui.ibutton.UIButton; -import com.fr.general.Inter; -import com.fr.quickeditor.CellQuickEditor; - -public class CellSubReportEditor extends CellQuickEditor { - private UIButton subReportButton; - private static CellSubReportEditor THIS; - - public static final CellSubReportEditor getInstance() { - if(THIS == null) { - THIS = new CellSubReportEditor(); - } - return THIS; - } - - private CellSubReportEditor() { - super(); - } - - @Override - public JComponent createCenterBody() { - subReportButton = new UIButton(); - subReportButton.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0)); - subReportButton.setMargin(null); - subReportButton.setOpaque(false); - return subReportButton; - } - - @Override - protected void refreshDetails() { - SubReportCellAction subReportCellAction = new SubReportCellAction(tc); - subReportCellAction.setName(Inter.getLocText(new String[]{"Edit", "Sub_Report"})); - subReportButton.setAction(subReportCellAction); - } - +package com.fr.quickeditor.cellquick; + +import com.fr.design.actions.insert.cell.SubReportCellAction; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.general.Inter; +import com.fr.quickeditor.CellQuickEditor; + +import javax.swing.*; + +/** + * 单元格元素子报表编辑器 + * TODO 9.0大体上没有改动 + */ +public class CellSubReportEditor extends CellQuickEditor { + private UIButton subReportButton; + private static CellSubReportEditor THIS; + + public static final CellSubReportEditor getInstance() { + if (THIS == null) { + THIS = new CellSubReportEditor(); + } + return THIS; + } + + private CellSubReportEditor() { + super(); + } + + @Override + public JComponent createCenterBody() { + subReportButton = new UIButton(); + subReportButton.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0)); + subReportButton.setMargin(null); + subReportButton.setOpaque(false); + return subReportButton; + } + + @Override + protected void refreshDetails() { + SubReportCellAction subReportCellAction = new SubReportCellAction(tc); + subReportCellAction.setName(Inter.getLocText(new String[]{"Edit", "Sub_Report"})); + subReportButton.setAction(subReportCellAction); + } + } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/data/datapane/VerticalChoosePane.java b/designer_base/src/com/fr/design/data/datapane/VerticalChoosePane.java index f20c58c8d..bac6b2672 100644 --- a/designer_base/src/com/fr/design/data/datapane/VerticalChoosePane.java +++ b/designer_base/src/com/fr/design/data/datapane/VerticalChoosePane.java @@ -1,69 +1,67 @@ package com.fr.design.data.datapane; -import java.awt.*; - -import com.fr.design.gui.ilable.UILabel; -import javax.swing.JPanel; - import com.fr.design.constants.LayoutConstants; import com.fr.design.data.datapane.preview.PreviewLabel; import com.fr.design.data.datapane.preview.PreviewLabel.Previewable; +import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.DesignerBean; import com.fr.design.mainframe.DesignerContext; -import com.fr.general.Inter; import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.Inter; + +import javax.swing.*; +import java.awt.*; -public class VerticalChoosePane extends ChoosePane implements DesignerBean{ +public class VerticalChoosePane extends ChoosePane implements DesignerBean { - public VerticalChoosePane(Previewable previewable) { - this(previewable, -1); - } + public VerticalChoosePane(Previewable previewable) { + this(previewable, -1); + } - public VerticalChoosePane(Previewable previewable, int labelSize) { - super(previewable, labelSize); - DesignerContext.setDesignerBean("databasename", this); - } + public VerticalChoosePane(Previewable previewable, int labelSize) { + super(previewable, labelSize); + DesignerContext.setDesignerBean("databasename", this); + } - @Override - protected void initComponentsLayout(PreviewLabel previewLabel, int labelSize) { - double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - double[] columnSize = { p, f }; - double[] rowSize = { p, p, p }; + @Override + protected void initComponentsLayout(PreviewLabel previewLabel, int labelSize) { + double p = TableLayout.PREFERRED; + double f = TableLayout.FILL; + double[] columnSize = {p, f}; + double[] rowSize = {p, p, p}; JPanel rs = new JPanel(new BorderLayout(0, 0)); rs.add(tableNameComboBox, BorderLayout.CENTER); rs.add(GUICoreUtils.createFlowPane(new Component[]{new RefreshLabel(this), previewLabel}, FlowLayout.LEFT, LayoutConstants.HGAP_LARGE), BorderLayout.EAST); - UILabel l1 = new UILabel(Inter.getLocText("Database") + ":", UILabel.RIGHT); - UILabel l2 = new UILabel(Inter.getLocText("Model") + ":", UILabel.RIGHT); - UILabel l3 = new UILabel(Inter.getLocText(new String[]{"Database", "Table"}) + ":", UILabel.RIGHT); - + UILabel l1 = new UILabel(Inter.getLocText("FR-Designer_Database"), UILabel.LEFT); + UILabel l2 = new UILabel(Inter.getLocText("FR-Designer_Model"), UILabel.LEFT); + UILabel l3 = new UILabel(Inter.getLocText(new String[]{"FR-Designer_Database", "FR-Designer_Table"}), UILabel.LEFT); + if (labelSize > 0) { - Dimension pSize = new Dimension(labelSize, 20); - l1.setPreferredSize(pSize); - l2.setPreferredSize(pSize); - l3.setPreferredSize(pSize); + Dimension pSize = new Dimension(labelSize, 20); + l1.setPreferredSize(pSize); + l2.setPreferredSize(pSize); + l3.setPreferredSize(pSize); } - + Component[][] components = new Component[][]{ new Component[]{l1, dsNameComboBox}, new Component[]{l2, schemaBox}, new Component[]{l3, rs} }; - JPanel content = TableLayoutHelper.createTableLayoutPane(components,rowSize,columnSize); + JPanel content = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); this.setLayout(new BorderLayout()); - this.add(content,BorderLayout.CENTER); - } - + this.add(content, BorderLayout.CENTER); + } - @Override - public void refreshBeanElement() { - initDsNameComboBox(); - } + @Override + public void refreshBeanElement() { + initDsNameComboBox(); + } } \ 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 new file mode 100644 index 000000000..82854dd89 --- /dev/null +++ b/designer_base/src/com/fr/design/editor/DoubleDeckValueEditorPane.java @@ -0,0 +1,418 @@ +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.ibutton.UIButtonGroup; +import com.fr.design.gui.imenu.UIMenuItem; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.ComparatorUtils; +import com.fr.general.Inter; +import com.fr.stable.StringUtils; + +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; + +/** + * Created by MoMeak on 2017/7/26. + */ + +public class DoubleDeckValueEditorPane extends BasicPane implements UIObserver, GlobalNameObserver { + + private static final int CENTERPANE_WIDTH = 200; + private Editor[] cards; + + private Editor currentEditor; + + private UIButton arrowButton; + private JPopupMenu menu; + private JPanel centerPane; + private CardLayout cardLayout; + private Object value; + private UIButtonGroup upButton; + private GlobalNameListener globalNameListener = null; + private UIObserverListener uiObserverListener = null; + + public DoubleDeckValueEditorPane(Editor[] cards) { + this(cards, null, null); + } + + public DoubleDeckValueEditorPane(Editor[] cards, String popupName, String textEditorValue) { + initComponents(cards, popupName, textEditorValue, CENTERPANE_WIDTH); + } + + public DoubleDeckValueEditorPane(Editor[] cards, String popupName, String textEditorValue, int centerPaneWidth) { + initComponents(cards, popupName, textEditorValue, centerPaneWidth); + } + + public static void main(String[] args) { + JFrame jf = new JFrame("test"); + jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + JPanel content = (JPanel) jf.getContentPane(); + content.setLayout(new BorderLayout()); + content.add(new DoubleDeckValueEditorPane(new Editor[]{new ColumnNameEditor(), new ColumnIndexEditor(), new FormulaEditor(Inter.getLocText("FR-Designer_Parameter-Formula"))}), BorderLayout.NORTH); + GUICoreUtils.centerWindow(jf); + jf.setSize(290, 400); + jf.setVisible(true); + } + + + private void initComponents(final Editor[] cards, String popupName, String textEditorValue, int centerPaneWidth) { + this.setLayout(new BorderLayout(0, 4)); + this.cards = cards; + + final String[] nameArray = new String[cards.length]; + for (int i = 0; i < cards.length; i++) { + nameArray[i] = cards[i].getName(); + } + upButton = new UIButtonGroup(nameArray); + upButton.setAllToolTips(nameArray); + this.add(upButton, BorderLayout.NORTH); + + + centerPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + + setCurrentEditor(0); + + centerPane.setPreferredSize(new Dimension(centerPaneWidth, centerPane.getPreferredSize().height)); + menu = createPopMenu(); + upButton.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + if (globalNameListener != null) { + globalNameListener.setGlobalName(Inter.getLocText("CellWrite-InsertRow_Policy")); + } + Object oldValue = currentEditor.getValue(); + setCurrentEditor(upButton.getSelectedIndex()); + currentEditor.selected(); + value = currentEditor.getValue(); + if (uiObserverListener != null) { + uiObserverListener.doChange(); + } + + DoubleDeckValueEditorPane.this.firePropertyChange("value", oldValue, value); + } + }); + this.add(centerPane, BorderLayout.CENTER); + + } + + @Override + protected String title4PopupWindow() { + return Inter.getLocText("FR-Designer_Values-Editor"); + } + + public Editor getCurrentEditor() { + return currentEditor; + } + + public int getCurrentEditorIndex() { + for (int i = 0; i < cards.length; i++) { + if (cards[i].getClass() == currentEditor.getClass()) { + return i; + } + } + return 0; + } + + public void setCurrentEditor(int i) { + currentEditor = this.cards[i]; + centerPane.removeAll(); + centerPane.add(currentEditor); + centerPane.validate(); + centerPane.repaint(); + } + + public void setCurrentEditor(Class editorClass) { + for (int i = 0; i < cards.length; i++) { + if (cards[i].getClass() == editorClass) { + setCurrentEditor(i); + break; + } + } + } + + + private JPopupMenu createPopMenu() { + JPopupMenu scate = new JPopupMenu(); + + if (this.cards == null) { + return scate; + } + + for (int i = 0; i < this.cards.length; i++) { + UIMenuItem item = new UIMenuItem(cards[i].getName()); + final int j = i; + item.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + if (globalNameListener != null) { + globalNameListener.setGlobalName(Inter.getLocText("CellWrite-InsertRow_Policy")); + } + Object oldValue = currentEditor.getValue(); + setCurrentEditor(j); + currentEditor.selected(); + value = currentEditor.getValue(); + if (uiObserverListener != null) { + uiObserverListener.doChange(); + } + + DoubleDeckValueEditorPane.this.firePropertyChange("value", oldValue, value); + } + }); + scate.add(item); + if (i < cards.length - 1) { + scate.addSeparator(); + } + } + return scate; + } + + public void populate(Object object) { + for (int i = 0; i < cards.length; i++) { + if (cards[i].accept(object)) { + setCardValue(i, object); + + break; + } + } + } + + public void populate(Object object, String name) { + for (int i = 0; i < cards.length; i++) { + if (cards[i].accept(object) && ComparatorUtils.equals(cards[i].getName(), name)) { + setCardValue(i, object); + break; + } + } + } + + private void setCardValue(int i, Object object) { + setCurrentEditor(i); + cards[i].setValue(object); + // kunsnat: bug7861 所有的Editor值都要跟随改变, 因为populate的editor 从"" + // 一定是最后的Editor哦. + for (int j = 0; j < cards.length; j++) { + if (i == j) { + upButton.setSelectedIndex(i); + continue; + } + this.cards[j].setValue(null); + } + } + + public Object update() { + 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()); +// } + + return columnIndex; + } + + public Object update(String makeAdiff) { + String name = currentEditor.getName(); + Object columnIndex = currentEditor.getValue(); + Object columnName = StringUtils.EMPTY; + + if (ComparatorUtils.equals(name, Inter.getLocText("FR-Designer_Formula"))) { + columnIndex = new Formula(columnIndex == null ? "" : columnIndex.toString()); + } + + if (currentEditor instanceof ColumnNameEditor) { + columnName = ((ColumnNameEditor) currentEditor).getColumnName(); + } + + return new Object[]{columnIndex, columnName}; + } + + public Object update(boolean isXMLA) { + String name = currentEditor.getName(); + Object columnIndex = currentEditor.getValue(); + Object columnName = StringUtils.EMPTY; + + if (ComparatorUtils.equals(name, Inter.getLocText("FR-Designer_Formula"))) { + columnIndex = new Formula(columnIndex == null ? "" : columnIndex.toString()); + } + + if (isXMLA) { + columnName = ((XMLANameEditor) currentEditor).getColumnName(); + } + + return new Object[]{columnIndex, columnName}; + } + + public void setEditors(Editor[] editors, Object obj) { + this.cards = editors; + this.populate(obj); + } + + /** + * 检查是否有效 + * + * @throws Exception 异常 + */ + public void checkValid() throws Exception { + if (!(currentEditor instanceof TextEditor)) { + return; + } + + int i; + boolean containFormulaType = false; + for (i = 0; i < cards.length; i++) { + if (ComparatorUtils.equals(cards[i].getName(), Inter.getLocText("FR-Engine_Parameter-Formula"))) { + containFormulaType = true; + break; + } + } + if (!containFormulaType) { + return; + } + + final int j = i; + + if (!(currentEditor instanceof TextEditor)) { + return; + } + String string = (String) currentEditor.getValue(); + if (isFormula(string)) { + DesignerEnvManager designerEnvManager = DesignerEnvManager.getEnvManager(); + if (designerEnvManager.isSupportStringToFormula()) { + if (!designerEnvManager.isDefaultStringToFormula()) { + int returnValue = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("FR-Designer_Edit_String_To_Formula") + + "?", Inter.getLocText("FR-Designer_Tooltips"), JOptionPane.YES_NO_OPTION); + if (returnValue == JOptionPane.OK_OPTION) { + + setCurrentEditor(j); + Formula formula = new Formula(string); + currentEditor.setValue(formula); + } + } else { + setCurrentEditor(j); + Formula formula = new Formula(string); + currentEditor.setValue(formula); + } + } + } + + } + + private boolean isFormula(String string) { + return StringUtils.isNotBlank(string) && (string.length() > 0 && string.charAt(0) == '='); + } + + @Override + public void setEnabled(boolean enabled) { + arrowButton.setEnabled(enabled); + for (Editor card : cards) { + card.setEnabled(enabled); + } + } + + /** + * 重置组件 + */ + public void resetComponets() { + for (Editor card : cards) { + card.reset(); + } + } + + /** + * 清除组件数据 + */ + public void clearComponentsData() { + for (Editor card : cards) { + card.clearData(); + } + } + + public Editor[] getCards() { + return this.cards; + } + + public JPopupMenu getMenu() { + return this.menu; + } + + + /** + * 注册全局名字监听事件 + * + * @param listener 观察者监听事件 + */ + public void registerNameListener(GlobalNameListener listener) { + globalNameListener = listener; + } + + /** + * 是否对名字listener监听器做出响应 + * + * @return 如果要做出响应,则返回true + */ + public boolean shouldResponseNameListener() { + return false; + } + + public void setGlobalName(String name) { + for (Editor card : cards) { + setComponentGlobalName(card, name); + } + } + + private void setComponentGlobalName(Container card, String name) { + for (int i = 0, len = card.getComponentCount(); i < len; i++) { + Component component = card.getComponent(i); + if (component instanceof GlobalNameObserver) { + ((GlobalNameObserver) component).setGlobalName(name); + } else { + setComponentGlobalName((Container) component, name); + } + } + } + + /** + * 给组件登记一个观察者监听事件 + * + * @param listener 观察者监听事件 + */ + public void registerChangeListener(UIObserverListener listener) { + uiObserverListener = listener; + for (Editor card : cards) { + doLoop(card, listener); + } + } + + private void doLoop(Container card, UIObserverListener listener) { + for (int i = 0, len = card.getComponentCount(); i < len; i++) { + Component component = card.getComponent(i); + if (component instanceof UIObserver) { + ((UIObserver) component).registerChangeListener(listener); + } else { + doLoop((Container) component, listener); + } + } + } + + /** + * 组件是否需要响应添加的观察者事件 + * + * @return 如果需要响应观察者事件则返回true,否则返回false + */ + public boolean shouldResponseChangeListener() { + return true; + } +} \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index f05f8cb26..0cb4ae2ef 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -2069,3 +2069,26 @@ FR-Designer_StyleAlignment_Wrap_Text=Wrap_Text FR-Designer_StyleAlignment_Single_Line=Single_Line FR-Designer_StyleAlignment_Single_Line(Adjust_Font)=Single_Line(Adjust_Font) FR-Designer_StyleAlignment_Multi_Line(Adjust_Font)=Multi_Line(Adjust_Font) +FR-Designer_Auto_Adjust_Height=Auto_Adjust_Height +FR-Designer_Auto_Adjust_Wdith=Auto_Adjust_Wdith +FR-Designer_Type_Set=Type_Set +FR-Designer_Dic_Data_Query=Data_Query +FR-Designer_Dictionary_Dynamic_SQL=Dictionary_Dynamic_SQL +FR-Designer_Datasource_From_Database=Datasource_From_Database +FR-Designer_CellWrite_InsertRow_NULL=InsertRow_NULL +FR-Designer_CellWrite_InsertRow_COPY=InsertRow_COPY +FR-Designer_CellWrite_InsertRow_Policy=InsertRow_Policy +FR-Designer_CellWrite_Page_Before_Row=Page_Before_Row +FR-Designer_CellWrite_Page_After_Row=Page_After_Row +FR-Designer_CellWrite_Page_Before_Column=Page_Before_Column +FR-Designer_CellWrite_Page_After_Column=Page_After_Column +FR-Designer_CellPage_Can_Break_On_Paginate=Can_Break_On_Paginate +FR-Designer_CellPage_Repeat_Content_When_Paging=Repeat_Content_When_Paging +FR-Designer_CellWrite_Preview_Cell_Content=Preview_Cell_Content +FR-Designer_CellWrite_Print_Content=CellWrite_Print_Content +FR-Designer_CellWrite_Print_Background=CellWrite_Print_Background +FR-Designer_CellWrite_Show_As_Image=CellWrite_Show_As_Image +FR-Designer_CellWrite_Show_As_HTML=CellWrite_Show_As_HTML +FR-Designer_Datasource_Other_Attributes=Other_Attributes +FR-Designer_Not_use_a_cell_attribute_table_editing=Not_use_a_cell_attribute_table_editing +FR-Designer_CellElement_Property_Table=CellElement_Property_Table 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 89a65bcd7..c794b6466 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 @@ -2070,3 +2070,26 @@ FR-Designer_StyleAlignment_Wrap_Text=Wrap_Text FR-Designer_StyleAlignment_Single_Line=Single_Line FR-Designer_StyleAlignment_Single_Line(Adjust_Font)=Single_Line(Adjust_Font) FR-Designer_StyleAlignment_Multi_Line(Adjust_Font)=Multi_Line(Adjust_Font) +FR-Designer_Auto_Adjust_Height=Auto_Adjust_Height +FR-Designer_Auto_Adjust_Wdith=Auto_Adjust_Wdith +FR-Designer_Type_Set=Type_Set +FR-Designer_Dic_Data_Query=Data_Query +FR-Designer_Dictionary_Dynamic_SQL=Dictionary_Dynamic_SQL +FR-Designer_Datasource_From_Database=Datasource_From_Database +FR-Designer_CellWrite_InsertRow_NULL=InsertRow_NULL +FR-Designer_CellWrite_InsertRow_COPY=InsertRow_COPY +FR-Designer_CellWrite_InsertRow_Policy=InsertRow_Policy +FR-Designer_CellWrite_Page_Before_Row=Page_Before_Row +FR-Designer_CellWrite_Page_After_Row=Page_After_Row +FR-Designer_CellWrite_Page_Before_Column=Page_Before_Column +FR-Designer_CellWrite_Page_After_Column=Page_After_Column +FR-Designer_CellPage_Can_Break_On_Paginate=Can_Break_On_Paginate +FR-Designer_CellPage_Repeat_Content_When_Paging=Repeat_Content_When_Paging +FR-Designer_CellWrite_Preview_Cell_Content=Preview_Cell_Content +FR-Designer_CellWrite_Print_Content=CellWrite_Print_Content +FR-Designer_CellWrite_Print_Background=CellWrite_Print_Background +FR-Designer_CellWrite_Show_As_Image=CellWrite_Show_As_Image +FR-Designer_CellWrite_Show_As_HTML=CellWrite_Show_As_HTML +FR-Designer_Datasource_Other_Attributes=Other_Attributes +FR-Designer_Not_use_a_cell_attribute_table_editing=Not_use_a_cell_attribute_table_editing +FR-Designer_CellElement_Property_Table=CellElement_Property_Table 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 ee89cad2e..6b8dccb0b 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 @@ -2052,3 +2052,26 @@ FR-Designer_StyleAlignment_Wrap_Text= FR-Designer_StyleAlignment_Single_Line= FR-Designer_StyleAlignment_Single_Line(Adjust_Font)= FR-Designer_StyleAlignment_Multi_Line(Adjust_Font)= +FR-Designer_Auto_Adjust_Height= +FR-Designer_Auto_Adjust_Wdith= +FR-Designer_Type_Set= +FR-Designer_Dic_Data_Query= +FR-Designer_Dictionary_Dynamic_SQL= +FR-Designer_Datasource_From_Database= +FR-Designer_CellWrite_InsertRow_NULL= +FR-Designer_CellWrite_InsertRow_COPY= +FR-Designer_CellWrite_InsertRow_Policy= +FR-Designer_CellWrite_Page_Before_Row= +FR-Designer_CellWrite_Page_After_Row= +FR-Designer_CellWrite_Page_Before_Column= +FR-Designer_CellWrite_Page_After_Column= +FR-Designer_CellPage_Can_Break_On_Paginate= +FR-Designer_CellPage_Repeat_Content_When_Paging= +FR-Designer_CellWrite_Preview_Cell_Content= +FR-Designer_CellWrite_Print_Content= +FR-Designer_CellWrite_Print_Background= +FR-Designer_CellWrite_Show_As_Image= +FR-Designer_CellWrite_Show_As_HTML= +FR-Designer_Datasource_Other_Attributes= +FR-Designer_Not_use_a_cell_attribute_table_editing= +FR-Designer_CellElement_Property_Table= 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 a44c3a287..c3b44998d 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 @@ -2050,3 +2050,26 @@ FR-Designer_StyleAlignment_Wrap_Text= FR-Designer_StyleAlignment_Single_Line= FR-Designer_StyleAlignment_Single_Line(Adjust_Font)= FR-Designer_StyleAlignment_Multi_Line(Adjust_Font)= +FR-Designer_Auto_Adjust_Height= +FR-Designer_Auto_Adjust_Wdith= +FR-Designer_Type_Set= +FR-Designer_Dic_Data_Query= +FR-Designer_Dictionary_Dynamic_SQL= +FR-Designer_Datasource_From_Database= +FR-Designer_CellWrite_InsertRow_NULL= +FR-Designer_CellWrite_InsertRow_COPY= +FR-Designer_CellWrite_InsertRow_Policy= +FR-Designer_CellWrite_Page_Before_Row= +FR-Designer_CellWrite_Page_After_Row= +FR-Designer_CellWrite_Page_Before_Column= +FR-Designer_CellWrite_Page_After_Column= +FR-Designer_CellPage_Can_Break_On_Paginate= +FR-Designer_CellPage_Repeat_Content_When_Paging= +FR-Designer_CellWrite_Preview_Cell_Content= +FR-Designer_CellWrite_Print_Content= +FR-Designer_CellWrite_Print_Background= +FR-Designer_CellWrite_Show_As_Image= +FR-Designer_CellWrite_Show_As_HTML= +FR-Designer_Datasource_Other_Attributes= +FR-Designer_Not_use_a_cell_attribute_table_editing= +FR-Designer_CellElement_Property_Table= 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 ce4628464..7f4fc313c 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 @@ -2069,3 +2069,26 @@ FR-Designer_StyleAlignment_Wrap_Text=\u81EA\u52A8\u6362\u884C FR-Designer_StyleAlignment_Single_Line=\u5355\u884C\u663E\u793A FR-Designer_StyleAlignment_Single_Line(Adjust_Font)=\u5355\u884C\u663E\u793A(\u8C03\u6574\u5B57\u4F53) FR-Designer_StyleAlignment_Multi_Line(Adjust_Font)=\u591A\u884C\u663E\u793A(\u8C03\u6574\u5B57\u4F53) +FR-Designer_Auto_Adjust_Height=\u81EA\u52A8\u8C03\u6574\u884C\u9AD8 +FR-Designer_Auto_Adjust_Wdith=\u81EA\u52A8\u8C03\u6574\u5217\u5BBD +FR-Designer_Type_Set=\u7C7B\u578B\u8BBE\u7F6E +FR-Designer_Dic_Data_Query=\u6570\u636E\u67E5\u8BE2 +FR-Designer_Dictionary_Dynamic_SQL=\u52A8\u6001SQL +FR-Designer_Datasource_From_Database=\u6570\u636E\u5E93\u8868 +FR-Designer_CellWrite_InsertRow_NULL=\u7A7A\u503C +FR-Designer_CellWrite_InsertRow_COPY=\u539F\u503C +FR-Designer_CellWrite_InsertRow_Policy=\u63D2\u5165\u884C\u7B56\u7565 +FR-Designer_CellWrite_Page_Before_Row=\u884C\u524D\u5206\u9875 +FR-Designer_CellWrite_Page_After_Row=\u884C\u540E\u5206\u9875 +FR-Designer_CellWrite_Page_Before_Column=\u5217\u524D\u5206\u9875 +FR-Designer_CellWrite_Page_After_Column=\u5217\u540E\u5206\u9875 +FR-Designer_CellPage_Can_Break_On_Paginate=\u5206\u9875\u65F6\u53EF\u4EE5\u65AD\u5F00 +FR-Designer_CellPage_Repeat_Content_When_Paging=\u5206\u9875\u65AD\u5F00\u65F6\u503C\u91CD\u590D\u663E\u793A +FR-Designer_CellWrite_Preview_Cell_Content=\u9884\u89C8\u5355\u5143\u683C\u5185\u5BB9 +FR-Designer_CellWrite_Print_Content=\u6253\u5370/\u5BFC\u51FA\u5355\u5143\u683C\u5185\u5BB9 +FR-Designer_CellWrite_Print_Background=\u6253\u5370/\u5BFC\u51FA\u5355\u5143\u683C\u80CC\u666F +FR-Designer_CellWrite_Show_As_Image=\u7528\u56FE\u7247\u663E\u793A\u5185\u5BB9 +FR-Designer_CellWrite_Show_As_HTML=\u7528HTML\u663E\u793A\u5185\u5BB9 +FR-Designer_Datasource_Other_Attributes=\u5176\u4ED6\u5C5E\u6027 +FR-Designer_Not_use_a_cell_attribute_table_editing=\u60A8\u4E0D\u53EF\u4EE5\u7528\u5355\u5143\u683C\u5C5E\u6027\u8868\u7F16\u8F91 +FR-Designer_CellElement_Property_Table=\u5355\u5143\u683C\u5C5E\u6027\u8868 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 a5aa91192..9eb688192 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 @@ -2069,3 +2069,26 @@ FR-Designer_StyleAlignment_Wrap_Text= FR-Designer_StyleAlignment_Single_Line= FR-Designer_StyleAlignment_Single_Line(Adjust_Font)= FR-Designer_StyleAlignment_Multi_Line(Adjust_Font)= +FR-Designer_Auto_Adjust_Height= +FR-Designer_Auto_Adjust_Wdith= +FR-Designer_Type_Set= +FR-Designer_Dic_Data_Query= +FR-Designer_Dictionary_Dynamic_SQL= +FR-Designer_Datasource_From_Database= +FR-Designer_CellWrite_InsertRow_NULL= +FR-Designer_CellWrite_InsertRow_COPY= +FR-Designer_CellWrite_InsertRow_Policy= +FR-Designer_CellWrite_Page_Before_Row= +FR-Designer_CellWrite_Page_After_Row= +FR-Designer_CellWrite_Page_Before_Column= +FR-Designer_CellWrite_Page_After_Column= +FR-Designer_CellPage_Can_Break_On_Paginate= +FR-Designer_CellPage_Repeat_Content_When_Paging= +FR-Designer_CellWrite_Preview_Cell_Content= +FR-Designer_CellWrite_Print_Content= +FR-Designer_CellWrite_Print_Background= +FR-Designer_CellWrite_Show_As_Image= +FR-Designer_CellWrite_Show_As_HTML= +FR-Designer_Datasource_Other_Attributes= +FR-Designer_Not_use_a_cell_attribute_table_editing= +FR-Designer_CellElement_Property_Table= diff --git a/designer_base/src/com/fr/design/mainframe/JFormSliderPane.java b/designer_base/src/com/fr/design/mainframe/JFormSliderPane.java index d34de50bc..6088ac01e 100644 --- a/designer_base/src/com/fr/design/mainframe/JFormSliderPane.java +++ b/designer_base/src/com/fr/design/mainframe/JFormSliderPane.java @@ -41,7 +41,7 @@ public class JFormSliderPane extends JPanel { private static final int THREE_HUNDRED = 300; private static final int FOUR_HUNDRED = 400; private static final int DIALOG_WIDTH = 150; - private static final int DIALOG_HEIGHT = 240; + private static final int DIALOG_HEIGHT = 220; private static final int SHOWVALBUTTON_WIDTH = 70; private static final int SHOWVALBUTTON_HEIGHTH = 25; public int showValue = 100; diff --git a/designer_base/src/com/fr/design/present/dict/DatabaseDictPane.java b/designer_base/src/com/fr/design/present/dict/DatabaseDictPane.java index 0f474a5fa..d28d6a3bd 100644 --- a/designer_base/src/com/fr/design/present/dict/DatabaseDictPane.java +++ b/designer_base/src/com/fr/design/present/dict/DatabaseDictPane.java @@ -1,48 +1,45 @@ package com.fr.design.present.dict; -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.ItemSelectable; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; - -import javax.swing.JPanel; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; - import com.fr.base.Formula; import com.fr.base.TableData; -import com.fr.design.data.DesignTableDataManager; import com.fr.data.core.db.DBUtils; +import com.fr.data.impl.DatabaseDictionary; +import com.fr.data.impl.NameDatabaseConnection; +import com.fr.design.beans.FurtherBasicBeanPane; +import com.fr.design.constants.LayoutConstants; +import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.datapane.ChoosePane; import com.fr.design.data.datapane.DataBaseItems; import com.fr.design.data.datapane.VerticalChoosePane; import com.fr.design.data.datapane.preview.PreviewLabel.Previewable; -import com.fr.data.impl.DatabaseDictionary; -import com.fr.data.impl.NameDatabaseConnection; -import com.fr.design.beans.FurtherBasicBeanPane; +import com.fr.design.editor.DoubleDeckValueEditorPane; +import com.fr.design.editor.editor.ColumnIndexEditor; +import com.fr.design.editor.editor.ColumnNameEditor; +import com.fr.design.editor.editor.Editor; +import com.fr.design.editor.editor.FormulaEditor; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; -import com.fr.design.editor.ValueEditorPane; -import com.fr.design.editor.ValueEditorPaneFactory; -import com.fr.design.editor.editor.ColumnIndexEditor; -import com.fr.design.editor.editor.ColumnNameEditor; -import com.fr.design.editor.editor.Editor; -import com.fr.design.editor.editor.FormulaEditor; import com.fr.general.Inter; import com.fr.stable.StringUtils; +import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import java.awt.*; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; + public class DatabaseDictPane extends FurtherBasicBeanPane implements Previewable, UIObserver { /** * richer:数据字典和数据链面板 */ protected com.fr.data.impl.Connection database; - protected ValueEditorPane keyColumnPane; - protected ValueEditorPane valueDictPane; + protected DoubleDeckValueEditorPane keyColumnPane; + protected DoubleDeckValueEditorPane valueDictPane; protected ChoosePane chooseTable; private UIObserverListener uiObserverListener; @@ -61,10 +58,12 @@ public class DatabaseDictPane extends FurtherBasicBeanPane i private void initBasicComponet() { - keyColumnPane = ValueEditorPaneFactory.createValueEditorPane(new Editor[]{new ColumnNameEditor(), new ColumnIndexEditor()}); - FormulaEditor formulaEditor = new FormulaEditor(Inter.getLocText("Parameter-Formula")); +// keyColumnPane = ValueEditorPaneFactory.createValueEditorPane(new Editor[]{new ColumnNameEditor(), new ColumnIndexEditor()}); + keyColumnPane = new DoubleDeckValueEditorPane(new Editor[]{new ColumnNameEditor(), new ColumnIndexEditor()}); + FormulaEditor formulaEditor = new FormulaEditor(Inter.getLocText("FR-Engine_Parameter-Formula")); formulaEditor.setEnabled(true); - valueDictPane = ValueEditorPaneFactory.createValueEditorPane(new Editor[]{new ColumnNameEditor(), new ColumnIndexEditor(), formulaEditor}); +// valueDictPane = ValueEditorPaneFactory.createValueEditorPane(new Editor[]{new ColumnNameEditor(), new ColumnIndexEditor(), formulaEditor}); + valueDictPane = new DoubleDeckValueEditorPane(new Editor[]{new ColumnNameEditor(), new ColumnIndexEditor(), formulaEditor}); } private void initComponet() { @@ -72,13 +71,15 @@ public class DatabaseDictPane extends FurtherBasicBeanPane i double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] columnSize = {p, f}; - double[] rowSize = {p, p}; + double[] rowSize = {p, p, p, p, p}; + int[][] rowCount = {{1, 1}, {1, 3}, {1, 3}}; Component[][] components = new Component[][]{ - new Component[]{new UILabel(" " + Inter.getLocText("Actual_Value") + ":"), keyColumnPane}, - new Component[]{new UILabel(" " + Inter.getLocText("Display_Value") + ":"), valueDictPane} + new Component[]{null, null}, + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Actual_Value") + " ", UILabel.LEFT), keyColumnPane}, + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Display_Value") + " ", UILabel.LEFT), valueDictPane} }; - JPanel dbDictPanel = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); + JPanel dbDictPanel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM); this.setLayout(new BorderLayout(0, 4)); this.add(chooseTable, BorderLayout.NORTH); this.add(dbDictPanel, BorderLayout.CENTER); @@ -114,7 +115,7 @@ public class DatabaseDictPane extends FurtherBasicBeanPane i * */ public String title4PopupWindow() { - return Inter.getLocText("Datasource-From_Database"); + return Inter.getLocText("FR-Designer_Datasource_From_Database"); } public void populateBean(DatabaseDictionary dbDict) { @@ -135,30 +136,30 @@ public class DatabaseDictPane extends FurtherBasicBeanPane i this.chooseTable.populateBean(new DataBaseItems(dbName, dbDict.getSchema(), dbDict.getTableName())); - if(this.database == null){ - return; + if (this.database == null) { + return; } - + // richer:这个也要+1才行 - if(StringUtils.isNotEmpty(dbDict.getKeyColumnName())){ - this.keyColumnPane.populate(dbDict.getKeyColumnName()); - }else{ - this.keyColumnPane.populate(dbDict.getKeyColumnIndex() + 1); - } - - - if(StringUtils.isNotEmpty(dbDict.getValueColumnName())){ - this.valueDictPane.populate(dbDict.getValueColumnName()); - }else{ - Object value = null; - if (dbDict.getFormula() != null) { - value = dbDict.getFormula(); - } else { - // alex:因为显示到界面上的index是以1为始的 - value = dbDict.getValueColumnIndex() + 1; - } - this.valueDictPane.populate(value); - } + if (StringUtils.isNotEmpty(dbDict.getKeyColumnName())) { + this.keyColumnPane.populate(dbDict.getKeyColumnName()); + } else { + this.keyColumnPane.populate(dbDict.getKeyColumnIndex() + 1); + } + + + if (StringUtils.isNotEmpty(dbDict.getValueColumnName())) { + this.valueDictPane.populate(dbDict.getValueColumnName()); + } else { + Object value = null; + if (dbDict.getFormula() != null) { + value = dbDict.getFormula(); + } else { + // alex:因为显示到界面上的index是以1为始的 + value = dbDict.getValueColumnIndex() + 1; + } + this.valueDictPane.populate(value); + } } public DatabaseDictionary updateBean() { @@ -177,27 +178,27 @@ public class DatabaseDictPane extends FurtherBasicBeanPane i dbDict.setSchema(para.getSchemaName()); dbDict.setTableName(para.getTableName()); // alex:因为显示到界面上的index是以1为始的,所以要减1 - if (this.keyColumnPane.update() != null && (Integer) this.keyColumnPane.update() - 1 >= 0) { - int keyColumnIndex = (Integer) this.keyColumnPane.update() - 1; - String keyColumnName = StringUtils.EMPTY; - if (this.keyColumnPane.getCurrentEditor() instanceof ColumnNameEditor) { - keyColumnName = ((ColumnNameEditor) this.keyColumnPane.getCurrentEditor()).getColumnName(); - keyColumnIndex = -1; - } - dbDict.setKeyColumnIndex(keyColumnIndex); - dbDict.setKeyColumnName(keyColumnName); - } + if (this.keyColumnPane.update() != null && (Integer) this.keyColumnPane.update() - 1 >= 0) { + int keyColumnIndex = (Integer) this.keyColumnPane.update() - 1; + String keyColumnName = StringUtils.EMPTY; + if (this.keyColumnPane.getCurrentEditor() instanceof ColumnNameEditor) { + keyColumnName = ((ColumnNameEditor) this.keyColumnPane.getCurrentEditor()).getColumnName(); + keyColumnIndex = -1; + } + dbDict.setKeyColumnIndex(keyColumnIndex); + dbDict.setKeyColumnName(keyColumnName); + } Object value = this.valueDictPane.update(); - if (value instanceof Integer) { - int valueColumnIndex = (Integer) this.valueDictPane.update() - 1; - String valueColumnName = StringUtils.EMPTY; - if (this.valueDictPane.getCurrentEditor() instanceof ColumnNameEditor) { - valueColumnName = ((ColumnNameEditor) this.valueDictPane.getCurrentEditor()).getColumnName(); - valueColumnIndex = -1; - } - dbDict.setValueColumnIndex(valueColumnIndex); - dbDict.setValueColumnName(valueColumnName); - } else { + if (value instanceof Integer) { + int valueColumnIndex = (Integer) this.valueDictPane.update() - 1; + String valueColumnName = StringUtils.EMPTY; + if (this.valueDictPane.getCurrentEditor() instanceof ColumnNameEditor) { + valueColumnName = ((ColumnNameEditor) this.valueDictPane.getCurrentEditor()).getColumnName(); + valueColumnIndex = -1; + } + dbDict.setValueColumnIndex(valueColumnIndex); + dbDict.setValueColumnName(valueColumnName); + } else { dbDict.setFormula(((Formula) value)); } @@ -217,7 +218,7 @@ public class DatabaseDictPane extends FurtherBasicBeanPane i String columnNameValue = columnNames.length > 0 ? columnNames[0] : StringUtils.EMPTY; keyColumnPane.setEditors(new Editor[]{columnNameEditor1, columnIndexEditor1}, columnNameValue); - FormulaEditor formulaEditor = new FormulaEditor(Inter.getLocText("Parameter-Formula")); + FormulaEditor formulaEditor = new FormulaEditor(Inter.getLocText("FR-Engine_Parameter-Formula")); formulaEditor.setEnabled(true); formulaEditor.addChangeListener(new ChangeListener() { diff --git a/designer_base/src/com/fr/design/present/dict/DictionaryPane.java b/designer_base/src/com/fr/design/present/dict/DictionaryPane.java index eb6670be9..91d0d8ea5 100644 --- a/designer_base/src/com/fr/design/present/dict/DictionaryPane.java +++ b/designer_base/src/com/fr/design/present/dict/DictionaryPane.java @@ -1,42 +1,50 @@ package com.fr.design.present.dict; -import java.awt.BorderLayout; -import java.util.ArrayList; -import java.util.List; - -import com.fr.design.data.DataCreatorUI; -import com.fr.design.gui.ilable.UILabel; - -import javax.swing.*; - import com.fr.data.Dictionary; import com.fr.data.impl.DynamicSQLDict; import com.fr.design.beans.FurtherBasicBeanPane; +import com.fr.design.data.DataCreatorUI; import com.fr.design.gui.frpane.UIComboBoxPane; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; import com.fr.general.Inter; +import javax.swing.*; +import java.awt.*; +import java.util.ArrayList; +import java.util.List; + /** - * * @author zhou * @since 2012-5-31下午12:20:41 */ public class DictionaryPane extends UIComboBoxPane implements DataCreatorUI { - private TableDataDictPane tableDataDictPane; + private TableDataDictPane tableDataDictPane; - @Override - protected void initLayout() { - this.setLayout(new BorderLayout(0,4)); - JPanel northPane = new JPanel(new BorderLayout(4, 0)); - northPane.add(new UILabel(Inter.getLocText("Type_Set")+":", UILabel.RIGHT),BorderLayout.WEST); - northPane.add(jcb,BorderLayout.CENTER); - this.add(northPane,BorderLayout.NORTH); - this.add(cardPane,BorderLayout.CENTER); - } + @Override + protected void initLayout() { + this.setLayout(new BorderLayout(0, 4)); +// JPanel northPane = new JPanel(new BorderLayout(4, 0)); +// northPane.add(new UILabel(Inter.getLocText("Type_Set"), UILabel.LEFT),BorderLayout.WEST); +// northPane.add(jcb,BorderLayout.CENTER); + double p = TableLayout.PREFERRED; + double f = TableLayout.FILL; + double[] columnSize = {p, f}; + double[] rowSize = {p}; - @Override - protected String title4PopupWindow() { - return Inter.getLocText("DS-Dictionary"); - } + Component[][] components = new Component[][]{ + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Type_Set"), UILabel.LEFT), jcb}, + }; + JPanel northPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); + this.add(northPane, BorderLayout.NORTH); + this.add(cardPane, BorderLayout.CENTER); + } + + @Override + protected String title4PopupWindow() { + return Inter.getLocText("FR-Designer_DS-Dictionary"); + } @Override public JComponent toSwingComponent() { @@ -44,7 +52,7 @@ public class DictionaryPane extends UIComboBoxPane implements DataCr } @Override - public void populateBean(Dictionary ob) { + public void populateBean(Dictionary ob) { for (int i = 0; i < this.cards.size(); i++) { FurtherBasicBeanPane pane = cards.get(i); if (pane.accept(ob)) { @@ -54,19 +62,19 @@ public class DictionaryPane extends UIComboBoxPane implements DataCr pane.reset(); } } - if(ob instanceof DynamicSQLDict){ - jcb.setSelectedIndex(1); - tableDataDictPane.populateBean((DynamicSQLDict)ob); - } - } + if (ob instanceof DynamicSQLDict) { + jcb.setSelectedIndex(1); + tableDataDictPane.populateBean((DynamicSQLDict) ob); + } + } - @Override - protected List> initPaneList() { - List> paneList = new ArrayList>(); - paneList.add( new DatabaseDictPane()); - paneList.add(tableDataDictPane = new TableDataDictPane()); - paneList.add( new CustomDictPane()); - paneList.add( new FormulaDictPane()); - return paneList; - } + @Override + protected List> initPaneList() { + List> paneList = new ArrayList>(); + paneList.add(new DatabaseDictPane()); + paneList.add(tableDataDictPane = new TableDataDictPane()); + paneList.add(new CustomDictPane()); + paneList.add(new FormulaDictPane()); + return paneList; + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/present/dict/FormulaDictPane.java b/designer_base/src/com/fr/design/present/dict/FormulaDictPane.java index deb5396fe..a9fde3d90 100644 --- a/designer_base/src/com/fr/design/present/dict/FormulaDictPane.java +++ b/designer_base/src/com/fr/design/present/dict/FormulaDictPane.java @@ -1,107 +1,123 @@ package com.fr.design.present.dict; -import java.awt.*; - -import com.fr.design.gui.ilable.UILabel; -import javax.swing.JPanel; -import javax.swing.event.DocumentListener; - +import com.fr.base.BaseUtils; import com.fr.base.Formula; import com.fr.data.impl.FormulaDictionary; import com.fr.design.beans.FurtherBasicBeanPane; +import com.fr.design.editor.editor.FormulaEditor; +import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; -import com.fr.design.editor.editor.FormulaEditor; +import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.Inter; import com.fr.stable.StringUtils; +import javax.swing.*; +import javax.swing.event.DocumentListener; +import java.awt.*; + public class FormulaDictPane extends FurtherBasicBeanPane { - private FormulaEditor keyFormulaEditor; - private FormulaEditor valueFormulaEditor; - public FormulaDictPane() { - initComponents(); - } + private static final int EDITOR_COLUMN = 15; + private FormulaEditor keyFormulaEditor; + private FormulaEditor valueFormulaEditor; + + public FormulaDictPane() { + initComponents(); + } + + public static void main(String[] args) { + JFrame jf = new JFrame("test"); + jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + JPanel content = (JPanel) jf.getContentPane(); + content.setLayout(new BorderLayout()); + content.add(new FormulaDictPane(), BorderLayout.NORTH); + GUICoreUtils.centerWindow(jf); + jf.setSize(250, 400); + jf.setVisible(true); + } + + private void initComponents() { + keyFormulaEditor = new FormulaEditor(); + keyFormulaEditor.setColumns(EDITOR_COLUMN); + JPanel keyFormulaContainer = new JPanel(new FlowLayout(FlowLayout.RIGHT)); + keyFormulaEditor.setPreferredSize(new Dimension(148, 20)); + Icon icon = BaseUtils.readIcon("/com/fr/design/images/m_insert/formula.png"); + keyFormulaContainer.add(new JLabel(icon)); + keyFormulaContainer.add(keyFormulaEditor); + + valueFormulaEditor = new FormulaEditor(); + valueFormulaEditor.setColumns(EDITOR_COLUMN); + + double p = TableLayout.PREFERRED; + double f = TableLayout.FILL; + double[] columnSize = {p, f}; + double[] rowSize = {p, p, p, p, p, p}; + + UILabel tag = new UILabel(Inter.getLocText("Formula_Dictionary_Display_Examples_Html")); + JPanel t = new JPanel(new BorderLayout()); + t.add(tag, BorderLayout.NORTH); + + Formula vf = new Formula("$$$"); + valueFormulaEditor = new FormulaEditor("", vf); + + JPanel valueFormulaContainer = new JPanel(new FlowLayout(FlowLayout.RIGHT)); + valueFormulaEditor.setPreferredSize(new Dimension(148, 20)); + valueFormulaContainer.add(new JLabel(icon)); + valueFormulaContainer.add(valueFormulaEditor); - private void initComponents() { - keyFormulaEditor = new FormulaEditor(); - keyFormulaEditor.setColumns(15); - valueFormulaEditor = new FormulaEditor(); - valueFormulaEditor.setColumns(15); - double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - double[] columnSize = { f }; - double[] rowSize = { p,p,p,p,p }; -// ActionLabel tips = new ActionLabel("(对应实际值范围内的每个值)") { -// @Override -// public JToolTip createToolTip() { -// MultiLineToolTip tip = new MultiLineToolTip(); -// tip.setComponent(this); -// tip.setOpaque(false); -// return tip; -// } -// }; -// tips.setToolTipText(Inter.getLocText("Formula_Dictionary_Display_Examples")); -// JPanel cc = new JPanel(new BorderLayout()); -// cc.add(tips, BorderLayout.WEST); - - UILabel tag = new UILabel(Inter.getLocText("Formula_Dictionary_Display_Examples_Html")); - JPanel t = new JPanel(new BorderLayout()); - t.add(tag, BorderLayout.WEST); - - Formula vf = new Formula("$$$"); - valueFormulaEditor = new FormulaEditor("",vf); Component[][] components = new Component[][]{ - new Component[]{new UILabel(Inter.getLocText("Actual_Value") + ":")}, - new Component[]{keyFormulaEditor}, - new Component[]{new UILabel(Inter.getLocText("Display_Value") + ":")}, - new Component[]{valueFormulaEditor}, - new Component[]{t} + new Component[]{null, null}, + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Actual_Value"), UILabel.LEFT), keyFormulaContainer}, + new Component[]{null, null}, + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Display_Value"), UILabel.LEFT), valueFormulaContainer}, + new Component[]{null, null}, + new Component[]{t, null} }; - JPanel panel = TableLayoutHelper.createTableLayoutPane(components,rowSize,columnSize); + JPanel panel = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); this.setLayout(new BorderLayout()); - this.add(panel,BorderLayout.CENTER); - - } - - public void addChangeListener(DocumentListener l) { - keyFormulaEditor.addDocumentListener(l); - valueFormulaEditor.addDocumentListener(l); - } - - @Override - public String title4PopupWindow() { - return Inter.getLocText("Formula"); - } - - @Override - public void populateBean(FormulaDictionary dict) { - keyFormulaEditor.setValue(new Formula(dict.getProduceFormula() == null ? StringUtils.EMPTY : dict.getProduceFormula())); - valueFormulaEditor.setValue(new Formula(dict.getExcuteFormula() == null ? StringUtils.EMPTY : dict.getExcuteFormula())); - } - - @Override - public FormulaDictionary updateBean() { - FormulaDictionary dict = new FormulaDictionary(); - if (keyFormulaEditor.getValue() != null) { - dict.setProduceFormula(keyFormulaEditor.getValue().getContent()); - } - if (valueFormulaEditor.getValue() != null) { - dict.setExcuteFormula(valueFormulaEditor.getValue().getContent()); - } - - return dict; - } - - @Override - public boolean accept(Object ob) { - return ob instanceof FormulaDictionary; - } - - @Override - public void reset() { - keyFormulaEditor.reset(); - valueFormulaEditor.reset(); - } + this.add(panel, BorderLayout.CENTER); + + } + + public void addChangeListener(DocumentListener l) { + keyFormulaEditor.addDocumentListener(l); + valueFormulaEditor.addDocumentListener(l); + } + + @Override + public String title4PopupWindow() { + return Inter.getLocText("FR-Designer_Formula"); + } + + @Override + public void populateBean(FormulaDictionary dict) { + keyFormulaEditor.setValue(new Formula(dict.getProduceFormula() == null ? StringUtils.EMPTY : dict.getProduceFormula())); + valueFormulaEditor.setValue(new Formula(dict.getExcuteFormula() == null ? StringUtils.EMPTY : dict.getExcuteFormula())); + } + + @Override + public FormulaDictionary updateBean() { + FormulaDictionary dict = new FormulaDictionary(); + if (keyFormulaEditor.getValue() != null) { + dict.setProduceFormula(keyFormulaEditor.getValue().getContent()); + } + if (valueFormulaEditor.getValue() != null) { + dict.setExcuteFormula(valueFormulaEditor.getValue().getContent()); + } + + return dict; + } + + @Override + public boolean accept(Object ob) { + return ob instanceof FormulaDictionary; + } + + @Override + public void reset() { + keyFormulaEditor.reset(); + valueFormulaEditor.reset(); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/present/dict/TableDataDictPane.java b/designer_base/src/com/fr/design/present/dict/TableDataDictPane.java index 4e454ee9b..566591a1e 100644 --- a/designer_base/src/com/fr/design/present/dict/TableDataDictPane.java +++ b/designer_base/src/com/fr/design/present/dict/TableDataDictPane.java @@ -1,48 +1,46 @@ package com.fr.design.present.dict; -import java.awt.*; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.util.List; - -import com.fr.design.constants.UIConstants; -import com.fr.design.event.UIObserver; -import com.fr.design.event.UIObserverListener; -import com.fr.design.gui.ilable.UILabel; - -import javax.swing.JPanel; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; - import com.fr.base.Formula; import com.fr.base.TableData; -import com.fr.design.data.DesignTableDataManager; import com.fr.data.TableDataSource; -import com.fr.design.data.datapane.TableDataComboBox; -import com.fr.design.data.datapane.TableDataTreePane; import com.fr.data.impl.DBTableData; import com.fr.data.impl.DynamicSQLDict; import com.fr.data.impl.NameTableData; import com.fr.data.impl.TableDataDictionary; +import com.fr.design.DesignModelAdapter; +import com.fr.design.beans.FurtherBasicBeanPane; +import com.fr.design.constants.LayoutConstants; +import com.fr.design.constants.UIConstants; +import com.fr.design.data.DesignTableDataManager; +import com.fr.design.data.datapane.TableDataComboBox; +import com.fr.design.data.datapane.TableDataTreePane; import com.fr.design.data.datapane.preview.PreviewLabel; import com.fr.design.data.datapane.preview.PreviewLabel.Previewable; -import com.fr.design.data.tabledata.wrapper.TemplateTableDataWrapper; import com.fr.design.data.tabledata.wrapper.TableDataWrapper; -import com.fr.design.DesignModelAdapter; -import com.fr.design.beans.FurtherBasicBeanPane; -import com.fr.design.layout.TableLayout; -import com.fr.design.layout.TableLayoutHelper; -import com.fr.design.editor.ValueEditorPane; -import com.fr.design.editor.ValueEditorPaneFactory; +import com.fr.design.data.tabledata.wrapper.TemplateTableDataWrapper; +import com.fr.design.editor.DoubleDeckValueEditorPane; import com.fr.design.editor.editor.ColumnIndexEditor; import com.fr.design.editor.editor.ColumnNameEditor; import com.fr.design.editor.editor.Editor; import com.fr.design.editor.editor.FormulaEditor; +import com.fr.design.event.UIObserver; +import com.fr.design.event.UIObserverListener; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; 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.ItemEvent; +import java.awt.event.ItemListener; +import java.util.List; /** * 数据字典的数据查询面板 @@ -56,8 +54,8 @@ public class TableDataDictPane extends FurtherBasicBeanPane private static final long serialVersionUID = -5469742115988153206L; private static final int SELECTED_NO_TABLEDATA = -2; public TableDataComboBox tableDataNameComboBox; - private ValueEditorPane keyColumnPane; - private ValueEditorPane valueDictPane; + private DoubleDeckValueEditorPane keyColumnPane; + private DoubleDeckValueEditorPane valueDictPane; private ItemListener itemListener; private UIObserverListener uiObserverListener; @@ -67,6 +65,17 @@ public class TableDataDictPane extends FurtherBasicBeanPane iniListener(); } + public static void main(String[] args) { + JFrame jf = new JFrame("test"); + jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + JPanel content = (JPanel) jf.getContentPane(); + content.setLayout(new BorderLayout()); + content.add(new TableDataDictPane(), BorderLayout.NORTH); + GUICoreUtils.centerWindow(jf); + jf.setSize(290, 400); + jf.setVisible(true); + } + private void initBasicComponets() { tableDataNameComboBox = new TableDataComboBox(DesignTableDataManager.getEditingTableDataSource()); tableDataNameComboBox.addItemListener(new ItemListener() { @@ -76,10 +85,12 @@ public class TableDataDictPane extends FurtherBasicBeanPane } } }); - keyColumnPane = ValueEditorPaneFactory.createValueEditorPane(new Editor[]{new ColumnNameEditor(), new ColumnIndexEditor()}); +// keyColumnPane = ValueEditorPaneFactory.createValueEditorPane(new Editor[]{new ColumnNameEditor(), new ColumnIndexEditor()}); + keyColumnPane = new DoubleDeckValueEditorPane(new Editor[]{new ColumnNameEditor(), new ColumnIndexEditor()}); FormulaEditor formulaEditor = new FormulaEditor(Inter.getLocText("FR-Designer_Parameter-Formula")); formulaEditor.setEnabled(true); - valueDictPane = ValueEditorPaneFactory.createValueEditorPane(new Editor[]{new ColumnNameEditor(), new ColumnIndexEditor(), formulaEditor}); +// valueDictPane = ValueEditorPaneFactory.createValueEditorPane(new Editor[]{new ColumnNameEditor(), new ColumnIndexEditor(), formulaEditor}); + valueDictPane = new DoubleDeckValueEditorPane(new Editor[]{new ColumnNameEditor(), new ColumnIndexEditor(), formulaEditor}); } private void initComponents() { @@ -87,20 +98,20 @@ public class TableDataDictPane extends FurtherBasicBeanPane double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] columnSize = {p, f}; - double[] rowSize = {p, p, p}; + double[] rowSize = {p, p, p, p, p}; + int[][] rowCount = {{1, 1}, {1, 3}, {1, 3}}; JPanel firstLine = new JPanel(new BorderLayout(4, 0)); firstLine.add(tableDataNameComboBox, BorderLayout.CENTER); firstLine.add(new PreviewLabel(this), BorderLayout.EAST); - Component[][] components = new Component[][]{ - new Component[]{new UILabel(" " + Inter.getLocText("FR-Designer_DS_TableData") + ":", UILabel.RIGHT), firstLine}, - new Component[]{new UILabel(Inter.getLocText("FR-Designer_Actual_Value") + ":", UILabel.RIGHT), keyColumnPane}, - new Component[]{new UILabel(Inter.getLocText("FR-Designer_Display_Value") + ":", UILabel.RIGHT), valueDictPane} + new Component[]{new UILabel(Inter.getLocText("FR-Designer_DS_TableData") + " ", UILabel.LEFT), firstLine}, + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Actual_Value") + " ", UILabel.LEFT), keyColumnPane}, + new Component[]{new UILabel(Inter.getLocText("FR-Designer_Display_Value") + " ", UILabel.LEFT), valueDictPane}, }; - JPanel panel = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM); this.setLayout(new BorderLayout()); this.add(panel, BorderLayout.CENTER); } @@ -133,10 +144,11 @@ public class TableDataDictPane extends FurtherBasicBeanPane /** * 该面板标题 + * * @return 返回是窗口显示的标题 */ public String title4PopupWindow() { - return Inter.getLocText("Dic-Data_Query"); + return Inter.getLocText("FR-Designer_Dic_Data_Query"); } private void tdChange(final ItemEvent e) { @@ -239,14 +251,14 @@ public class TableDataDictPane extends FurtherBasicBeanPane TableDataSource dataSource = DesignTableDataManager.getEditingTableDataSource(); if (dataSource != null) { for (int i = BEGIN; i < END; i++) { - TableData td = dataSource.getTableData(Inter.getLocText("Dictionary-Dynamic_SQL") + i); + TableData td = dataSource.getTableData(Inter.getLocText("FR-Designer_Dictionary_Dynamic_SQL") + i); if (td == null) { - name = Inter.getLocText("Dictionary-Dynamic_SQL") + i; - dataSource.putTableData(Inter.getLocText("Dictionary-Dynamic_SQL") + i, db); + name = Inter.getLocText("FR-Designer_Dictionary_Dynamic_SQL") + i; + dataSource.putTableData(Inter.getLocText("FR-Designer_Dictionary_Dynamic_SQL") + i, db); break; } else { if (ComparatorUtils.equals(td, db)) { - name = Inter.getLocText("Dictionary-Dynamic_SQL") + i; + name = Inter.getLocText("FR-Designer_Dictionary_Dynamic_SQL") + i; break; } else { continue; @@ -319,6 +331,7 @@ public class TableDataDictPane extends FurtherBasicBeanPane /** * 判断ob是否是TableDataDictionary类型 + * * @param ob 用于判断的Object * @return 如果是TableDataDictionary类型,则返回true */ @@ -338,7 +351,8 @@ public class TableDataDictPane extends FurtherBasicBeanPane /** - *给组件登记一个观察者监听事件 + * 给组件登记一个观察者监听事件 + * * @param listener 观察者监听事件 */ public void registerChangeListener(UIObserverListener listener) { @@ -347,6 +361,7 @@ public class TableDataDictPane extends FurtherBasicBeanPane /** * 是否应该相应listener事件 + * * @return 要是响应listener事件,则返回true */ public boolean shouldResponseChangeListener() {