From 8460adc91e93e5c2f96551307b8e21ef00e64684 Mon Sep 17 00:00:00 2001 From: richie Date: Wed, 25 Jul 2018 10:02:34 +0800 Subject: [PATCH] =?UTF-8?q?CORE-116=20=E7=BB=A7=E7=BB=AD=E6=94=B9=E5=9B=BD?= =?UTF-8?q?=E9=99=85=E5=8C=96=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/JTemplate.java | 4 +- .../chart/report/MapTableCubeDataPane.java | 2 +- .../chart/report/MapTableDataSinglePane.java | 4 +- .../editor/BiasTextPainterCellEditor.java | 8 +- .../design/dscolumn/DSColumnAdvancedPane.java | 19 +- .../com/fr/design/mainframe/app/CptApp.java | 13 +- .../com/fr/design/mainframe/app/CptxApp.java | 2 +- .../com/fr/design/mainframe/app/FormApp.java | 3 +- .../design/report/ValueVerifierEditPane.java | 4 +- .../webattr/ReportWebWidgetConstants.java | 38 +- .../submit/SmartInsertDBManipulationPane.java | 950 +++++++++--------- 11 files changed, 503 insertions(+), 544 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java b/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java index eb1e44c058..9f03ddcf66 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java @@ -535,7 +535,7 @@ public abstract class JTemplate> FineLoggerFactory.getLogger().error(e.getMessage(), e); } if (!access) { - JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), com.fr.design.i18n.Toolkit.i18nText("FR-Designer_No-Privilege") + "!", com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Message"), JOptionPane.WARNING_MESSAGE); + JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Template_Permission_Denied") + "!", com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Message"), JOptionPane.WARNING_MESSAGE); return false; } collectInfo(); @@ -585,7 +585,7 @@ public abstract class JTemplate> FineLoggerFactory.getLogger().error(e.getMessage(), e); } if (!access) { - JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), com.fr.design.i18n.Toolkit.i18nText("FR-Designer_No-Privilege") + "!", com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Message"), JOptionPane.WARNING_MESSAGE); + JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Template_Permission_Denied") + "!", com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Message"), JOptionPane.WARNING_MESSAGE); return false; } editingFILE = fileChooser.getSelectedFILE(); diff --git a/designer-chart/src/main/java/com/fr/design/chart/report/MapTableCubeDataPane.java b/designer-chart/src/main/java/com/fr/design/chart/report/MapTableCubeDataPane.java index e64b6fcff2..c600c13255 100644 --- a/designer-chart/src/main/java/com/fr/design/chart/report/MapTableCubeDataPane.java +++ b/designer-chart/src/main/java/com/fr/design/chart/report/MapTableCubeDataPane.java @@ -33,7 +33,7 @@ public class MapTableCubeDataPane extends FurtherBasicBeanPane tableEditorPane; private final String[] columnNames = new String[] { - com.fr.design.i18n.Toolkit.i18nTextArray(new String[] {"Verify-Verify_Formula", "Verify-ToolTips"}, new String[] {"(", ")"}), - com.fr.design.i18n.Toolkit.i18nText("Verify-Error_Information") }; + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Formula_Verify"), + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Formula_Verify_Warn_Text") }; public ValueVerifierEditPane() { // ben:UITableEditorPane; diff --git a/designer-realize/src/main/java/com/fr/design/webattr/ReportWebWidgetConstants.java b/designer-realize/src/main/java/com/fr/design/webattr/ReportWebWidgetConstants.java index ab46373052..b95123ea43 100644 --- a/designer-realize/src/main/java/com/fr/design/webattr/ReportWebWidgetConstants.java +++ b/designer-realize/src/main/java/com/fr/design/webattr/ReportWebWidgetConstants.java @@ -4,10 +4,8 @@ import com.fr.base.BaseUtils; import com.fr.design.gui.core.WidgetOption; import com.fr.design.gui.core.WidgetOptionFactory; import com.fr.form.ui.CustomToolBarButton; -import com.fr.form.ui.Widget; import com.fr.report.web.button.AppletPrint; -import com.fr.report.web.button.Edit; import com.fr.report.web.button.Email; import com.fr.report.web.button.ExcelO; import com.fr.report.web.button.ExcelP; @@ -16,13 +14,11 @@ import com.fr.report.web.button.Export; import com.fr.report.web.button.FlashPrint; import com.fr.report.web.button.NewPrint; import com.fr.report.web.button.PDF; -import com.fr.report.web.button.PDF2; import com.fr.report.web.button.PDFPrint; import com.fr.report.web.button.PageSetup; import com.fr.report.web.button.Print; import com.fr.report.web.button.PrintPreview; import com.fr.report.web.button.Scale; -import com.fr.report.web.button.ServerPrint; import com.fr.report.web.button.Word; import com.fr.report.web.button.page.First; import com.fr.report.web.button.page.Last; @@ -45,8 +41,6 @@ import com.fr.report.web.button.write.Submit; import com.fr.report.web.button.write.SubmitForcibly; import com.fr.report.web.button.write.Verify; import com.fr.report.web.button.write.WriteOfflineHTML; -import com.fr.stable.bridge.BridgeMark; -import com.fr.stable.bridge.StableFactory; public class ReportWebWidgetConstants { private ReportWebWidgetConstants() { @@ -61,25 +55,12 @@ public class ReportWebWidgetConstants { return new WidgetOption[]{PAGESETUP, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT, SETPRINTEROFFSET, PRINTPREVIEW, CUSTOM_BUTTON}; } - public static WidgetOption[] getPreviewToolBarInstance() { - return new WidgetOption[]{FIRST, PREVIOUS, PAGENAVI, NEXT, LAST, SCALE, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT, - SETPRINTEROFFSET, CUSTOM_BUTTON}; - } - public static WidgetOption[] getWriteToolBarInstance() { return new WidgetOption[]{SUBMIT, VERIFY, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT, IMPORTEXCELDATA, SHOWCELLVALUE, APPENDCOLUMNROW, DELETECOLUMNROW, SETPRINTEROFFSET, WRITEOFFLINEHTML, CUSTOM_BUTTON, WRITESTASH, WRITESTASHCLEAR, IMPORTEXCELDATA_CUSTOMIZED, IMPORTEXCEL, IMPORTEXCEL_COVER, IMPORTEXCEL_CLEAN, IMPORTEXCEL_APPEND}; } - public static WidgetOption[] getFormToolBarInstance() { - return new WidgetOption[]{EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT, SETPRINTEROFFSET, CUSTOM_BUTTON}; - } - - // 查询 - public static final WidgetOption SEARCH = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nTextArray(new String[]{"Query", "Form-Button"}), - BaseUtils.readIcon("/com/fr/web/images/form/resources/preview_16.png"), StableFactory.getMarkedClass(BridgeMark.SUBMIT_BUTTON, Widget.class)); - // 提交按钮 public static final WidgetOption SUBMIT = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("FR-Engine_Utils-Submit"), BaseUtils.readIcon("/com/fr/web/images/save.png"), Submit.class); @@ -96,36 +77,29 @@ public class ReportWebWidgetConstants { public static final WidgetOption PDF = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("FR-Engine_ReportServerP-PDF"), BaseUtils.readIcon("/com/fr/web/images/pdf.png"), PDF.class); - // PDF导出,解决linux下无中文字体的导出字体混乱 - public static final WidgetOption PDF2 = WidgetOptionFactory.createByWidgetClass( - com.fr.design.i18n.Toolkit.i18nTextArray(new String[]{"ReportServerP-PDF", "ReportServerP-PDF2-INFO"}, new String[]{"(", ")"}), BaseUtils.readIcon("/com/fr/web/images/pdf.png"), PDF2.class); - // 客户端PDF打印 public static final WidgetOption PDFPRINT = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("FR-Engine_Utils-Print[Client]"), BaseUtils.readIcon("/com/fr/web/images/pdfPrint.png"), PDFPrint.class); - // 服务器端打印 - public static final WidgetOption SERVERPRINT = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("FR-Engine_ReportServerP-Print[Server]"), - BaseUtils.readIcon("/com/fr/web/images/serverPrint.png"), ServerPrint.class); + // 邮件发送 public static final WidgetOption EMAIL = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("FR-Engine_Email"), BaseUtils.readIcon("/com/fr/web/images/email.png"), Email.class); public static final WidgetOption PRINTPREVIEW = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("PrintP-Print_Preview"), BaseUtils.readIcon("/com/fr/web/images/preview.png"), PrintPreview.class); - public static final WidgetOption EDIT = WidgetOptionFactory.createByWidgetClass("Edit", Edit.class); // 导出成Excel 分页导出 - public static final WidgetOption EXCELP = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nTextArray(new String[]{"Excel", "FR-Designer_Export_Excel_Page"}, new String[]{"(", ")"}), + public static final WidgetOption EXCELP = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Export_Excel_Page"), BaseUtils.readIcon("/com/fr/web/images/excel.png"), ExcelP.class); // 导出成Excel 原样导出 - public static final WidgetOption EXCELO = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nTextArray(new String[]{"Excel", "FR-Designer_Export_Excel_Simple"}, new String[]{"(", ")"}), + public static final WidgetOption EXCELO = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Export_Excel_Simple"), BaseUtils.readIcon("/com/fr/web/images/excel.png"), ExcelO.class); // 导出成Excel 分页分Sheet导出 - public static final WidgetOption EXCELS = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nTextArray(new String[]{"Excel", "FR-Designer_Export_Excel_PageToSheet"}, new String[]{"(", ")"}), + public static final WidgetOption EXCELS = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Export_Excel_Page_To_Sheet"), BaseUtils.readIcon("/com/fr/web/images/excel.png"), ExcelS.class); // 导出成Word - public static final WidgetOption WORD = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("FR-Engine_Word"), BaseUtils.readIcon("/com/fr/web/images/word.png"), Word.class); + public static final WidgetOption WORD = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Export_Word"), BaseUtils.readIcon("/com/fr/web/images/word.png"), Word.class); // 页面设置 public static final WidgetOption PAGESETUP = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("PageSetup-Page_Setup"), BaseUtils.readIcon("/com/fr/web/images/pageSetup.png"), PageSetup.class); // 导出 @@ -133,7 +107,7 @@ public class ReportWebWidgetConstants { .createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("FR-Engine_Export"), BaseUtils.readIcon("/com/fr/web/images/export.png"), Export.class); // 当前页/总页数 - public static final WidgetOption PAGENAVI = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nTextArray(new String[]{"HJS-Current_Page", "HF-Number_of_Page"}, new String[]{"/", ""}), + public static final WidgetOption PAGENAVI = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Widget_Page_Navi_Text"), BaseUtils.readIcon("/com/fr/web/images/pageNumber.png"), PageNavi.class); // 首页 public static final WidgetOption FIRST = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("FR-Engine_ReportServerP-First"), BaseUtils.readIcon("/com/fr/web/images/first.png"), diff --git a/designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java b/designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java index c7fb372ecf..45e1d7ece7 100644 --- a/designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java +++ b/designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java @@ -1,21 +1,5 @@ package com.fr.design.write.submit; -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.Container; -import java.awt.Dialog; -import java.awt.event.ActionEvent; - -import javax.swing.BorderFactory; -import javax.swing.JDialog; -import javax.swing.JPanel; -import javax.swing.JTable; -import javax.swing.SwingUtilities; -import javax.swing.SwingWorker; -import javax.swing.table.DefaultTableCellRenderer; -import javax.swing.table.TableCellRenderer; -import javax.swing.table.TableColumn; - import com.fr.cache.list.IntList; import com.fr.data.ClassSubmitJob; import com.fr.design.actions.UpdateAction; @@ -30,13 +14,16 @@ import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UIBasicSpinner; +import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; -import com.fr.design.mainframe.*; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.ElementCasePane; +import com.fr.design.mainframe.JTemplate; +import com.fr.design.mainframe.JWorkBook; import com.fr.design.selection.SelectionEvent; import com.fr.design.selection.SelectionListener; - import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.FloatSelection; import com.fr.grid.selection.Selection; @@ -45,411 +32,423 @@ import com.fr.stable.ColumnRowGroup; import com.fr.stable.StringUtils; import com.fr.write.DMLConfigJob; +import javax.swing.*; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.TableColumn; +import java.awt.*; +import java.awt.event.ActionEvent; + public class SmartInsertDBManipulationPane extends DBManipulationPane { - private static final Selection NO_SELECTION = new CellSelection(-1, -1, -1, -1); - private ElementCasePane ePane; - private static int CELL_GROUP_LIMIT = 6; + private static final Selection NO_SELECTION = new CellSelection(-1, -1, -1, -1); + private ElementCasePane ePane; + private static int CELL_GROUP_LIMIT = 6; private static int TOP_PADDING = 30; private static int LEFT_COLUMN_MAX_WIDTH = 40; - public SmartInsertDBManipulationPane(ElementCasePane ePane) { - super(ValueEditorPaneFactory.extendedCellGroupEditors()); - this.ePane = ePane; - } + public SmartInsertDBManipulationPane(ElementCasePane ePane) { + super(ValueEditorPaneFactory.extendedCellGroupEditors()); + this.ePane = ePane; + } public SmartInsertDBManipulationPane() { super(ValueEditorPaneFactory.extendedCellGroupEditors()); - init(); + init(); + } + + private void init() { + JTemplate jTemplate = DesignerContext.getDesignerFrame().getSelectedJTemplate(); + this.ePane = ((JWorkBook) jTemplate).getEditingElementCasePane(); + } + + @Override + protected SubmitJobListPane createSubmitJobListPane() { + return new SmartInsertSubmitJobListPane(); + } + + class SmartInsertSubmitJobListPane extends SubmitJobListPane { + + public SmartInsertSubmitJobListPane() { + super(ePane); + } + + public void hideParentDialog() { + hideDialog4AddCellAction(); + } + + public void showParentDialog() { + showDialogAfterAddCellAction(); + } + + @Override + public NameableCreator[] createNameableCreators() { + return new NameableCreator[]{ + new NameObjectCreator(com.fr.design.i18n.Toolkit.i18nTextArray(new String[]{"Submit", "Event"}), + "/com/fr/web/images/reportlet.png", + DMLConfigJob.class, + SmartInsertDMLJobPane.class), + new NameObjectCreator(com.fr.design.i18n.Toolkit.i18nTextArray(new String[]{"Custom", "Event"}), + "/com/fr/web/images/reportlet.png", + ClassSubmitJob.class, + CustomSubmitJobPane.class)}; + } + } + + @Override + protected UpdateAction[] getActions() { + return new UpdateAction[]{ + new SmartAddFieldsAction(), + new AddFieldAction(), + new SmartAddCellAction(), + new SmartAddCellGroupAction(), + new BatchModCellAction(), + new RemoveFieldAction() + }; + } + + public class BatchModCellAction extends UpdateAction { + public BatchModCellAction() { + this.setName(com.fr.design.i18n.Toolkit.i18nText("RWA-Batch_Modify_Cells")); + } + + /** + * 执行事件 + * + * @param evt 事件对象 + */ + public void actionPerformed(ActionEvent evt) { + BasicPane bPane = new BasicPane() { + @Override + protected String title4PopupWindow() { + return com.fr.design.i18n.Toolkit.i18nText("RWA-Batch_Modify_Cells"); + } + }; + bPane.setLayout(FRGUIPaneFactory.createBorderLayout()); + bPane.setBorder(BorderFactory.createEmptyBorder(TOP_PADDING, 0, 0, 0)); + final UIBasicSpinner columnSpinner = new UIBasicSpinner(); + final UIBasicSpinner rowSpinner = new UIBasicSpinner(); + Component[][] coms = new Component[][]{{new UILabel(com.fr.design.i18n.Toolkit.i18nText("RWA-Row_Offset")), rowSpinner}, {new UILabel(com.fr.design.i18n.Toolkit.i18nText("RWA-Column_Offset")), columnSpinner}}; + double p = TableLayout.PREFERRED; + double f = TableLayout.FILL; + bPane.add(TableLayoutHelper.createTableLayoutPane(coms, new double[]{p, p}, new double[]{p, f}), BorderLayout.NORTH); + BasicDialog dlg = bPane.showSmallWindow(SwingUtilities.getWindowAncestor(SmartInsertDBManipulationPane.this), new DialogActionAdapter() { + public void doOk() { + int row_offset = ((Number) rowSpinner.getValue()).intValue(); + int column_offset = ((Number) columnSpinner.getValue()).intValue(); + KeyColumnTableModel model = (KeyColumnTableModel) keyColumnValuesTable.getModel(); + int[] selectedRows = keyColumnValuesTable.getSelectedRows(); + // 如果一行都没选中,取所有的行 + if (selectedRows.length == 0) { + selectedRows = IntList.range(model.getRowCount()); + } + for (int i = 0; i < selectedRows.length; i++) { + int row = selectedRows[i]; + KeyColumnNameValue kcnv = model.getKeyColumnNameValue(row); + if (kcnv.cv.obj instanceof ColumnRow) { + ColumnRow or = (ColumnRow) kcnv.cv.obj; + int n_column = or.getColumn() + column_offset; + if (n_column < 0) { + n_column = 0; + } + int n_row = or.getRow() + row_offset; + if (n_row < 0) { + n_row = 0; + } + kcnv.cv.obj = ColumnRow.valueOf(n_column, n_row); + } + } + model.fireTableDataChanged(); + keyColumnValuesTable.validate(); + for (int i = 0; i < selectedRows.length; i++) { + keyColumnValuesTable.addRowSelectionInterval(selectedRows[i], selectedRows[i]); + } + } + }); + dlg.setVisible(true); + } + } + + public class SmartAddCellAction extends UpdateAction { + public SmartAddCellAction() { + this.setName(com.fr.design.i18n.Toolkit.i18nText("RWA-Smart_Add_Cells")); + } + + /** + * 执行事件 + * + * @param evt 事件s + */ + public void actionPerformed(ActionEvent evt) { + showCellWindow(false); + } } - private void init() { - JTemplate jTemplate = DesignerContext.getDesignerFrame().getSelectedJTemplate(); - this.ePane = ((JWorkBook) jTemplate).getEditingElementCasePane(); - } - - @Override - protected SubmitJobListPane createSubmitJobListPane() { - return new SmartInsertSubmitJobListPane(); - } - - class SmartInsertSubmitJobListPane extends SubmitJobListPane { - - public SmartInsertSubmitJobListPane() { - super(ePane); - } - - public void hideParentDialog() { - hideDialog4AddCellAction(); - } - - public void showParentDialog() { - showDialogAfterAddCellAction(); - } - - @Override - public NameableCreator[] createNameableCreators() { - return new NameableCreator[] { - new NameObjectCreator(com.fr.design.i18n.Toolkit.i18nTextArray(new String[]{"Submit", "Event"}), - "/com/fr/web/images/reportlet.png", - DMLConfigJob.class, - SmartInsertDMLJobPane.class), - new NameObjectCreator(com.fr.design.i18n.Toolkit.i18nTextArray(new String[]{"Custom", "Event"}), - "/com/fr/web/images/reportlet.png", - ClassSubmitJob.class, - CustomSubmitJobPane.class) }; - } - } - - @Override - protected UpdateAction[] getActions() { - return new UpdateAction[] { - new SmartAddFieldsAction(), - new AddFieldAction(), - new SmartAddCellAction(), - new SmartAddCellGroupAction(), - new BatchModCellAction(), - new RemoveFieldAction() - }; - } - - public class BatchModCellAction extends UpdateAction { - public BatchModCellAction() { - this.setName(com.fr.design.i18n.Toolkit.i18nText("RWA-Batch_Modify_Cells")); - } - - /** - * 执行事件 - * @param evt 事件对象 - */ - public void actionPerformed(ActionEvent evt) { - BasicPane bPane = new BasicPane() { - @Override - protected String title4PopupWindow() { - return com.fr.design.i18n.Toolkit.i18nText("RWA-Batch_Modify_Cells"); - } - }; - bPane.setLayout(FRGUIPaneFactory.createBorderLayout()); - bPane.setBorder(BorderFactory.createEmptyBorder(TOP_PADDING, 0, 0, 0)); - final UIBasicSpinner columnSpinner = new UIBasicSpinner(); - final UIBasicSpinner rowSpinner = new UIBasicSpinner(); - Component[][] coms = new Component[][] { { new UILabel(com.fr.design.i18n.Toolkit.i18nText("RWA-Row_Offset")), rowSpinner },{ new UILabel(com.fr.design.i18n.Toolkit.i18nText("RWA-Column_Offset")), columnSpinner } }; - double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - bPane.add(TableLayoutHelper.createTableLayoutPane(coms, new double[]{p, p}, new double[]{p, f}), BorderLayout.NORTH); - BasicDialog dlg = bPane.showSmallWindow(SwingUtilities.getWindowAncestor(SmartInsertDBManipulationPane.this), new DialogActionAdapter() { - public void doOk() { - int row_offset = ((Number)rowSpinner.getValue()).intValue(); - int column_offset = ((Number)columnSpinner.getValue()).intValue(); - KeyColumnTableModel model = (KeyColumnTableModel)keyColumnValuesTable.getModel(); - int[] selectedRows = keyColumnValuesTable.getSelectedRows(); - // 如果一行都没选中,取所有的行 - if (selectedRows.length == 0) { - selectedRows = IntList.range(model.getRowCount()); - } - for (int i = 0; i < selectedRows.length; i++) { - int row = selectedRows[i]; - KeyColumnNameValue kcnv = model.getKeyColumnNameValue(row); - if (kcnv.cv.obj instanceof ColumnRow) { - ColumnRow or = (ColumnRow)kcnv.cv.obj; - int n_column = or.getColumn() + column_offset; - if (n_column < 0) { - n_column = 0; - } - int n_row = or.getRow() + row_offset; - if (n_row < 0) { - n_row = 0; - } - kcnv.cv.obj = ColumnRow.valueOf(n_column, n_row); - } - } - model.fireTableDataChanged(); - keyColumnValuesTable.validate(); - for (int i = 0; i < selectedRows.length; i++) { - keyColumnValuesTable.addRowSelectionInterval(selectedRows[i], selectedRows[i]); - } - } - }); - dlg.setVisible(true); - } - } - - public class SmartAddCellAction extends UpdateAction { - public SmartAddCellAction() { - this.setName(com.fr.design.i18n.Toolkit.i18nText("RWA-Smart_Add_Cells")); - } - - /** - * 执行事件 - * @param evt 事件s - */ - public void actionPerformed(ActionEvent evt) { - showCellWindow(false); - } - } - - public class SmartAddCellGroupAction extends UpdateAction { - public SmartAddCellGroupAction() { - this.setName(com.fr.design.i18n.Toolkit.i18nText("RWA-Smart_Add_Cell_Group")); - } - - /** - * 智能添加单元格组 - * @param e 事件s - */ - public void actionPerformed(ActionEvent e) { - showCellWindow(true); - } - } - - /** - * 切换到单元格窗口,设置属性面板不可编辑 - * @param isCellGroup 判断是否单元格组 - */ - - private void showCellWindow(boolean isCellGroup){ - if (ePane == null) { - return; - } - - BasicPane bPane = new SmartJTablePane4DB(keyColumnValuesTable.getTableModel4SmartAddCell(), ePane, isCellGroup); - - // ReportWriteAttrDialog.this.setVisible(false); - hideDialog4AddCellAction(); - /* - * 当前的ReportPane不可编辑,不可切换Sheet,加GridSelectionChangeListener - */ - //必须先设置面板不可编辑才能释放单元格选中 - ePane.setEditable(false); - ePane.setSelection(NO_SELECTION); - ePane.getGrid().setNotShowingTableSelectPane(false); - - BasicDialog dlg = bPane.showWindow(SwingUtilities.getWindowAncestor(SmartInsertDBManipulationPane.this)); - - dlg.setModal(false); - dlg.setVisible(true); - } - - private void showDialogAfterAddCellAction() { - Container dialog = this; - if (parentPane != null && parentPane.getContentDBManiPane() instanceof SmartInsertDBManipulationPane && parentPane.getContentDBManiPane() != this) { - ((SmartInsertDBManipulationPane)parentPane.getContentDBManiPane()).showDialogAfterAddCellAction(); - } - while (dialog.getParent() != null) { - dialog = dialog.getParent(); - if (dialog instanceof Dialog) { - //这边需要另起一个线程设置可见,防止阻塞 - final Container finalDialog = dialog; - SwingWorker worker = new SwingWorker() { - @Override - protected Object doInBackground() throws Exception { - finalDialog.setVisible(true); - return null; - } - }; - worker.execute(); - } - } - } - - private void hideDialog4AddCellAction() { - Container dialog = this; - if (parentPane != null && parentPane.getContentDBManiPane() instanceof SmartInsertDBManipulationPane && parentPane.getContentDBManiPane() != this) { - ((SmartInsertDBManipulationPane)parentPane.getContentDBManiPane()).hideDialog4AddCellAction(); - } - while (dialog.getParent() != null) { - dialog = dialog.getParent(); - if (dialog instanceof Dialog) { - // 条件属性中添加的控件的话有两层dialog,需要都隐藏 - dialog.setVisible(false); - } - } - } - - - /** - * 检测是否合法 - * @throws Exception - */ - public void checkValid() throws Exception { - KeyColumnTableModel model = (KeyColumnTableModel)keyColumnValuesTable.getModel(); - int cnt = model.getRowCount(); - int groupLength = -1; - for (int i=0; i= model.getRowCount()) { - return; - } - KeyColumnNameValue kcv = model.getKeyColumnNameValue(editingRowIndex); - ElementCasePane currentReportPane = (ElementCasePane)e.getSource(); - Selection selection = currentReportPane.getSelection(); - if (selection == NO_SELECTION || selection instanceof FloatSelection) { - return; - } - CellSelection cellselection = (CellSelection)selection; - kcv.cv.obj = ColumnRow.valueOf(cellselection.getColumn(), cellselection.getRow()); - - if (editingRowIndex >= model.getRowCount() - 1) { - setEditingRowIndex(0); - } else { - setEditingRowIndex(editingRowIndex + 1); - } - - model.fireTableDataChanged(); - - } - - }; - - /** - * 单元格组的点选格子事件 - */ - private SelectionListener groupListener = new SelectionListener() { - @Override - public void selectionChanged(SelectionEvent e) { - KeyColumnTableModel model = (KeyColumnTableModel)table.getModel(); - if (editingRowIndex < 0 || editingRowIndex >= model.getRowCount()) { - return; - } - KeyColumnNameValue kcv = model.getKeyColumnNameValue(editingRowIndex); - ElementCasePane currentReportPane = (ElementCasePane)e.getSource(); - Selection selection = currentReportPane.getSelection(); - if (selection == NO_SELECTION || selection instanceof FloatSelection) { - return; - } - CellSelection cellselection = (CellSelection)selection; - Object oriValue = kcv.cv.obj; - ColumnRowGroup newValue = getColumnRowGroupValue(oriValue); - - // 要考虑多选的情况 要结合之前的看看 可能是增加 也可能需要减少 - ColumnRowGroup add = new ColumnRowGroup(); - int removeCount = 0; - if (oriCellSelection != null && isSameStartPoint(cellselection, oriCellSelection)) { + if (isCellGroup) { + column2.setCellRenderer(new ColumnRowGroupCellRenderer2()); + column2.setCellEditor(new ColumnValueEditor(ValueEditorPaneFactory.cellGroupEditor())); + } else { + column2.setCellRenderer(new SelectedColumnValueTableCellRenderer()); + } + } + + /** + * 检查是否合法 + * + * @throws Exception + */ + public void checkValid() throws Exception { + SmartInsertDBManipulationPane.this.checkValid(); + } + + private SelectionListener listener = new SelectionListener() { + + @Override + public void selectionChanged(SelectionEvent e) { + KeyColumnTableModel model = (KeyColumnTableModel) table.getModel(); + if (editingRowIndex < 0 || editingRowIndex >= model.getRowCount()) { + return; + } + KeyColumnNameValue kcv = model.getKeyColumnNameValue(editingRowIndex); + ElementCasePane currentReportPane = (ElementCasePane) e.getSource(); + Selection selection = currentReportPane.getSelection(); + if (selection == NO_SELECTION || selection instanceof FloatSelection) { + return; + } + CellSelection cellselection = (CellSelection) selection; + kcv.cv.obj = ColumnRow.valueOf(cellselection.getColumn(), cellselection.getRow()); + + if (editingRowIndex >= model.getRowCount() - 1) { + setEditingRowIndex(0); + } else { + setEditingRowIndex(editingRowIndex + 1); + } + + model.fireTableDataChanged(); + + } + + }; + + /** + * 单元格组的点选格子事件 + */ + private SelectionListener groupListener = new SelectionListener() { + @Override + public void selectionChanged(SelectionEvent e) { + KeyColumnTableModel model = (KeyColumnTableModel) table.getModel(); + if (editingRowIndex < 0 || editingRowIndex >= model.getRowCount()) { + return; + } + KeyColumnNameValue kcv = model.getKeyColumnNameValue(editingRowIndex); + ElementCasePane currentReportPane = (ElementCasePane) e.getSource(); + Selection selection = currentReportPane.getSelection(); + if (selection == NO_SELECTION || selection instanceof FloatSelection) { + return; + } + CellSelection cellselection = (CellSelection) selection; + Object oriValue = kcv.cv.obj; + ColumnRowGroup newValue = getColumnRowGroupValue(oriValue); + + // 要考虑多选的情况 要结合之前的看看 可能是增加 也可能需要减少 + ColumnRowGroup add = new ColumnRowGroup(); + int removeCount = 0; + if (oriCellSelection != null && isSameStartPoint(cellselection, oriCellSelection)) { removeCount = dealDragSelection(add, cellselection); - } else if (cellselection.getSelectedType() == CellSelection.CHOOSE_ROW || cellselection.getSelectedType() == CellSelection.CHOOSE_COLUMN) { + } else if (cellselection.getSelectedType() == CellSelection.CHOOSE_ROW || cellselection.getSelectedType() == CellSelection.CHOOSE_COLUMN) { dealSelectColRow(add, cellselection); } else { - add.addColumnRow(ColumnRow.valueOf(cellselection.getColumn(), cellselection.getRow())); - } + add.addColumnRow(ColumnRow.valueOf(cellselection.getColumn(), cellselection.getRow())); + } - if (add.getSize() > 0) { - newValue.addAll(add); - } else if (removeCount > 0) { - newValue.splice(newValue.getSize()-removeCount, removeCount); - } + if (add.getSize() > 0) { + newValue.addAll(add); + } else if (removeCount > 0) { + newValue.splice(newValue.getSize() - removeCount, removeCount); + } - kcv.cv.obj = newValue; + kcv.cv.obj = newValue; - model.fireTableDataChanged(); + model.fireTableDataChanged(); - oriCellSelection = cellselection; - } + oriCellSelection = cellselection; + } - private ColumnRowGroup getColumnRowGroupValue(Object oriValue) { - ColumnRowGroup newValue = new ColumnRowGroup(); - if (oriValue instanceof ColumnRowGroup) { - newValue.addAll((ColumnRowGroup)oriValue); - } else if (oriValue instanceof ColumnRow) { - newValue.addColumnRow((ColumnRow) oriValue); - } - return newValue; - } + private ColumnRowGroup getColumnRowGroupValue(Object oriValue) { + ColumnRowGroup newValue = new ColumnRowGroup(); + if (oriValue instanceof ColumnRowGroup) { + newValue.addAll((ColumnRowGroup) oriValue); + } else if (oriValue instanceof ColumnRow) { + newValue.addColumnRow((ColumnRow) oriValue); + } + return newValue; + } - private boolean isSameStartPoint(CellSelection cs1, CellSelection cs2) { - return cs1.getColumn() == cs2.getColumn() && cs1.getRow() == cs2.getRow(); - } + private boolean isSameStartPoint(CellSelection cs1, CellSelection cs2) { + return cs1.getColumn() == cs2.getColumn() && cs1.getRow() == cs2.getRow(); + } private int dealDragSelection(ColumnRowGroup add, CellSelection cellselection) { int removeCount = 0; if (cellselection.getRowSpan() == oriCellSelection.getRowSpan() + 1) { - for (int i=0; i= CELL_GROUP_LIMIT) { - this.setText("[" + com.fr.design.i18n.Toolkit.i18nTextArray(new String[]{"Has_Selected", "Classifier-Ge", "Cell"}, - new String[]{((ColumnRowGroup)cv).getSize()+StringUtils.EMPTY, StringUtils.EMPTY}) + "]"); - tip = cv.toString() + " " + tip; - } else if (cv != null) { - this.setText(cv.toString()); - } else { - this.setText(StringUtils.EMPTY); - } - } - - this.setToolTipText(tip); - - if (row == SmartJTablePane4DB.this.editingRowIndex) { - this.setBackground(java.awt.Color.cyan); - } else { - this.setBackground(java.awt.Color.WHITE); - } - - return this; - } - } - } + } + + @Override + public void showDialog() { + Container container = SmartJTablePane4DB.this; + while (container.getParent() != null) { + container = container.getParent(); + if (container instanceof JDialog) { + container.setVisible(false); + } + } + updateUpdateCheckBoxEnable(); + ((SmartInsertDBManipulationPane) dialog).showDialogAfterAddCellAction(); + } + }; + + /* + * ColumnValueTableCellRenderer + */ + private class SelectedColumnValueTableCellRenderer extends DefaultTableCellRenderer { + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { + super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + + if (value instanceof ColumnValue) { + if (((ColumnValue) value).obj != null) { + this.setText(((ColumnValue) value).obj.toString()); + } else { + this.setText(StringUtils.EMPTY); + } + } + + if (row == SmartJTablePane4DB.this.editingRowIndex) { + this.setBackground(java.awt.Color.cyan); + } else { + this.setBackground(java.awt.Color.WHITE); + } + + return this; + } + } + + private class ColumnRowGroupCellRenderer2 extends DefaultTableCellRenderer { + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { + super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + + String tip = com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Double_Click_Edit_OR_Clear"); + + if (value instanceof ColumnValue) { + Object cv = ((ColumnValue) value).obj; + if (cv instanceof ColumnRowGroup && ((ColumnRowGroup) cv).getSize() >= CELL_GROUP_LIMIT) { + this.setText("[" + + Toolkit.i18nText("Fine-Design_Write_Select_Cell_Count", ((ColumnRowGroup) cv).getSize()) + + "]"); + tip = cv.toString() + " " + tip; + } else if (cv != null) { + this.setText(cv.toString()); + } else { + this.setText(StringUtils.EMPTY); + } + } + + this.setToolTipText(tip); + + if (row == SmartJTablePane4DB.this.editingRowIndex) { + this.setBackground(java.awt.Color.cyan); + } else { + this.setBackground(java.awt.Color.WHITE); + } + + return this; + } + } + } } \ No newline at end of file