diff --git a/designer/src/com/fr/design/actions/edit/HyperlinkAction.java b/designer/src/com/fr/design/actions/edit/HyperlinkAction.java index 41559e0a0..6c6c4379b 100644 --- a/designer/src/com/fr/design/actions/edit/HyperlinkAction.java +++ b/designer/src/com/fr/design/actions/edit/HyperlinkAction.java @@ -15,6 +15,7 @@ import com.fr.design.actions.utils.ReportActionUtils.IterAction; import com.fr.design.gui.frpane.HyperlinkGroupPane; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.ElementCasePane; +import com.fr.design.mainframe.HyperlinkGroupPaneActionImpl; import com.fr.design.menu.KeySetUtils; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionAdapter; @@ -55,7 +56,7 @@ public class HyperlinkAction extends ElementCaseAction { final TemplateElementCase report = reportPane.getEditingElementCase(); NameJavaScriptGroup nameHyperlinks = getNameJSGroup(reportPane, report); - final HyperlinkGroupPane pane = DesignerContext.getDesignerFrame().getSelectedJTemplate().getHyperLinkPane(); + final HyperlinkGroupPane pane = DesignerContext.getDesignerFrame().getSelectedJTemplate().getHyperLinkPane(HyperlinkGroupPaneActionImpl.getInstance()); pane.populate(nameHyperlinks); final Selection sel = reportPane.getSelection(); diff --git a/designer/src/com/fr/design/condition/HyperlinkPane.java b/designer/src/com/fr/design/condition/HyperlinkPane.java index 5e24329ab..bbdecf661 100644 --- a/designer/src/com/fr/design/condition/HyperlinkPane.java +++ b/designer/src/com/fr/design/condition/HyperlinkPane.java @@ -8,6 +8,7 @@ import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.HyperlinkGroupPaneActionImpl; import com.fr.general.Inter; import com.fr.js.*; import com.fr.report.cell.cellattr.highlight.HighlightAction; @@ -36,7 +37,7 @@ public class HyperlinkPane extends ConditionAttrSingleConditionPane 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/ElementCasePaneDelegate.java b/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java index 5253999ac..7c9fcdaae 100644 --- a/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java +++ b/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java @@ -2,6 +2,7 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; import com.fr.design.fun.MenuHandler; +import com.fr.design.gui.frpane.HyperlinkGroupPane; import com.fr.design.menu.KeySetUtils; import com.fr.general.Inter; import com.fr.grid.selection.FloatSelection; @@ -59,7 +60,9 @@ public class ElementCasePaneDelegate extends ElementCasePane { JTemplate editingTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); if (editingTemplate != null && !editingTemplate.isUpMode()) { // 模板初始化完成后,才能初始化超级链接面板 - ReportHyperlinkGroupPane.getInstance().populate(ElementCasePaneDelegate.this); +// HyperlinkGroupPane hyperlinkGroupPane = ReportHyperlinkGroupPane.getInstance(HyperlinkGroupPaneActionImpl.getInstance()); + HyperlinkGroupPane hyperlinkGroupPane = editingTemplate.getHyperLinkPane(HyperlinkGroupPaneActionImpl.getInstance()); + hyperlinkGroupPane.populate(ElementCasePaneDelegate.this); if (((ElementCasePaneDelegate)e.getSource()).getSelection() instanceof FloatSelection) { EastRegionContainerPane.getInstance().switchMode(EastRegionContainerPane.PropertyMode.REPORT_FLOAT); // EastRegionContainerPane.getInstance().replaceCellAttrPane(CellElementPropertyPane.getInstance()); @@ -69,7 +72,7 @@ public class ElementCasePaneDelegate extends ElementCasePane { EastRegionContainerPane.getInstance().replaceCellAttrPane(CellElementPropertyPane.getInstance()); EastRegionContainerPane.getInstance().replaceCellElementPane(QuickEditorRegion.getInstance()); } - EastRegionContainerPane.getInstance().replaceHyperlinkPane(ReportHyperlinkGroupPane.getInstance()); + EastRegionContainerPane.getInstance().replaceHyperlinkPane(hyperlinkGroupPane); EastRegionContainerPane.getInstance().removeParameterPane(); } } diff --git a/designer/src/com/fr/design/mainframe/HyperlinkGroupPaneActionImpl.java b/designer/src/com/fr/design/mainframe/HyperlinkGroupPaneActionImpl.java new file mode 100644 index 000000000..689a59c7f --- /dev/null +++ b/designer/src/com/fr/design/mainframe/HyperlinkGroupPaneActionImpl.java @@ -0,0 +1,94 @@ +package com.fr.design.mainframe; + +import com.fr.base.Style; +import com.fr.design.actions.utils.ReportActionUtils; +import com.fr.design.designer.TargetComponent; +import com.fr.design.file.HistoryTemplateListPane; +import com.fr.design.gui.frpane.HyperlinkGroupPane; +import com.fr.design.gui.frpane.HyperlinkGroupPaneActionProvider; +import com.fr.general.FRFont; +import com.fr.grid.selection.CellSelection; +import com.fr.grid.selection.FloatSelection; +import com.fr.grid.selection.Selection; +import com.fr.js.NameJavaScriptGroup; +import com.fr.report.cell.CellElement; +import com.fr.report.cell.FloatElement; +import com.fr.report.elementcase.TemplateElementCase; +import com.fr.stable.Constants; + +import java.awt.*; + +/** + * Created by plough on 2017/7/26. + */ +public class HyperlinkGroupPaneActionImpl implements HyperlinkGroupPaneActionProvider { + private static HyperlinkGroupPaneActionProvider instance; + + private HyperlinkGroupPaneActionImpl() { + } + + public static HyperlinkGroupPaneActionProvider getInstance() { + if (instance == null) { + instance = new HyperlinkGroupPaneActionImpl(); + } + return instance; + } + + @Override + public void populate(HyperlinkGroupPane hyperlinkGroupPane, TargetComponent elementCasePane) { + ElementCasePane reportPane = (ElementCasePane)elementCasePane; + final TemplateElementCase report = reportPane.getEditingElementCase(); + NameJavaScriptGroup nameHyperlinks = getNameJSGroup(reportPane, report); + hyperlinkGroupPane.populate(nameHyperlinks); + } + + private NameJavaScriptGroup getNameJSGroup(ElementCasePane reportPane, final TemplateElementCase report) { + NameJavaScriptGroup nameHyperlinks = null; + final Selection sel = reportPane.getSelection(); + if (sel instanceof FloatSelection) { + FloatElement selectedFloatElement = report.getFloatElement(((FloatSelection)sel).getSelectedFloatName()); + nameHyperlinks = selectedFloatElement.getNameHyperlinkGroup(); + } else { + CellElement editCellElement = report.getCellElement(((CellSelection)sel).getColumn(), ((CellSelection)sel).getRow()); + if (editCellElement != null) { + nameHyperlinks = editCellElement.getNameHyperlinkGroup(); + } + } + return nameHyperlinks; + } + + @Override + public void saveSettings(HyperlinkGroupPane hyperlinkGroupPane) { + // plough: 需要判断设计器是否初始化完成,不能用 HistoryTemplateListPane.getInstance().getCurrentEditingTemplate() + JTemplate jt = DesignerContext.getDesignerFrame().getSelectedJTemplate(); + if (jt == null) { + return; + } + ElementCasePane reportPane = (ElementCasePane)jt.getCurrentElementCasePane(); + final TemplateElementCase report = reportPane.getEditingElementCase(); + final Selection sel = reportPane.getSelection(); + final NameJavaScriptGroup updateNameHyperlinks = hyperlinkGroupPane.updateJSGroup(); + if (sel instanceof FloatSelection) { + FloatElement selectedFloatElement = report.getFloatElement(((FloatSelection)sel).getSelectedFloatName()); + selectedFloatElement.setNameHyperlinkGroup(updateNameHyperlinks); + } else { + ReportActionUtils.actionIterateWithCellSelection((CellSelection)sel, report, new ReportActionUtils.IterAction() { + public void dealWith(CellElement editCellElement) { + Style elementStyle = editCellElement.getStyle(); + FRFont frFont = elementStyle.getFRFont(); + if (updateNameHyperlinks.size() > 0) { + frFont = frFont.applyForeground(Color.blue); + frFont = frFont.applyUnderline(Constants.LINE_THIN); + } else { + frFont = frFont.applyForeground(Color.black); + frFont = frFont.applyUnderline(Constants.LINE_NONE); + } + editCellElement.setStyle(elementStyle.deriveFRFont(frFont)); + editCellElement.setNameHyperlinkGroup(updateNameHyperlinks); + } + }); + } + + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().fireTargetModified(); + } +} diff --git a/designer/src/com/fr/design/mainframe/JWorkBook.java b/designer/src/com/fr/design/mainframe/JWorkBook.java index 37f8a3597..4475481f2 100644 --- a/designer/src/com/fr/design/mainframe/JWorkBook.java +++ b/designer/src/com/fr/design/mainframe/JWorkBook.java @@ -22,6 +22,7 @@ import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.file.MutilTempalteTabPane; import com.fr.design.fun.PreviewProvider; import com.fr.design.gui.frpane.HyperlinkGroupPane; +import com.fr.design.gui.frpane.HyperlinkGroupPaneActionProvider; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.icontainer.UIModeControlContainer; import com.fr.design.gui.imenu.UIMenuItem; @@ -113,6 +114,11 @@ public class JWorkBook extends JTemplate { EastRegionContainerPane.getInstance().replaceCellAttrPane(getEastDownPane()); } + @Override + public TargetComponent getCurrentElementCasePane() { + return getEditingElementCasePane(); + } + @Override protected UIModeControlContainer createCenterPane() { parameterPane = ModuleContext.isModuleStarted(Module.FORM_MODULE) ? new ParameterDefinitePane() : null; @@ -825,8 +831,8 @@ public class JWorkBook extends JTemplate { } @Override - public HyperlinkGroupPane getHyperLinkPane() { - return ReportHyperlinkGroupPane.getInstance(); + public HyperlinkGroupPane getHyperLinkPane(HyperlinkGroupPaneActionProvider hyperlinkGroupPaneActionProvider) { + return ReportHyperlinkGroupPane.getInstance(hyperlinkGroupPaneActionProvider); } public void setAuthorityMode(boolean isUpMode) { 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/ReportHyperlinkGroupPane.java b/designer/src/com/fr/design/mainframe/ReportHyperlinkGroupPane.java index d4f06ea4c..b2b018e0b 100644 --- a/designer/src/com/fr/design/mainframe/ReportHyperlinkGroupPane.java +++ b/designer/src/com/fr/design/mainframe/ReportHyperlinkGroupPane.java @@ -1,6 +1,11 @@ package com.fr.design.mainframe; +import com.fr.base.Style; +import com.fr.design.actions.utils.ReportActionUtils; +import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.gui.frpane.HyperlinkGroupPane; +import com.fr.design.gui.frpane.HyperlinkGroupPaneActionProvider; +import com.fr.general.FRFont; import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.FloatSelection; import com.fr.grid.selection.Selection; @@ -8,6 +13,9 @@ import com.fr.js.NameJavaScriptGroup; import com.fr.report.cell.CellElement; import com.fr.report.cell.FloatElement; import com.fr.report.elementcase.TemplateElementCase; +import com.fr.stable.Constants; + +import java.awt.*; /** * Created by plough on 2017/7/21. @@ -15,36 +23,23 @@ import com.fr.report.elementcase.TemplateElementCase; public class ReportHyperlinkGroupPane extends HyperlinkGroupPane { private static ReportHyperlinkGroupPane singleton; - private ReportHyperlinkGroupPane() { - super(); + private ReportHyperlinkGroupPane(HyperlinkGroupPaneActionProvider hyperlinkGroupPaneActionProvider) { + super(hyperlinkGroupPaneActionProvider); } - public synchronized static ReportHyperlinkGroupPane getInstance() { + public synchronized static ReportHyperlinkGroupPane getInstance(HyperlinkGroupPaneActionProvider hyperlinkGroupPaneActionProvider) { if (singleton == null) { - singleton = new ReportHyperlinkGroupPane(); + singleton = new ReportHyperlinkGroupPane(hyperlinkGroupPaneActionProvider); } + singleton.refreshPane(); return singleton; } - public void populate(ElementCasePane reportPane) { - final TemplateElementCase report = reportPane.getEditingElementCase(); - NameJavaScriptGroup nameHyperlinks = getNameJSGroup(reportPane, report); - populate(nameHyperlinks); - } - - private NameJavaScriptGroup getNameJSGroup(ElementCasePane reportPane, final TemplateElementCase report) { - NameJavaScriptGroup nameHyperlinks = null; - final Selection sel = reportPane.getSelection(); - if (sel instanceof FloatSelection) { - FloatElement selectedFloatElement = report.getFloatElement(((FloatSelection)sel).getSelectedFloatName()); - nameHyperlinks = selectedFloatElement.getNameHyperlinkGroup(); - } else { - CellElement editCellElement = report.getCellElement(((CellSelection)sel).getColumn(), ((CellSelection)sel).getRow()); - if (editCellElement != null) { - nameHyperlinks = editCellElement.getNameHyperlinkGroup(); - } + private void refreshPane() { + ElementCasePane reportPane = ((JWorkBook)HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()).getEditingElementCasePane(); + if (reportPane == null) { + return; } - - return nameHyperlinks; + populate(reportPane); } } 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/CellExpandAttrPane.java b/designer/src/com/fr/design/mainframe/cell/settingpane/CellExpandAttrPane.java index 128c01418..3ca8bff0c 100644 --- a/designer/src/com/fr/design/mainframe/cell/settingpane/CellExpandAttrPane.java +++ b/designer/src/com/fr/design/mainframe/cell/settingpane/CellExpandAttrPane.java @@ -89,21 +89,6 @@ public class CellExpandAttrPane extends AbstractCellAttrPane { layoutPane.add(basicPane,BorderLayout.NORTH); layoutPane.add(seniorPane,BorderLayout.CENTER); return layoutPane; -// double f = TableLayout.FILL; -// double p = TableLayout.PREFERRED; -// Component[][] components = new Component[][]{ -// new Component[]{new UILabel(Inter.getLocText("ExpandD-Expand_Direction") + ":", SwingConstants.RIGHT), expandDirectionButton}, -// new Component[]{new UILabel(Inter.getLocText("LeftParent") + ":", SwingConstants.RIGHT), leftFatherPane}, -// new Component[]{new UILabel(Inter.getLocText("ExpandD-Up_Father_Cell") + ":", SwingConstants.RIGHT), rightFatherPane}, -// new Component[]{new JSeparator(), null}, -// new Component[]{new UILabel(Inter.getLocText("ExpandD-Expandable") + ":", SwingConstants.RIGHT), horizontalExpandableCheckBox}, -// new Component[]{null, verticalExpandableCheckBox}, -// new Component[]{new UILabel(Inter.getLocText("ExpandD-Sort_After_Expand") + ":", SwingConstants.RIGHT), sortAfterExpand}, -// }; -// double[] rowSize = {p, p, p, p, p, p, p, p, p, p, p, p, p}; -// double[] columnSize = {p, f}; -// int[][] rowCount = {{1, 1}, {1, 3}, {1, 3}, {1, 1}, {1, 1}, {1, 1}, {1, 3}}; -// return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM); } private JPanel basicPane(){ 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/cell/settingpane/style/CustomStylePane.java b/designer/src/com/fr/design/mainframe/cell/settingpane/style/CustomStylePane.java index 7caadd105..019417c09 100644 --- a/designer/src/com/fr/design/mainframe/cell/settingpane/style/CustomStylePane.java +++ b/designer/src/com/fr/design/mainframe/cell/settingpane/style/CustomStylePane.java @@ -1,29 +1,25 @@ package com.fr.design.mainframe.cell.settingpane.style; -import java.awt.*; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.event.ChangeListener; - import com.fr.base.CellBorderStyle; import com.fr.base.NameStyle; import com.fr.base.Style; import com.fr.design.actions.utils.ReportActionUtils; -import com.fr.design.gui.ibutton.FiveButtonLayout; -import com.fr.design.gui.style.AbstractBasicStylePane; -import com.fr.design.gui.style.AlignmentPane; -import com.fr.design.gui.style.BackgroundPane; -import com.fr.design.gui.style.BorderPane; -import com.fr.design.gui.style.FRFontPane; -import com.fr.design.gui.style.FormatPane; -import com.fr.design.style.BorderUtils; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.MultiTabPane; -import com.fr.general.Inter; +import com.fr.design.gui.ibutton.FiveButtonLayout; +import com.fr.design.gui.style.*; import com.fr.design.mainframe.ElementCasePane; +import com.fr.design.style.BorderUtils; +import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.Inter; import com.fr.stable.Constants; +import javax.swing.*; +import javax.swing.event.ChangeListener; +import java.awt.*; +import java.util.ArrayList; +import java.util.List; + /** * 哎,复杂的原型图导致复杂的画法。非我所愿也 @@ -32,130 +28,143 @@ import com.fr.stable.Constants; * @since 2012-5-24上午10:36:10 */ public class CustomStylePane extends MultiTabPane