From c5c982f7a556d7835806c844f295fb054a5e41fe Mon Sep 17 00:00:00 2001 From: MoMeak Date: Mon, 4 Sep 2017 15:24:17 +0800 Subject: [PATCH 01/13] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/ElementCasePane.java | 6 ++++-- .../mainframe/ReportComponentComposite.java | 2 +- .../fr/design/gui/ibutton/UIToggleButton.java | 9 ++++++--- .../com/fr/design/gui/ispinner/UISpinner.java | 3 +++ .../design/style/color/NewColorSelectBox.java | 2 +- .../src/com/fr/start/BaseDesigner.java | 8 ++++---- .../src/com/fr/design/mainframe/FormArea.java | 20 +++++++++++-------- 7 files changed, 31 insertions(+), 19 deletions(-) diff --git a/designer/src/com/fr/design/mainframe/ElementCasePane.java b/designer/src/com/fr/design/mainframe/ElementCasePane.java index a04de9538..d38a32e1c 100644 --- a/designer/src/com/fr/design/mainframe/ElementCasePane.java +++ b/designer/src/com/fr/design/mainframe/ElementCasePane.java @@ -1325,7 +1325,7 @@ public abstract class ElementCasePane extends Tar * @return 返回正在编辑的状态. */ public EditingState createEditingState() { - return new ElementCaseEditingState(this.selection, this.verScrollBar.getValue(), this.horScrollBar.getValue()); + return new ElementCaseEditingState(this.selection, this.verScrollBar.getValue(), this.horScrollBar.getValue(), this.getResolution()); } public void setCellNeedTOFormat(CellSelection selection) { @@ -1341,10 +1341,12 @@ public abstract class ElementCasePane extends Tar protected Selection selection; protected int verticalValue = 0; protected int horizontalValue = 0; + protected int resolution = ScreenResolution.getScreenResolution(); - protected ElementCaseEditingState(Selection selection, int verticalValue, int horizontalValue) { + protected ElementCaseEditingState(Selection selection, int verticalValue, int horizontalValue, int resolution) { try { this.selection = selection.clone(); + this.resolution = resolution; } catch (CloneNotSupportedException e) { throw new RuntimeException(e); } diff --git a/designer/src/com/fr/design/mainframe/ReportComponentComposite.java b/designer/src/com/fr/design/mainframe/ReportComponentComposite.java index 41154d75b..96255c5dc 100644 --- a/designer/src/com/fr/design/mainframe/ReportComponentComposite.java +++ b/designer/src/com/fr/design/mainframe/ReportComponentComposite.java @@ -111,7 +111,7 @@ public class ReportComponentComposite extends JComponent { return; } centerCardPane.populate(workbook.getTemplateReport(newIndex)); - +// (ElementCasePane)templateStateList.get(newIndex-2).revert(); if (parentContainer != null) { parentContainer.setDownPane(ReportComponentComposite.this); } diff --git a/designer_base/src/com/fr/design/gui/ibutton/UIToggleButton.java b/designer_base/src/com/fr/design/gui/ibutton/UIToggleButton.java index 0a766e2e9..31519c07e 100644 --- a/designer_base/src/com/fr/design/gui/ibutton/UIToggleButton.java +++ b/designer_base/src/com/fr/design/gui/ibutton/UIToggleButton.java @@ -1,8 +1,6 @@ package com.fr.design.gui.ibutton; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.Shape; +import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; @@ -125,6 +123,11 @@ public class UIToggleButton extends UIButton implements GlobalNameObserver{ } } + @Override + public Insets getInsets() { + return new Insets(0, 0, 0, 0); + } + @Override protected void paintBorder(Graphics g) { if (!isBorderPainted()) { diff --git a/designer_base/src/com/fr/design/gui/ispinner/UISpinner.java b/designer_base/src/com/fr/design/gui/ispinner/UISpinner.java index d2b85be2c..2c1fd28c3 100644 --- a/designer_base/src/com/fr/design/gui/ispinner/UISpinner.java +++ b/designer_base/src/com/fr/design/gui/ispinner/UISpinner.java @@ -62,6 +62,9 @@ public class UISpinner extends JPanel implements UIObserver, GlobalNameObserver if (uiObserverListener == null) { return; } + if (globalNameListener != null && shouldResponseNameListener()){ + globalNameListener.setGlobalName(spinnerName); + } uiObserverListener.doChange(); } }); diff --git a/designer_base/src/com/fr/design/style/color/NewColorSelectBox.java b/designer_base/src/com/fr/design/style/color/NewColorSelectBox.java index ce76fe72d..2286432fe 100644 --- a/designer_base/src/com/fr/design/style/color/NewColorSelectBox.java +++ b/designer_base/src/com/fr/design/style/color/NewColorSelectBox.java @@ -38,7 +38,7 @@ public class NewColorSelectBox extends AbstractSelectBox implements UIObs if(uiObserverListener == null){ return; } - if (globalNameListener != null && shouldResponseNameListener()){ + if (globalNameListener != null && shouldResponseNameListener() && globalNameListener.getGlobalName().length() != 0){ globalNameListener.setGlobalName(newColorSelectBoxName); } uiObserverListener.doChange(); diff --git a/designer_base/src/com/fr/start/BaseDesigner.java b/designer_base/src/com/fr/start/BaseDesigner.java index cd8b3f3b0..54630e28f 100644 --- a/designer_base/src/com/fr/start/BaseDesigner.java +++ b/designer_base/src/com/fr/start/BaseDesigner.java @@ -57,10 +57,10 @@ public abstract class BaseDesigner extends ToolBarMenuDock { DesignUtils.setPort(getStartPort()); // 如果端口被占用了 说明程序已经运行了一次,也就是说,已经建立一个监听服务器,现在只要给服务器发送命令就好了 - if (DesignUtils.isStarted()) { - DesignUtils.clientSend(args); - return; - } +// if (DesignUtils.isStarted()) { +// DesignUtils.clientSend(args); +// return; +// } //下面这两句的位置不能随便调换,因为会影响语言切换的问题 initLanguage(); diff --git a/designer_form/src/com/fr/design/mainframe/FormArea.java b/designer_form/src/com/fr/design/mainframe/FormArea.java index e35657c23..0ee2f09ea 100644 --- a/designer_form/src/com/fr/design/mainframe/FormArea.java +++ b/designer_form/src/com/fr/design/mainframe/FormArea.java @@ -119,7 +119,7 @@ public class FormArea extends JComponent implements ScrollRulerComponent { // slidePane = new UINumberSlidePane(SLIDER_MIN, SLIDER_FLOAT); // slidePane.setPreferredSize(new Dimension(260,20)); slidePane = JFormSliderPane.getInstance(); - slidePane.setPreferredSize(new Dimension(350, 20)); + slidePane.setPreferredSize(new Dimension(200, 0)); JPanel resizePane = TableLayoutHelper.createCommonTableLayoutPane(new JComponent[][]{ @@ -130,8 +130,8 @@ public class FormArea extends JComponent implements ScrollRulerComponent { setWidgetsConfig(); // 先初始话滑块及对应事件,然后获取分辨率调整容器的显示大小 slidePane.setEnabled(false); - slidePane.setVisible(true); - initTransparent(); + slidePane.setVisible(false); +// initTransparent(); initCalculateSize(); } @@ -162,11 +162,15 @@ public class FormArea extends JComponent implements ScrollRulerComponent { jf.resolution = (int) value; jf.getFormDesign().setResolution((int) value); jf.getFormDesign().getArea().resolution = (int) value; - reCalculateRoot(value, true); - JTemplate form = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - if (form != null) { - form.fireTargetModified(); - } + double times = (double) resolution / 100; +// widthPane.setValue((int)(widthPane.getValue() * times)); + changeWidthPaneValue((int)(widthPane.getValue() * times)); + changeHeightPaneValue((int)(heightPane.getValue() * times)); +// reCalculateRoot(value, true); +// JTemplate form = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); +// if (form != null) { +// form.fireTargetModified(); +// } } }; From 05d6daf799b1b48e61b6f63c905db134d4397f13 Mon Sep 17 00:00:00 2001 From: MoMeak Date: Mon, 4 Sep 2017 15:29:07 +0800 Subject: [PATCH 02/13] rollback --- .../src/com/fr/design/gui/ispinner/UISpinner.java | 3 --- .../src/com/fr/design/style/color/NewColorSelectBox.java | 2 +- designer_base/src/com/fr/start/BaseDesigner.java | 8 ++++---- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/designer_base/src/com/fr/design/gui/ispinner/UISpinner.java b/designer_base/src/com/fr/design/gui/ispinner/UISpinner.java index 2c1fd28c3..d2b85be2c 100644 --- a/designer_base/src/com/fr/design/gui/ispinner/UISpinner.java +++ b/designer_base/src/com/fr/design/gui/ispinner/UISpinner.java @@ -62,9 +62,6 @@ public class UISpinner extends JPanel implements UIObserver, GlobalNameObserver if (uiObserverListener == null) { return; } - if (globalNameListener != null && shouldResponseNameListener()){ - globalNameListener.setGlobalName(spinnerName); - } uiObserverListener.doChange(); } }); diff --git a/designer_base/src/com/fr/design/style/color/NewColorSelectBox.java b/designer_base/src/com/fr/design/style/color/NewColorSelectBox.java index 2286432fe..ce76fe72d 100644 --- a/designer_base/src/com/fr/design/style/color/NewColorSelectBox.java +++ b/designer_base/src/com/fr/design/style/color/NewColorSelectBox.java @@ -38,7 +38,7 @@ public class NewColorSelectBox extends AbstractSelectBox implements UIObs if(uiObserverListener == null){ return; } - if (globalNameListener != null && shouldResponseNameListener() && globalNameListener.getGlobalName().length() != 0){ + if (globalNameListener != null && shouldResponseNameListener()){ globalNameListener.setGlobalName(newColorSelectBoxName); } uiObserverListener.doChange(); diff --git a/designer_base/src/com/fr/start/BaseDesigner.java b/designer_base/src/com/fr/start/BaseDesigner.java index 54630e28f..cd8b3f3b0 100644 --- a/designer_base/src/com/fr/start/BaseDesigner.java +++ b/designer_base/src/com/fr/start/BaseDesigner.java @@ -57,10 +57,10 @@ public abstract class BaseDesigner extends ToolBarMenuDock { DesignUtils.setPort(getStartPort()); // 如果端口被占用了 说明程序已经运行了一次,也就是说,已经建立一个监听服务器,现在只要给服务器发送命令就好了 -// if (DesignUtils.isStarted()) { -// DesignUtils.clientSend(args); -// return; -// } + if (DesignUtils.isStarted()) { + DesignUtils.clientSend(args); + return; + } //下面这两句的位置不能随便调换,因为会影响语言切换的问题 initLanguage(); From d6e3c6045c26bb8d3fb4b4cfe8bc03b2cdc8d913 Mon Sep 17 00:00:00 2001 From: MoMeak Date: Tue, 5 Sep 2017 11:32:19 +0800 Subject: [PATCH 03/13] =?UTF-8?q?REPORT-2897=209.0=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E4=BF=AE=E6=94=B9=20=E7=BC=A9=E6=94=BE=E6=9D=A1?= =?UTF-8?q?=E5=9C=A8=E4=B8=8D=E5=90=8C=E7=9A=84sheet=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E4=B8=8D=E5=BA=94=E8=AF=A5=E7=BB=A7=E6=89=BF=20=E5=8E=BB?= =?UTF-8?q?=E6=8E=89=E8=A1=A8=E5=8D=95=E7=BC=A9=E6=94=BE=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/ElementCasePane.java | 9 ++++++--- .../design/mainframe/ReportComponentComposite.java | 13 +++++++++++++ designer/src/com/fr/poly/PolyDesigner.java | 7 +++++-- .../src/com/fr/design/mainframe/JSliderPane.java | 4 ++++ .../src/com/fr/design/mainframe/FormArea.java | 6 +++--- 5 files changed, 31 insertions(+), 8 deletions(-) diff --git a/designer/src/com/fr/design/mainframe/ElementCasePane.java b/designer/src/com/fr/design/mainframe/ElementCasePane.java index a04de9538..1559c2352 100644 --- a/designer/src/com/fr/design/mainframe/ElementCasePane.java +++ b/designer/src/com/fr/design/mainframe/ElementCasePane.java @@ -1325,7 +1325,7 @@ public abstract class ElementCasePane extends Tar * @return 返回正在编辑的状态. */ public EditingState createEditingState() { - return new ElementCaseEditingState(this.selection, this.verScrollBar.getValue(), this.horScrollBar.getValue()); + return new ElementCaseEditingState(this.selection, this.verScrollBar.getValue(), this.horScrollBar.getValue(), this.resolution); } public void setCellNeedTOFormat(CellSelection selection) { @@ -1341,8 +1341,9 @@ public abstract class ElementCasePane extends Tar protected Selection selection; protected int verticalValue = 0; protected int horizontalValue = 0; + protected int resolution = ScreenResolution.getScreenResolution(); - protected ElementCaseEditingState(Selection selection, int verticalValue, int horizontalValue) { + protected ElementCaseEditingState(Selection selection, int verticalValue, int horizontalValue, int resolution) { try { this.selection = selection.clone(); } catch (CloneNotSupportedException e) { @@ -1350,6 +1351,7 @@ public abstract class ElementCasePane extends Tar } this.verticalValue = verticalValue; this.horizontalValue = horizontalValue; + this.resolution = resolution; } @Override @@ -1363,7 +1365,8 @@ public abstract class ElementCasePane extends Tar ElementCasePane.this.getVerticalScrollBar().setValue(this.verticalValue); ElementCasePane.this.getHorizontalScrollBar().setValue(this.horizontalValue); - +// ElementCasePane.this.setResolution(this.resolution); + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().setScale(this.resolution); // 重绘. ElementCasePane.this.repaint(); } diff --git a/designer/src/com/fr/design/mainframe/ReportComponentComposite.java b/designer/src/com/fr/design/mainframe/ReportComponentComposite.java index 41154d75b..b8749d128 100644 --- a/designer/src/com/fr/design/mainframe/ReportComponentComposite.java +++ b/designer/src/com/fr/design/mainframe/ReportComponentComposite.java @@ -120,12 +120,16 @@ public class ReportComponentComposite extends JComponent { EditingState reportPaneEditState = templateStateList.get(newIndex); if (reportPaneEditState != null) { reportPaneEditState.revert(); + updateJSlider(); } } else { while (templateStateList.size() <= newIndex) { templateStateList.add(null); } centerCardPane.editingComponet.setSelection(centerCardPane.editingComponet.getDefaultSelectElement()); + if (jSliderContainer != null){ + jSliderContainer.reset(); + } } if (centerCardPane.editingComponet.elementCasePane == null) { @@ -141,6 +145,15 @@ public class ReportComponentComposite extends JComponent { } } + private void updateJSlider(){ + if (centerCardPane.editingComponet.elementCasePane == null) { + jSliderContainer.getShowVal().setValue(centerCardPane.getPolyDezi().getResolution() * HUND / ScreenResolution.getScreenResolution()); + }else { + jSliderContainer.getShowVal().setValue(centerCardPane.editingComponet.elementCasePane.getResolution() * HUND / ScreenResolution.getScreenResolution()); + } + + } + /** * 移除选中状态 * diff --git a/designer/src/com/fr/poly/PolyDesigner.java b/designer/src/com/fr/poly/PolyDesigner.java index fcafd4c8c..ab311457f 100644 --- a/designer/src/com/fr/poly/PolyDesigner.java +++ b/designer/src/com/fr/poly/PolyDesigner.java @@ -687,14 +687,16 @@ public class PolyDesigner extends ReportComponent Date: Tue, 5 Sep 2017 11:44:41 +0800 Subject: [PATCH 04/13] rollback UIToggleButton --- .../src/com/fr/design/gui/ibutton/UIToggleButton.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/designer_base/src/com/fr/design/gui/ibutton/UIToggleButton.java b/designer_base/src/com/fr/design/gui/ibutton/UIToggleButton.java index 31519c07e..b12f1ca7c 100644 --- a/designer_base/src/com/fr/design/gui/ibutton/UIToggleButton.java +++ b/designer_base/src/com/fr/design/gui/ibutton/UIToggleButton.java @@ -123,11 +123,6 @@ public class UIToggleButton extends UIButton implements GlobalNameObserver{ } } - @Override - public Insets getInsets() { - return new Insets(0, 0, 0, 0); - } - @Override protected void paintBorder(Graphics g) { if (!isBorderPainted()) { From dcceb5a4e1736de21fe28ff957fb19ae94afb77b Mon Sep 17 00:00:00 2001 From: MoMeak Date: Tue, 5 Sep 2017 11:45:48 +0800 Subject: [PATCH 05/13] rollback UIToggleButton --- .../src/com/fr/design/gui/ibutton/UIToggleButton.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/gui/ibutton/UIToggleButton.java b/designer_base/src/com/fr/design/gui/ibutton/UIToggleButton.java index b12f1ca7c..0a766e2e9 100644 --- a/designer_base/src/com/fr/design/gui/ibutton/UIToggleButton.java +++ b/designer_base/src/com/fr/design/gui/ibutton/UIToggleButton.java @@ -1,6 +1,8 @@ package com.fr.design.gui.ibutton; -import java.awt.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Shape; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; From b270670f274e03a9f41e22100ec4618b5710489c Mon Sep 17 00:00:00 2001 From: MoMeak Date: Tue, 5 Sep 2017 11:46:31 +0800 Subject: [PATCH 06/13] =?UTF-8?q?REPORT-2897=209.0=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E4=BF=AE=E6=94=B9=20=E7=BC=A9=E6=94=BE=E6=9D=A1?= =?UTF-8?q?=E5=9C=A8=E4=B8=8D=E5=90=8C=E7=9A=84sheet=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E4=B8=8D=E5=BA=94=E8=AF=A5=E7=BB=A7=E6=89=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/mainframe/ReportComponentComposite.java | 1 - 1 file changed, 1 deletion(-) diff --git a/designer/src/com/fr/design/mainframe/ReportComponentComposite.java b/designer/src/com/fr/design/mainframe/ReportComponentComposite.java index 718e92274..d5bc01fa3 100644 --- a/designer/src/com/fr/design/mainframe/ReportComponentComposite.java +++ b/designer/src/com/fr/design/mainframe/ReportComponentComposite.java @@ -111,7 +111,6 @@ public class ReportComponentComposite extends JComponent { return; } centerCardPane.populate(workbook.getTemplateReport(newIndex)); -// (ElementCasePane)templateStateList.get(newIndex-2).revert(); if (parentContainer != null) { parentContainer.setDownPane(ReportComponentComposite.this); } From e567760a28c030d9408afc45f4f8297f12d47f7c Mon Sep 17 00:00:00 2001 From: MoMeak Date: Tue, 5 Sep 2017 14:03:20 +0800 Subject: [PATCH 07/13] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B4=A8=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/ReportComponentComposite.java | 9 +++++---- .../src/com/fr/design/mainframe/FormArea.java | 14 +++++--------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/designer/src/com/fr/design/mainframe/ReportComponentComposite.java b/designer/src/com/fr/design/mainframe/ReportComponentComposite.java index d5bc01fa3..6bad0146e 100644 --- a/designer/src/com/fr/design/mainframe/ReportComponentComposite.java +++ b/designer/src/com/fr/design/mainframe/ReportComponentComposite.java @@ -145,12 +145,13 @@ public class ReportComponentComposite extends JComponent { } private void updateJSlider(){ - if (centerCardPane.editingComponet.elementCasePane == null) { - jSliderContainer.getShowVal().setValue(centerCardPane.getPolyDezi().getResolution() * HUND / ScreenResolution.getScreenResolution()); + int value = 0; + if (centerCardPane.editingComponet.elementCasePane != null) { + value = centerCardPane.editingComponet.elementCasePane.getResolution() * HUND / ScreenResolution.getScreenResolution(); }else { - jSliderContainer.getShowVal().setValue(centerCardPane.editingComponet.elementCasePane.getResolution() * HUND / ScreenResolution.getScreenResolution()); + value = centerCardPane.getPolyDezi().getResolution() * HUND / ScreenResolution.getScreenResolution(); } - + jSliderContainer.getShowVal().setValue(value); } /** diff --git a/designer_form/src/com/fr/design/mainframe/FormArea.java b/designer_form/src/com/fr/design/mainframe/FormArea.java index 9e751e629..cdf92edfe 100644 --- a/designer_form/src/com/fr/design/mainframe/FormArea.java +++ b/designer_form/src/com/fr/design/mainframe/FormArea.java @@ -162,15 +162,11 @@ public class FormArea extends JComponent implements ScrollRulerComponent { jf.resolution = (int) value; jf.getFormDesign().setResolution((int) value); jf.getFormDesign().getArea().resolution = (int) value; - double times = (double) resolution / 100; -// widthPane.setValue((int)(widthPane.getValue() * times)); - changeWidthPaneValue((int)(widthPane.getValue() * times)); - changeHeightPaneValue((int)(heightPane.getValue() * times)); -// reCalculateRoot(value, true); -// JTemplate form = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); -// if (form != null) { -// form.fireTargetModified(); -// } + reCalculateRoot(value, true); + JTemplate form = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); + if (form != null) { + form.fireTargetModified(); + } } }; From 865d0adadcde5fdd60169fa3f812add9eb5830f7 Mon Sep 17 00:00:00 2001 From: plough Date: Tue, 5 Sep 2017 14:06:43 +0800 Subject: [PATCH 08/13] =?UTF-8?q?REPORT-4363=20=E8=A1=A8=E5=8D=95=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E6=A0=8F=E5=9B=BE=E8=A1=A8=E5=92=8C=E6=8E=A7=E4=BB=B6?= =?UTF-8?q?=E7=9A=84=E6=89=A9=E5=B1=95=E6=8C=89=E9=92=AE=EF=BC=8C=E7=82=B9?= =?UTF-8?q?=E5=87=BB=E5=90=8E=EF=BC=8C=E6=89=A9=E5=B1=95=E7=9A=84=E9=83=A8?= =?UTF-8?q?=E5=88=86=E4=BD=8D=E7=BD=AE=E9=94=99=E4=B9=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/FormParaWidgetPane.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/FormParaWidgetPane.java b/designer_form/src/com/fr/design/mainframe/FormParaWidgetPane.java index a5b39ae88..d28233d05 100644 --- a/designer_form/src/com/fr/design/mainframe/FormParaWidgetPane.java +++ b/designer_form/src/com/fr/design/mainframe/FormParaWidgetPane.java @@ -2,6 +2,7 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; import com.fr.design.ExtraDesignClassManager; +import com.fr.design.constants.UIConstants; import com.fr.design.designer.beans.events.DesignerEditListener; import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.design.designer.creator.XCreatorUtils; @@ -152,6 +153,7 @@ public class FormParaWidgetPane extends JPanel { widgetPane.add(eastScrollPane); widgetTypePopupMenu = new UIPopupMenu(); + widgetTypePopupMenu.setBackground(UIConstants.SELECT_TAB); widgetTypePopupMenu.add(widgetPane); } } @@ -167,6 +169,7 @@ public class FormParaWidgetPane extends JPanel { int y = (int) Math.ceil(chartOptions.length / ((double) COMMON_CHAR_NUM)) * (widgetButtonHeight + smallGAP); componentsPara.setPreferredSize(new Dimension(x, y)); chartTypePopupMenu = new UIPopupMenu(); + chartTypePopupMenu.setBackground(UIConstants.SELECT_TAB); chartTypePopupMenu.add(componentsPara); } } @@ -284,8 +287,8 @@ public class FormParaWidgetPane extends JPanel { public void mouseClicked(MouseEvent e) { initChartTypePopUp(); chartTypePopupMenu.show(FormParaWidgetPane.this, - (int) jSeparatorChart.getLocation().getX() + BORDER, - (int) jSeparatorChart.getLocation().getY()); + (int) jSeparatorLayout.getLocation().getX() + BORDER, + (int) jSeparatorLayout.getLocation().getY()); } }); labelPane.add(chartPopUpButton, BorderLayout.EAST); @@ -304,8 +307,8 @@ public class FormParaWidgetPane extends JPanel { public void mouseClicked(MouseEvent e) { initWidgetTypePopUp(); widgetTypePopupMenu.show(FormParaWidgetPane.this, - (int) jSeparatorLayout.getLocation().getX() + BORDER, - (int) jSeparatorLayout.getLocation().getY()); + (int) jSeparatorChart.getLocation().getX() + BORDER, + (int) jSeparatorChart.getLocation().getY()); } }); @@ -316,7 +319,9 @@ public class FormParaWidgetPane extends JPanel { private int calculateWidgetWindowRowNum() { //向上取整 - int rowNum = (int) Math.ceil((double) predifinedwidgeList.size() / (double) preWidgetShowMaxNum); + int eastRowNum = (int) Math.ceil((double) predifinedwidgeList.size() / (double) preWidgetShowMaxNum); + int westRowNum = (int) Math.ceil((double) loadWidgetOptions().length / (double) commonWidgetNum); + int rowNum = Math.max(eastRowNum, westRowNum); rowNum = Math.max(rowNum, 2); rowNum = Math.min(rowNum, preWidgetShowMaxRow); return rowNum; From 5abfa98b1a98c65663b88cd51990932d7a3d0f52 Mon Sep 17 00:00:00 2001 From: MoMeak Date: Tue, 5 Sep 2017 15:19:13 +0800 Subject: [PATCH 09/13] =?UTF-8?q?REPORT-4308=20=E5=8D=95=E5=85=83=E6=A0=BC?= =?UTF-8?q?=E5=B1=9E=E6=80=A7-=E6=A0=B7=E5=BC=8F=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=96=87=E6=9C=AC=E8=87=AA=E5=AE=9A=E4=B9=89=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E6=97=A0=E6=B3=95=E5=AE=9E=E6=97=B6=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/icombobox/TextFontComboBox.java | 125 ++++++++++++++++++ .../com/fr/design/gui/style/FormatPane.java | 15 ++- 2 files changed, 133 insertions(+), 7 deletions(-) create mode 100644 designer_base/src/com/fr/design/gui/icombobox/TextFontComboBox.java diff --git a/designer_base/src/com/fr/design/gui/icombobox/TextFontComboBox.java b/designer_base/src/com/fr/design/gui/icombobox/TextFontComboBox.java new file mode 100644 index 000000000..fc33d4e4d --- /dev/null +++ b/designer_base/src/com/fr/design/gui/icombobox/TextFontComboBox.java @@ -0,0 +1,125 @@ +package com.fr.design.gui.icombobox; + + +import com.fr.design.gui.icombobox.filter.Filter; +import com.fr.design.gui.icombobox.filter.StartsWithFilter; +import com.fr.design.gui.itextfield.UITextField; + +import javax.swing.*; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import java.awt.*; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.List; + +/** + * Created by MoMeak on 2017/9/5. + */ +public class TextFontComboBox extends ExtendedComboBox{ + private Filter filter; + + public TextFontComboBox() { + this(new ArrayList()); + this.setEditable(true); + } + + public TextFontComboBox(List itemList) { + this(new StartsWithFilter(), itemList); + } + + public TextFontComboBox(Filter filter, List itemList) { + this.filter = filter; + + setModel(new FilterableComboBoxModel(itemList)); + setEditor(new TextFontComboBox.FilterComboBoxEditor()); + setEditable(true); + } + + public void setItemArray(T[] objectArray) { + List itemList = new ArrayList(); + if(objectArray != null) { + for(int i = 0; i < objectArray.length; i++) { + itemList.add(objectArray[i]); + } + } + + this.setItemList(itemList); + } + + public void setItemList(List itemList) { + ((FilterableComboBoxModel)this.getModel()).setPrefix(""); + ((FilterableComboBoxModel)this.getModel()).setItemList(itemList); + } + + class FilterComboBoxEditor implements ComboBoxEditor, DocumentListener { + private Object item; + + public UITextField textField; + private volatile boolean filtering = false; + private volatile boolean setting = false; + + public FilterComboBoxEditor() { + textField = new UITextField(15); + textField.getDocument().addDocumentListener(this); + } + + public Component getEditorComponent() { + return textField; + } + + public void setItem(Object item) { + if (filtering) { + return; + } + this.item = item; + + this.setting = true; + String newText = (item == null) ? "" : item.toString(); + textField.setText(newText); + this.setting = false; + } + + public Object getItem() { + return this.item; + } + + public void selectAll() { + textField.selectAll(); + } + + public void addActionListener(ActionListener l) { + textField.addActionListener(l); + } + + public void removeActionListener(ActionListener l) { + textField.removeActionListener(l); + } + + public void insertUpdate(DocumentEvent e) { + handleChange(); + } + + public void removeUpdate(DocumentEvent e) { + handleChange(); + } + + public void changedUpdate(DocumentEvent e) { + handleChange(); + } + + protected void handleChange() { + if (setting) { + return; + } + + filtering = true; + + ((FilterableComboBoxModel) getModel()).setSelectedItem(textField.getText()); + this.item = textField.getText(); + + setPopupVisible(true); + filtering = false; + } + } +} diff --git a/designer_base/src/com/fr/design/gui/style/FormatPane.java b/designer_base/src/com/fr/design/gui/style/FormatPane.java index 0b810b7ae..d15e391cd 100644 --- a/designer_base/src/com/fr/design/gui/style/FormatPane.java +++ b/designer_base/src/com/fr/design/gui/style/FormatPane.java @@ -9,8 +9,7 @@ import com.fr.data.core.FormatField.FormatContents; import com.fr.design.border.UIRoundedBorder; import com.fr.design.constants.LayoutConstants; import com.fr.design.constants.UIConstants; -import com.fr.design.gui.icombobox.UIComboBox; -import com.fr.design.gui.icombobox.UIComboBoxRenderer; +import com.fr.design.gui.icombobox.*; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; @@ -22,6 +21,8 @@ import javax.swing.*; import javax.swing.border.Border; import javax.swing.border.TitledBorder; 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.text.Format; @@ -51,7 +52,7 @@ public class FormatPane extends AbstractBasicStylePane { private Format format; private UIComboBox typeComboBox; - private UIComboBox textField; + private TextFontComboBox textField; private UILabel sampleLabel; private JPanel contentPane; private JPanel txtCenterPane; @@ -89,7 +90,8 @@ public class FormatPane extends AbstractBasicStylePane { contentPane.add(sampleLabel, BorderLayout.NORTH); txtCenterPane = new JPanel(new BorderLayout()); - textField = new UIComboBox(FormatField.getInstance().getFormatArray(getFormatContents())); + textField = new TextFontComboBox(); +// textField.setItemArray(FormatField.getInstance().getFormatArray(getFormatContents())); textField.addItemListener(textFieldItemListener); textField.setEditable(true); txtCenterPane.add(textField, BorderLayout.NORTH); @@ -322,9 +324,8 @@ public class FormatPane extends AbstractBasicStylePane { cardLayout.show(centerPane, "hide"); } else { textField.removeAllItems(); - for (int i = 0; i < items.length; i++) { - textField.addItem(items[i]); - } + textField.setItemArray(items); + textField.setSelectedIndex(0); centerPane.setPreferredSize(new Dimension(270, 65)); cardLayout.show(centerPane, "show"); } From 88b8591d034f3f4191a56c44b058be2f4b079e12 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Tue, 5 Sep 2017 15:56:06 +0800 Subject: [PATCH 10/13] =?UTF-8?q?REPORT-4361=20=E5=8D=95=E5=85=83=E6=A0=BC?= =?UTF-8?q?=E5=85=83=E7=B4=A0=20=E6=95=B0=E6=8D=AE=E5=88=97=20=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=AE=BE=E7=BD=AE=20=E5=88=86=E7=BB=84=20=E9=AB=98?= =?UTF-8?q?=E7=BA=A7=20=E8=87=AA=E5=AE=9A=E4=B9=89=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dscolumn/ResultSetGroupDockingPane.java | 37 ++++++++++++------- .../cellquick/CellDSColumnEditor.java | 2 +- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/designer/src/com/fr/design/dscolumn/ResultSetGroupDockingPane.java b/designer/src/com/fr/design/dscolumn/ResultSetGroupDockingPane.java index 530c92f84..da32086d9 100644 --- a/designer/src/com/fr/design/dscolumn/ResultSetGroupDockingPane.java +++ b/designer/src/com/fr/design/dscolumn/ResultSetGroupDockingPane.java @@ -7,7 +7,6 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; -import com.fr.design.mainframe.ElementCasePane; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.Inter; import com.fr.report.cell.TemplateCellElement; @@ -41,12 +40,12 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane { private ItemListener listener; - public ResultSetGroupDockingPane(ElementCasePane ePane) { + public ResultSetGroupDockingPane() { super(); - this.initComponents(ePane); + this.initComponents(); } - public void initComponents(ElementCasePane ePane) { + public void initComponents() { goBox = new UIComboBox(new String[]{Inter.getLocText("BindColumn-Group"), Inter.getLocText("BindColumn-Select"), Inter.getLocText("BindColumn-Summary")}); initCardPane(); contentPane = layoutPane(); @@ -66,22 +65,23 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane { }; goBox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent ee) { - checkButtonEnabled(); int i = goBox.getSelectedIndex(); if (i == BIND_GROUP) { cardLayout.show(cardPane, "groupPane"); - cardPane.setPreferredSize(new Dimension(156, 20)); - TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane,2,10); + cardPane.setPreferredSize(new Dimension(158, 20)); + TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, 10); + checkButtonEnabled(); } else if (i == BIND_SELECTED) { cardLayout.show(cardPane, "listPane"); cardPane.setPreferredSize(new Dimension(0, 0)); - TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane,2,0); + TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, 0); } else if (i == BIND_SUMMARY) { cardLayout.show(cardPane, "summaryPane"); - cardPane.setPreferredSize(new Dimension(156, 20)); - TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane,2,10); + cardPane.setPreferredSize(new Dimension(158, 20)); + TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, 10); CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr(); cellExpandAttr.setDirection(Constants.NONE); + checkButtonEnabled(); } } }); @@ -96,7 +96,6 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane { cardLayout = new CardLayout(); cardPane.setLayout(cardLayout); - JPanel pane = new JPanel(new BorderLayout(3, 0)); groupComboBox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { checkButtonEnabled(); @@ -104,7 +103,9 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane { }); advancedButton = new UIButton(Inter.getLocText("Custom")); advancedButton.addActionListener(groupAdvancedListener); - pane.add(groupComboBox, BorderLayout.WEST); + + JPanel pane = new JPanel(new BorderLayout(0, 10)); + pane.add(groupComboBox, BorderLayout.NORTH); pane.add(advancedButton, BorderLayout.CENTER); cardPane.add(pane, "groupPane"); @@ -124,7 +125,7 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane { // RecordGrouper recordGrouper = dSColumn.getGrouper(); if (recordGrouper instanceof FunctionGrouper && !((FunctionGrouper) recordGrouper).isCustom()) { - int mode = ((FunctionGrouper) recordGrouper).getDivideMode(); + int mode = recordGrouper.getDivideMode(); if (mode == FunctionGrouper.GROUPING_MODE) { cardLayout.show(cardPane, "groupPane"); this.goBox.setSelectedIndex(BIND_GROUP); @@ -152,7 +153,6 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane { this.goBox.setSelectedIndex(BIND_GROUP); this.groupComboBox.setSelectedIndex(ADVANCED); } - checkButtonEnabled(); } @@ -190,6 +190,15 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane { advancedButton.setEnabled(true); } } + if (advancedButton.isEnabled()) { + cardPane.setPreferredSize(new Dimension(158, 50)); + cardPane.revalidate(); + cardPane.repaint(); + } else { + cardPane.setPreferredSize(new Dimension(158, 20)); + cardPane.revalidate(); + cardPane.repaint(); + } } public void addListener(ItemListener listener) { diff --git a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java index 4ea7a138c..1399ad2eb 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java @@ -217,7 +217,7 @@ public class CellDSColumnEditor extends CellQuickEditor { DSColumnBasicEditorPane() { dataPane = new SelectedDataColumnPane(true, true, tc, cellElement); - groupPane = new ResultSetGroupDockingPane(tc); + groupPane = new ResultSetGroupDockingPane(); dataPane.addListener(dataListener); groupPane.addListener(groupListener); From b68082f4e4731a7661f497f307abe6146b3817cf Mon Sep 17 00:00:00 2001 From: MoMeak Date: Tue, 5 Sep 2017 17:34:59 +0800 Subject: [PATCH 11/13] =?UTF-8?q?REPORT-2897=209.0=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E4=BF=AE=E6=94=B9=20=E7=BC=A9=E6=94=BE=E6=9D=A1?= =?UTF-8?q?=E5=9C=A8=E4=B8=8D=E5=90=8C=E7=9A=84sheet=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E4=B8=8D=E5=BA=94=E8=AF=A5=E7=BB=A7=E6=89=BF=20PMD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/src/com/fr/design/mainframe/JWorkBook.java | 5 +++++ .../com/fr/design/mainframe/ReportComponent.java | 5 +++++ .../design/mainframe/ReportComponentComposite.java | 8 +------- .../com/fr/design/mainframe/WorkSheetDesigner.java | 11 +++++++++++ designer/src/com/fr/poly/PolyDesigner.java | 8 ++++++++ .../fr/design/gui/icombobox/TextFontComboBox.java | 13 +++++++------ .../src/com/fr/design/mainframe/JTemplate.java | 2 ++ .../src/com/fr/design/mainframe/JForm.java | 5 +++++ 8 files changed, 44 insertions(+), 13 deletions(-) diff --git a/designer/src/com/fr/design/mainframe/JWorkBook.java b/designer/src/com/fr/design/mainframe/JWorkBook.java index 73edf7107..8d2854de7 100644 --- a/designer/src/com/fr/design/mainframe/JWorkBook.java +++ b/designer/src/com/fr/design/mainframe/JWorkBook.java @@ -129,6 +129,11 @@ public class JWorkBook extends JTemplate { return getEditingElementCasePane(); } + @Override + public JComponent getCurrentReportComponentPane() { + return reportComposite; + } + @Override protected UIModeControlContainer createCenterPane() { parameterPane = ModuleContext.isModuleStarted(Module.FORM_MODULE) ? new ParameterDefinitePane() : null; diff --git a/designer/src/com/fr/design/mainframe/ReportComponent.java b/designer/src/com/fr/design/mainframe/ReportComponent.java index 6ca268545..699f6c1c5 100644 --- a/designer/src/com/fr/design/mainframe/ReportComponent.java +++ b/designer/src/com/fr/design/mainframe/ReportComponent.java @@ -44,6 +44,11 @@ public abstract class ReportComponent { + private static final int HUND = 100; + public WorkSheetDesigner(WorkSheet sheet) { super(sheet); @@ -166,6 +170,13 @@ public class WorkSheetDesigner extends ReportComponent extends ExtendedComboBox{ +public class TextFontComboBox extends ExtendedComboBox { private Filter filter; public TextFontComboBox() { @@ -38,8 +39,8 @@ public class TextFontComboBox extends ExtendedComboBox{ public void setItemArray(T[] objectArray) { List itemList = new ArrayList(); - if(objectArray != null) { - for(int i = 0; i < objectArray.length; i++) { + if (objectArray != null) { + for (int i = 0; i < objectArray.length; i++) { itemList.add(objectArray[i]); } } @@ -48,8 +49,8 @@ public class TextFontComboBox extends ExtendedComboBox{ } public void setItemList(List itemList) { - ((FilterableComboBoxModel)this.getModel()).setPrefix(""); - ((FilterableComboBoxModel)this.getModel()).setItemList(itemList); + ((FilterableComboBoxModel) this.getModel()).setPrefix(StringUtils.EMPTY); + ((FilterableComboBoxModel) this.getModel()).setItemList(itemList); } class FilterComboBoxEditor implements ComboBoxEditor, DocumentListener { @@ -75,7 +76,7 @@ public class TextFontComboBox extends ExtendedComboBox{ this.item = item; this.setting = true; - String newText = (item == null) ? "" : item.toString(); + String newText = (item == null) ? StringUtils.EMPTY : item.toString(); textField.setText(newText); this.setting = false; } diff --git a/designer_base/src/com/fr/design/mainframe/JTemplate.java b/designer_base/src/com/fr/design/mainframe/JTemplate.java index 633fc066b..eaf8e76c9 100644 --- a/designer_base/src/com/fr/design/mainframe/JTemplate.java +++ b/designer_base/src/com/fr/design/mainframe/JTemplate.java @@ -114,6 +114,8 @@ public abstract class JTemplate> ex public abstract TargetComponent getCurrentElementCasePane(); + public abstract JComponent getCurrentReportComponentPane(); + // 为收集模版信息作准备 private void initForCollect() { template.initTemplateID(); // 为新模板设置 templateID 属性 diff --git a/designer_form/src/com/fr/design/mainframe/JForm.java b/designer_form/src/com/fr/design/mainframe/JForm.java index e6432bf1e..2effa34ba 100644 --- a/designer_form/src/com/fr/design/mainframe/JForm.java +++ b/designer_form/src/com/fr/design/mainframe/JForm.java @@ -103,6 +103,11 @@ public class JForm extends JTemplate implements BaseJForm { return elementCaseDesign.getEditingElementCasePane(); } + @Override + public JComponent getCurrentReportComponentPane() { + return null; + } + public int getMenuState() { return DesignState.JFORM; From 59bd1b50ab2e3cd80b7d9585484ecc5da8f5aa1a Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Tue, 5 Sep 2017 18:49:35 +0800 Subject: [PATCH 12/13] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=80=81=E5=9B=BE?= =?UTF-8?q?=E8=A1=A8=E9=83=A8=E5=88=86=E9=9D=A2=E6=9D=BF=E9=97=AE=E9=A2=98?= =?UTF-8?q?=20=E6=8C=89=E7=85=A7=E6=9C=80=E6=96=B0=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=EF=BC=8C=E5=A4=84=E7=90=86=E8=BF=9E=E7=BB=AD=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20=E4=BF=AE=E6=94=B99.0=E6=96=B0=E5=9B=BE?= =?UTF-8?q?=E8=A1=A8bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/gui/controlpane/UIControlPane.java | 8 +- .../fr/design/chart/report/MapDataPane.java | 5 +- .../chart/report/MapTableDataSinglePane.java | 31 +++--- .../PlotSeries/MapGroupExtensionPane.java | 2 +- .../chart/gui/data/DatabaseTableDataPane.java | 6 +- .../chart/gui/style/ChartAccColorPane.java | 5 +- .../gui/style/axis/ChartCategoryPane.java | 21 +++-- .../chart/gui/style/axis/ChartValuePane.java | 3 +- .../style/datasheet/ChartDatasheetPane.java | 21 ++--- .../gui/style/series/MeterSeriesPane.java | 9 +- .../gui/style/series/UIColorPickerPane.java | 13 ++- .../component/VanChartHyperLinkPane.java | 94 +++++++++++++++++++ .../designer/other/HyperlinkMapFactory.java | 27 +++++- 13 files changed, 186 insertions(+), 59 deletions(-) diff --git a/designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java b/designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java index 4e5fd2bb1..3af8618b3 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java +++ b/designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java @@ -34,7 +34,7 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH private UIToolbar toolBar; private UIToolbar topToolBar; - protected PopupEditDialog popupEditDialog; + protected Window popupEditDialog; // peter:这是整体的一个cardLayout Pane protected CardLayout cardLayout; @@ -124,7 +124,7 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH cardPane.add(selectLabel, "SELECT"); cardPane.add(controlUpdatePane, "EDIT"); if (isNewStyle()) { - popupEditDialog = new PopupEditDialog(cardPane); + getPopupEditDialog(cardPane); this.add(getLeftPane(), BorderLayout.CENTER); this.setBorder(BorderFactory.createEmptyBorder(10, 10, 15, 15)); } else { @@ -139,6 +139,10 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH this.checkButtonEnabled(); } + protected void getPopupEditDialog (JPanel cardPane) { + popupEditDialog = new PopupEditDialog(cardPane); + } + protected abstract JPanel createControlUpdatePane(); protected JPanel getLeftPane() { diff --git a/designer_chart/src/com/fr/design/chart/report/MapDataPane.java b/designer_chart/src/com/fr/design/chart/report/MapDataPane.java index 26842d83e..e23b9deb6 100644 --- a/designer_chart/src/com/fr/design/chart/report/MapDataPane.java +++ b/designer_chart/src/com/fr/design/chart/report/MapDataPane.java @@ -1,7 +1,6 @@ package com.fr.design.chart.report; import com.fr.base.chart.chartdata.TopDefinitionProvider; -import com.fr.chart.chartdata.TopDefinition; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.ChartCollection; import com.fr.chart.chartdata.MapMoreLayerReportDefinition; @@ -9,11 +8,11 @@ import com.fr.chart.chartdata.MapMoreLayerTableDefinition; import com.fr.chart.chartdata.MapSingleLayerReportDefinition; import com.fr.chart.chartdata.MapSingleLayerTableDefinition; import com.fr.design.beans.FurtherBasicBeanPane; +import com.fr.design.dialog.BasicScrollPane; import com.fr.design.gui.frpane.AttributeChangeListener; import com.fr.design.gui.frpane.UIComboBoxPane; import com.fr.design.gui.ilable.BoldFontTextLabel; import com.fr.design.mainframe.chart.gui.data.DataContentsPane; -import com.fr.design.dialog.BasicScrollPane; import com.fr.general.Inter; import javax.swing.*; @@ -88,7 +87,7 @@ public class MapDataPane extends DataContentsPane { protected void initLayout() { this.setLayout(new BorderLayout(0, 6)); JPanel northPane = new JPanel(new FlowLayout(FlowLayout.LEFT)); - northPane.add(new BoldFontTextLabel(Inter.getLocText("Map Show Type") + ":")); + northPane.add(new BoldFontTextLabel(Inter.getLocText("FR-Chart-Map_ShowWay") + ":")); northPane.add(jcb); this.add(northPane, BorderLayout.NORTH); this.add(cardPane, BorderLayout.CENTER); diff --git a/designer_chart/src/com/fr/design/chart/report/MapTableDataSinglePane.java b/designer_chart/src/com/fr/design/chart/report/MapTableDataSinglePane.java index 1f9463e7c..7f0b44b97 100644 --- a/designer_chart/src/com/fr/design/chart/report/MapTableDataSinglePane.java +++ b/designer_chart/src/com/fr/design/chart/report/MapTableDataSinglePane.java @@ -1,27 +1,11 @@ package com.fr.design.chart.report; -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.FlowLayout; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.JComponent; -import javax.swing.JPanel; -import javax.swing.JTable; -import javax.swing.SwingConstants; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; - import com.fr.base.Utils; import com.fr.chart.chartdata.MapSingleLayerTableDefinition; import com.fr.chart.chartdata.SeriesDefinition; import com.fr.data.impl.NameTableData; -import com.fr.design.data.tabledata.wrapper.TableDataWrapper; import com.fr.design.beans.FurtherBasicBeanPane; +import com.fr.design.data.tabledata.wrapper.TableDataWrapper; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; import com.fr.design.gui.frpane.UICorrelationPane; @@ -33,6 +17,15 @@ import com.fr.design.mainframe.chart.gui.data.DatabaseTableDataPane; import com.fr.general.Inter; import com.fr.stable.StringUtils; +import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import java.awt.*; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.util.ArrayList; +import java.util.List; + /** * 单层地图时: 数据集 定义界面 * @@ -60,6 +53,10 @@ public class MapTableDataSinglePane extends FurtherBasicBeanPane changeListeners = new ArrayList(); private boolean hasPopulated = false; @Override protected String title4PopupWindow() { return "Map"; } public MapGroupExtensionPane() { setLayout(new BorderLayout()); groupExtensionPane = new UIGroupExtensionPane(TYPE_NAMES){ /** * 新添加的数据的序号 * @param data 数据 */ protected void dealNewAddedDataIndex(Object data){ String newName = (String)data; MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance(); if(helper.getNewMapAttr(newName) != null){ return; } MapSvgAttr attr = new MapSvgAttr(); attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + newName + ".svg"); helper.addNewSvgMaps(attr.getName(), attr); } /** * 一次鼠标的点击会有两次事件响应(按下和释放)。前者的事件属性中getValueIsAdjusting()=true,后者是false。 * 是否响应list值改变 * @return 鼠标按下时不响应,先响应mousePress事件,在鼠标释放是再响应list值改编的事件,并且点击删除不触发更新,并且populate后触发更新 */ protected boolean isRespondToValueChange(ListSelectionEvent e){ return !e.getValueIsAdjusting() && !this.isPressOnDelete() && hasPopulated; } }; groupExtensionPane.addSelectionChangeListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { fireStateChange(); } }); groupExtensionPane.addItemEditListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { doEdit(event); } }); groupExtensionPane.addDeleteListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { //这么写有点问题 String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); saveMapInfo(oldName); } }); setPreferredSize(new Dimension(400, 210)); add(groupExtensionPane, BorderLayout.CENTER); addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")) { @Override protected void paintBorder(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setStroke(UIConstants.BS); Shape shape = new RoundRectangle2D.Float(0.5f, 0.5f, getWidth() - 1, getHeight() - 1, UIConstants.ARC, UIConstants.ARC); g2d.setColor(UIConstants.LINE_COLOR); g2d.draw(shape); } }; addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { popupMenu.show(MapGroupExtensionPane.this, addButton.getX() + 1, addButton.getY() + addButton.getHeight()); } }); add(addButton, BorderLayout.SOUTH); initPopupMenu(); } private void initPopupMenu() { popupMenu = new JPopupMenu() { @Override public Dimension getPreferredSize() { Dimension dimension = new Dimension(); dimension.height = super.getPreferredSize().height; dimension.width = addButton.getWidth() - 2; return dimension; } }; JMenuItem worldMap = new JMenuItem(TYPE_NAMES[WORD]); popupMenu.add(worldMap); worldMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[WORD], TYPE_NAMES[WORD], true); } }); JMenuItem countMap = new JMenuItem(TYPE_NAMES[NATION]); popupMenu.add(countMap); countMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[NATION], TYPE_NAMES[NATION], true); } }); JMenuItem proMap = new JMenuItem(TYPE_NAMES[STATE]); popupMenu.add(proMap); proMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[STATE], TYPE_NAMES[STATE], true); } }); JMenuItem menu = new JMenuItem(TYPE_NAMES[USER]); popupMenu.add(menu); menu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[USER], TYPE_NAMES[USER], true); } }); } private void doEdit(ChangeEvent e) { MouseEvent event = (MouseEvent) e.getSource(); JPopupMenu editPopMenu = new JPopupMenu(); final String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); editPopMenu.add(createAreaItem(oldName)); editPopMenu.add(createMarkerItem(oldName)); editPopMenu.add(createLayerItem(oldName)); editPopMenu.add(createRenameItem()); editPopMenu.show(MapGroupExtensionPane.this, event.getXOnScreen() - OFFSET_X, event.getYOnScreen() - OFFSET_Y); } private void mapCheckBeforeEdit(String name){ if(MapSvgXMLHelper.getInstance().containsMapName(name) || MapSvgXMLHelper.getInstance().getNewMapAttr(name)!=null){ return; } MapSvgAttr attr = new MapSvgAttr(); attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + name + ".svg"); MapSvgXMLHelper.getInstance().addNewSvgMaps(name,attr); } private JMenuItem createAreaItem(final String oldName) { JMenuItem editFileItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Filed"})); editFileItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapCustomPane image = new MapCustomPane(); image.setImageSelectType(MapShapeValue.AREA); image.populateBean(oldName); image.setTypeNameAndMapName(groupExtensionPane.getSelectedType(), Utils.objectToString(groupExtensionPane.getSelectedObject())); mapCheckBeforeEdit(oldName); final Image oldImage = getMapImage(oldName); BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(MapGroupExtensionPane.this), new DialogActionAdapter() { public void doOk() { image.updateBean(); // 比较两个前后的名字是否相同, 是图片 如果图片不同, 则直接比较 Image newImage = getMapImage(oldName); if(!ComparatorUtils.equals(oldImage, newImage)) { fireStateChange(); } //versionID递增 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); refresh(); } }); dialog.setVisible(true); } }); return editFileItem; } //根据地图的名字返回地图的图片 private Image getMapImage(String mapName) { if (MapSvgXMLHelper.getInstance().containsMapName(mapName)) { MapSvgAttr mapAttr = MapSvgXMLHelper.getInstance().getMapAttr(mapName); if(mapAttr == null) { return null; } return mapAttr.getMapImage(); } return null; } private JMenuItem createMarkerItem(final String oldName) { JMenuItem editMarkerItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Marker"})); editMarkerItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapCustomPane image = new MapCustomPane(); image.setImageSelectType(MapShapeValue.POINT); image.populateBean(oldName); mapCheckBeforeEdit(oldName); final Image oldImage = getMapImage(oldName); BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(image), new DialogActionAdapter() { public void doOk() { image.updateBean(); Image newImage = getMapImage(oldName); if(!ComparatorUtils.equals(oldImage, newImage)) { fireStateChange(); } //versionID递增 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); refresh(); } }); dialog.setVisible(true); } }); return editMarkerItem; } private JMenuItem createLayerItem(final String oldName) { JMenuItem corrItem = new JMenuItem(Inter.getLocText(new String[]{"Filed", "Corresponding_Fields"})); corrItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapDefiAreaNamePane namedPane = new MapDefiAreaNamePane(); namedPane.populateBean(oldName); mapCheckBeforeEdit(oldName); BasicDialog dialog = namedPane.showMediumWindow(SwingUtilities.getWindowAncestor(namedPane), new DialogActionAdapter() { public void doOk() { namedPane.updateBean();// 地图的名称 value对应情况 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); } }); dialog.setVisible(true); refresh(); } }); return corrItem; } private void showRenameWaring(String newName){ JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), "\"" + newName + "\"" + Inter.getLocText("Utils-has_been_existed") + "!", Inter.getLocText("FR-Designer_Alert"), JOptionPane.WARNING_MESSAGE); } private JMenuItem createRenameItem() { JMenuItem renameItem = new JMenuItem(Inter.getLocText("FR-Chart-Map_Rename")); renameItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String newName = JOptionPane.showInputDialog(DesignerContext.getDesignerFrame().getContentPane(), Inter.getLocText("FR-Chart-Map_Rename"), groupExtensionPane.getSelectedObject()); if (StringUtils.isNotBlank(newName)) { String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); if(ComparatorUtils.equals(oldName, newName)){ return; } //本地在看看临时的helper里面有没有 if(MapSvgXMLHelper.getInstance().getNewMapAttr(newName) != null){ showRenameWaring(newName); return; } try{//提醒名字已存在 if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),newName+SvgProvider.EXTENSION}))){ showRenameWaring(newName); return; } if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( new String[]{MapSvgXMLHelper.relativeCustomMapPath(), newName + SvgProvider.EXTENSION}))){ showRenameWaring(newName); return; } MapSvgAttr editingAttr = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(editingAttr == null){ editingAttr = MapSvgXMLHelper.getInstance().getNewMapAttr(oldName); } if( editingAttr == null) { return; } editingAttr.renameMap(newName); groupExtensionPane.setValueAtCurrentSelectIndex(newName); fireStateChange(); saveMapInfo(newName); FRContext.getCurrentEnv().deleteFile( StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),oldName+SvgProvider.EXTENSION})); FRContext.getCurrentEnv().deleteFile( StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeCustomMapPath(),oldName+SvgProvider.EXTENSION})); refresh(); }catch (Exception exp){ FRLogger.getLogger().error(exp.getMessage()); } } } }); return renameItem; } private void refresh() { this.validate(); this.repaint(); DesignerFrame frame = DesignerContext.getDesignerFrame(); if(frame != null) { frame.repaint();//kunsnat: 图表属性没变, 只是读取时 内容变化. } } //保存修改过的地图信息 private void saveMapInfo(final String mapName) { SwingWorker worker = new SwingWorker() { @Override protected Integer doInBackground() throws Exception { MapSvgAttr attr = MapSvgXMLHelper.getInstance().getMapAttr(mapName);// 只有在编辑地图时才需要储存相关数据 @kuns if(attr != null){ attr.writeBack(mapName); } return 0; } @Override protected void done() { FRLogger.getLogger().info(Inter.getLocText("FR-Chart-Map_Saved")); // 地图已经保存. } }; worker.execute(); DesignerEnvManager.addWorkers(worker); } private void fireStateChange() { for (int i = changeListeners.size(); i > 0; i--) { changeListeners.get(i - 1).stateChanged(new javax.swing.event.ChangeEvent(this)); } } /** * 更新地图属性 * @return 返回地图名称. */ public String updateBean(MapPlot plot) { if(!hasPopulated){ this.populateBean(plot); hasPopulated = true; } MapHelper helper = plot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); helper.clearCateNames(); for (String type : TYPE_NAMES) { Object[] datas = groupExtensionPane.getData(type); for (Object name : datas) { helper.addCateNames(type, name); } } return Utils.objectToString(groupExtensionPane.getSelectedObject()); } /** * 更新地图名称 * @param mapPlot 地图 */ public void populateBean(MapPlot mapPlot) { hasPopulated = false; groupExtensionPane.clearData(); for (String type : TYPE_NAMES) { MapHelper helper = mapPlot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); java.util.List list = helper.getNamesListWithCateName(type); for (Object name : list) { groupExtensionPane.addData(name, type); } } groupExtensionPane.setSelectedObject(mapPlot.getMapName()); hasPopulated = true; } /** * 给组件登记一个观察者监听事件 * * @param listener 观察者监听事件 */ public void registerChangeListener(final UIObserverListener listener) { changeListeners.add(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { listener.doChange(); } }); } /** * 组件是否需要响应添加的观察者事件 * * @return 如果需要响应观察者事件则返回true,否则返回false */ public boolean shouldResponseChangeListener() { return true; } public void setEnabled(boolean isEnabled){ super.setEnabled(isEnabled); addButton.setEnabled(isEnabled); popupMenu.setEnabled(isEnabled); groupExtensionPane.setEnabled(isEnabled); } } \ No newline at end of file +package com.fr.design.chart.series.PlotSeries; import com.fr.base.BaseUtils; import com.fr.base.FRContext; import com.fr.base.MapHelper; import com.fr.base.MapXMLHelper; import com.fr.base.Utils; import com.fr.chart.base.MapSvgAttr; import com.fr.chart.base.MapSvgXMLHelper; import com.fr.chart.chartattr.MapPlot; import com.fr.chart.chartglyph.MapShapeValue; import com.fr.design.DesignerEnvManager; import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.event.ChangeEvent; import com.fr.design.event.ChangeListener; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrame; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.stable.CoreConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.SvgProvider; import javax.swing.*; import javax.swing.event.ListSelectionEvent; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.geom.RoundRectangle2D; import java.util.ArrayList; /** * Created by IntelliJ IDEA. * Author : Richer * Version: 7.0.3 * Date: 12-12-29 * Time: 下午2:41 */ public class MapGroupExtensionPane extends BasicPane implements UIObserver { private static final String[] TYPE_NAMES = new String[]{ Inter.getLocText("FR-Chart-World_Map"), Inter.getLocText("FR-Chart-State_Map"), Inter.getLocText("FR-Chart-Province_Map"), Inter.getLocText("FR-Chart-Custom_Map")}; private static final int WORD = 0; private static final int NATION = 1; private static final int STATE = 2; private static final int USER = 3; private static final int OFFSET_X = 800; private static final int OFFSET_Y = 280; private UIGroupExtensionPane groupExtensionPane; private UIButton addButton; private JPopupMenu popupMenu; private ArrayList changeListeners = new ArrayList(); private boolean hasPopulated = false; @Override protected String title4PopupWindow() { return "Map"; } public MapGroupExtensionPane() { setLayout(new BorderLayout()); groupExtensionPane = new UIGroupExtensionPane(TYPE_NAMES){ /** * 新添加的数据的序号 * @param data 数据 */ protected void dealNewAddedDataIndex(Object data){ String newName = (String)data; MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance(); if(helper.getNewMapAttr(newName) != null){ return; } MapSvgAttr attr = new MapSvgAttr(); attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + newName + ".svg"); helper.addNewSvgMaps(attr.getName(), attr); } /** * 一次鼠标的点击会有两次事件响应(按下和释放)。前者的事件属性中getValueIsAdjusting()=true,后者是false。 * 是否响应list值改变 * @return 鼠标按下时不响应,先响应mousePress事件,在鼠标释放是再响应list值改编的事件,并且点击删除不触发更新,并且populate后触发更新 */ protected boolean isRespondToValueChange(ListSelectionEvent e){ return !e.getValueIsAdjusting() && !this.isPressOnDelete() && hasPopulated; } }; groupExtensionPane.addSelectionChangeListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { fireStateChange(); } }); groupExtensionPane.addItemEditListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { doEdit(event); } }); groupExtensionPane.addDeleteListener(new ChangeListener() { @Override public void fireChanged(ChangeEvent event) { //这么写有点问题 String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); saveMapInfo(oldName); } }); setPreferredSize(new Dimension(400, 210)); add(groupExtensionPane, BorderLayout.CENTER); addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")) { @Override protected void paintBorder(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setStroke(UIConstants.BS); Shape shape = new RoundRectangle2D.Float(0.5f, 0.5f, getWidth() - 1, getHeight() - 1, UIConstants.ARC, UIConstants.ARC); g2d.setColor(UIConstants.LINE_COLOR); g2d.draw(shape); } }; addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { popupMenu.show(MapGroupExtensionPane.this, addButton.getX() + 1, addButton.getY() + addButton.getHeight()); } }); add(addButton, BorderLayout.SOUTH); initPopupMenu(); } private void initPopupMenu() { popupMenu = new JPopupMenu() { @Override public Dimension getPreferredSize() { Dimension dimension = new Dimension(); dimension.height = super.getPreferredSize().height; dimension.width = addButton.getWidth() - 2; return dimension; } }; JMenuItem worldMap = new JMenuItem(TYPE_NAMES[WORD]); popupMenu.add(worldMap); worldMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[WORD], TYPE_NAMES[WORD], true); } }); JMenuItem countMap = new JMenuItem(TYPE_NAMES[NATION]); popupMenu.add(countMap); countMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[NATION], TYPE_NAMES[NATION], true); } }); JMenuItem proMap = new JMenuItem(TYPE_NAMES[STATE]); popupMenu.add(proMap); proMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[STATE], TYPE_NAMES[STATE], true); } }); JMenuItem menu = new JMenuItem(TYPE_NAMES[USER]); popupMenu.add(menu); menu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { groupExtensionPane.addData(TYPE_NAMES[USER], TYPE_NAMES[USER], true); } }); } private void doEdit(ChangeEvent e) { MouseEvent event = (MouseEvent) e.getSource(); JPopupMenu editPopMenu = new JPopupMenu(); final String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); editPopMenu.add(createAreaItem(oldName)); editPopMenu.add(createMarkerItem(oldName)); editPopMenu.add(createLayerItem(oldName)); editPopMenu.add(createRenameItem()); editPopMenu.show(MapGroupExtensionPane.this, event.getXOnScreen() - OFFSET_X, event.getYOnScreen() - OFFSET_Y); } private void mapCheckBeforeEdit(String name){ if(MapSvgXMLHelper.getInstance().containsMapName(name) || MapSvgXMLHelper.getInstance().getNewMapAttr(name)!=null){ return; } MapSvgAttr attr = new MapSvgAttr(); attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + name + ".svg"); MapSvgXMLHelper.getInstance().addNewSvgMaps(name,attr); } private JMenuItem createAreaItem(final String oldName) { JMenuItem editFileItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Filed"})); editFileItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapCustomPane image = new MapCustomPane(); image.setImageSelectType(MapShapeValue.AREA); image.populateBean(oldName); image.setTypeNameAndMapName(groupExtensionPane.getSelectedType(), Utils.objectToString(groupExtensionPane.getSelectedObject())); mapCheckBeforeEdit(oldName); final Image oldImage = getMapImage(oldName); BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(MapGroupExtensionPane.this), new DialogActionAdapter() { public void doOk() { image.updateBean(); // 比较两个前后的名字是否相同, 是图片 如果图片不同, 则直接比较 Image newImage = getMapImage(oldName); if(!ComparatorUtils.equals(oldImage, newImage)) { fireStateChange(); } //versionID递增 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); refresh(); } }); dialog.setVisible(true); } }); return editFileItem; } //根据地图的名字返回地图的图片 private Image getMapImage(String mapName) { if (MapSvgXMLHelper.getInstance().containsMapName(mapName)) { MapSvgAttr mapAttr = MapSvgXMLHelper.getInstance().getMapAttr(mapName); if(mapAttr == null) { return null; } return mapAttr.getMapImage(); } return null; } private JMenuItem createMarkerItem(final String oldName) { JMenuItem editMarkerItem = new JMenuItem(Inter.getLocText(new String[]{"Edit", "Image", "Marker"})); editMarkerItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapCustomPane image = new MapCustomPane(); image.setImageSelectType(MapShapeValue.POINT); image.populateBean(oldName); mapCheckBeforeEdit(oldName); final Image oldImage = getMapImage(oldName); BasicDialog dialog = image.showMediumWindow(SwingUtilities.getWindowAncestor(image), new DialogActionAdapter() { public void doOk() { image.updateBean(); Image newImage = getMapImage(oldName); if(!ComparatorUtils.equals(oldImage, newImage)) { fireStateChange(); } //versionID递增 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); refresh(); } }); dialog.setVisible(true); } }); return editMarkerItem; } private JMenuItem createLayerItem(final String oldName) { JMenuItem corrItem = new JMenuItem(Inter.getLocText(new String[]{"Filed", "Corresponding_Fields"})); corrItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { final MapDefiAreaNamePane namedPane = new MapDefiAreaNamePane(); namedPane.populateBean(oldName); mapCheckBeforeEdit(oldName); BasicDialog dialog = namedPane.showMediumWindow(SwingUtilities.getWindowAncestor(namedPane), new DialogActionAdapter() { public void doOk() { namedPane.updateBean();// 地图的名称 value对应情况 MapSvgAttr old = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(old != null) { old.addVersionID(); } saveMapInfo(oldName); } }); dialog.setVisible(true); refresh(); } }); return corrItem; } private void showRenameWaring(String newName){ JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), "\"" + newName + "\"" + Inter.getLocText("Utils-has_been_existed") + "!", Inter.getLocText("FR-Designer_Alert"), JOptionPane.WARNING_MESSAGE); } private JMenuItem createRenameItem() { JMenuItem renameItem = new JMenuItem(Inter.getLocText("FR-Chart-Map_Rename")); renameItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String newName = JOptionPane.showInputDialog(DesignerContext.getDesignerFrame().getContentPane(), Inter.getLocText("FR-Chart-Map_Rename"), groupExtensionPane.getSelectedObject()); if (StringUtils.isNotBlank(newName)) { String oldName = Utils.objectToString(groupExtensionPane.getSelectedObject()); if(ComparatorUtils.equals(oldName, newName)){ return; } //本地在看看临时的helper里面有没有 if(MapSvgXMLHelper.getInstance().getNewMapAttr(newName) != null){ showRenameWaring(newName); return; } try{//提醒名字已存在 if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),newName+SvgProvider.EXTENSION}))){ showRenameWaring(newName); return; } if(FRContext.getCurrentEnv().fileExists(StableUtils.pathJoin( new String[]{MapSvgXMLHelper.relativeCustomMapPath(), newName + SvgProvider.EXTENSION}))){ showRenameWaring(newName); return; } MapSvgAttr editingAttr = MapSvgXMLHelper.getInstance().getMapAttr(oldName); if(editingAttr == null){ editingAttr = MapSvgXMLHelper.getInstance().getNewMapAttr(oldName); } if( editingAttr == null) { return; } editingAttr.renameMap(newName); groupExtensionPane.setValueAtCurrentSelectIndex(newName); fireStateChange(); saveMapInfo(newName); FRContext.getCurrentEnv().deleteFile( StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeDefaultMapPath(),oldName+SvgProvider.EXTENSION})); FRContext.getCurrentEnv().deleteFile( StableUtils.pathJoin(new String[]{MapSvgXMLHelper.relativeCustomMapPath(),oldName+SvgProvider.EXTENSION})); refresh(); }catch (Exception exp){ FRLogger.getLogger().error(exp.getMessage()); } } } }); return renameItem; } private void refresh() { this.validate(); this.repaint(); DesignerFrame frame = DesignerContext.getDesignerFrame(); if(frame != null) { frame.repaint();//kunsnat: 图表属性没变, 只是读取时 内容变化. } } //保存修改过的地图信息 private void saveMapInfo(final String mapName) { SwingWorker worker = new SwingWorker() { @Override protected Integer doInBackground() throws Exception { MapSvgAttr attr = MapSvgXMLHelper.getInstance().getMapAttr(mapName);// 只有在编辑地图时才需要储存相关数据 @kuns if(attr != null){ attr.writeBack(mapName); } return 0; } @Override protected void done() { FRLogger.getLogger().info(Inter.getLocText("FR-Chart-Map_Saved")); // 地图已经保存. } }; worker.execute(); DesignerEnvManager.addWorkers(worker); } private void fireStateChange() { for (int i = changeListeners.size(); i > 0; i--) { changeListeners.get(i - 1).stateChanged(new javax.swing.event.ChangeEvent(this)); } } /** * 更新地图属性 * @return 返回地图名称. */ public String updateBean(MapPlot plot) { if(!hasPopulated){ this.populateBean(plot); hasPopulated = true; } MapHelper helper = plot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); helper.clearCateNames(); for (String type : TYPE_NAMES) { Object[] datas = groupExtensionPane.getData(type); for (Object name : datas) { helper.addCateNames(type, name); } } return Utils.objectToString(groupExtensionPane.getSelectedObject()); } /** * 更新地图名称 * @param mapPlot 地图 */ public void populateBean(MapPlot mapPlot) { hasPopulated = false; groupExtensionPane.clearData(); for (String type : TYPE_NAMES) { MapHelper helper = mapPlot.isSvgMap() ? MapSvgXMLHelper.getInstance() : MapXMLHelper.getInstance(); java.util.List list = helper.getNamesListWithCateName(type); for (Object name : list) { groupExtensionPane.addData(name, type); } } groupExtensionPane.setSelectedObject(mapPlot.getMapName()); hasPopulated = true; } /** * 给组件登记一个观察者监听事件 * * @param listener 观察者监听事件 */ public void registerChangeListener(final UIObserverListener listener) { changeListeners.add(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { listener.doChange(); } }); } /** * 组件是否需要响应添加的观察者事件 * * @return 如果需要响应观察者事件则返回true,否则返回false */ public boolean shouldResponseChangeListener() { return true; } public void setEnabled(boolean isEnabled){ super.setEnabled(isEnabled); addButton.setEnabled(isEnabled); popupMenu.setEnabled(isEnabled); groupExtensionPane.setEnabled(isEnabled); } } \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/DatabaseTableDataPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/DatabaseTableDataPane.java index 7138071c1..48a06c660 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/DatabaseTableDataPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/DatabaseTableDataPane.java @@ -41,10 +41,12 @@ public class DatabaseTableDataPane extends BasicPane{ pane.add(reviewButton,BorderLayout.EAST); this.add(pane,BorderLayout.CENTER); - - this.setBorder(BorderFactory.createEmptyBorder(0,24,0,15)); + setBorder (); } + protected void setBorder () { + this.setBorder(BorderFactory.createEmptyBorder(0,24,0,15)); + } /** * 返回选中的数据源. */ diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartAccColorPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartAccColorPane.java index 24b1356a5..50bfadc93 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartAccColorPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartAccColorPane.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe.chart.gui.style; import com.fr.chart.base.ChartConstants; +import com.fr.design.dialog.BasicPane; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; import com.fr.design.mainframe.DesignerContext; @@ -9,11 +10,9 @@ import com.fr.design.style.color.ColorSelectConfigManager; import com.fr.design.style.color.ColorSelectDetailPane; import com.fr.design.style.color.ColorSelectDialog; import com.fr.design.style.color.ColorSelectable; -import com.fr.design.dialog.BasicPane; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; - import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; @@ -73,7 +72,7 @@ public class ChartAccColorPane extends BasicPane implements MouseListener, UIObs } Paint oldPaint = g2d.getPaint(); g2d.setPaint(new Color(212, 212, 216)); - g2d.fillRect(0, 0, (int)bounds.getWidth(), (int)bounds.getHeight()); + g2d.fillRect(0, 0, WIDTH*ROWCOUNT, WIDTH*4); g2d.setPaint(oldPaint); int y = 0; diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartCategoryPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartCategoryPane.java index 40649b60c..afb1b2068 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartCategoryPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartCategoryPane.java @@ -1,12 +1,5 @@ package com.fr.design.mainframe.chart.gui.style.axis; -import java.awt.BorderLayout; -import java.awt.Component; - -import javax.swing.BorderFactory; -import javax.swing.JPanel; -import javax.swing.JSeparator; - import com.fr.chart.chartattr.Axis; import com.fr.chart.chartattr.Bar2DPlot; import com.fr.chart.chartattr.CategoryAxis; @@ -15,10 +8,18 @@ import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.style.FormatPane; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; -import com.fr.design.mainframe.chart.gui.style.*; +import com.fr.design.mainframe.chart.gui.style.ChartAxisLabelPane; +import com.fr.design.mainframe.chart.gui.style.ChartAxisLineStylePane; +import com.fr.design.mainframe.chart.gui.style.ChartAxisTitleNoFormulaPane; +import com.fr.design.mainframe.chart.gui.style.ChartAxisTitlePane; +import com.fr.design.mainframe.chart.gui.style.ChartAxisValueTypePane; +import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.Inter; +import com.fr.plugin.chart.designer.component.format.FormatPaneWithOutFont; import com.fr.stable.Constants; -import com.fr.design.utils.gui.GUICoreUtils; + +import javax.swing.*; +import java.awt.*; public class ChartCategoryPane extends ChartAxisUsePane{ @@ -46,7 +47,7 @@ public class ChartCategoryPane extends ChartAxisUsePane{ axisValuePane = new ChartAxisValueTypePane(); axisLineStylePane = new ChartAxisLineStylePane(); - formatPane = new FormatPane(); + formatPane = new FormatPaneWithOutFont(); axisLabelPane = new ChartAxisLabelPane(); axisReversed = new UICheckBox(Inter.getLocText("AxisReversed")); this.setLayout(new BorderLayout()); diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartValuePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartValuePane.java index 8916efe25..f62be44fb 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartValuePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/axis/ChartValuePane.java @@ -25,6 +25,7 @@ import com.fr.design.mainframe.chart.gui.style.ChartAxisTitleNoFormulaPane; import com.fr.design.mainframe.chart.gui.style.ChartAxisTitlePane; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; +import com.fr.plugin.chart.designer.component.format.FormatPaneWithOutFont; import com.fr.stable.Constants; import com.fr.stable.StringUtils; @@ -74,7 +75,7 @@ public class ChartValuePane extends ChartAxisUsePane{ zeroPane = aliagnZero4Second(); axisReversed = new UICheckBox(Inter.getLocText("FR-Designer_AxisReversed")); unitCombox = new UIComboBox(ChartConstants.UNIT_I18N_VALUES); - formatPane = new FormatPane(); + formatPane = new FormatPaneWithOutFont(); axisLabelPane = new ChartAxisLabelPane(); dataPane = createDataDefinePane(); diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/datasheet/ChartDatasheetPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/datasheet/ChartDatasheetPane.java index dfc285397..43b4361db 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/datasheet/ChartDatasheetPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/datasheet/ChartDatasheetPane.java @@ -1,18 +1,11 @@ package com.fr.design.mainframe.chart.gui.style.datasheet; -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.JPanel; -import javax.swing.JSeparator; - import com.fr.base.FRContext; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Plot; import com.fr.chart.chartglyph.DataSheet; import com.fr.design.constants.LayoutConstants; +import com.fr.design.dialog.BasicScrollPane; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.style.FormatPane; @@ -21,10 +14,15 @@ import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.chart.PaneTitleConstants; import com.fr.design.mainframe.chart.gui.style.ChartTextAttrPane; import com.fr.design.mainframe.chart.gui.style.axis.ChartAxisPane; -import com.fr.design.dialog.BasicScrollPane; +import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.FRFont; import com.fr.general.Inter; -import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.plugin.chart.designer.component.format.FormatPaneWithNormalType; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; public class ChartDatasheetPane extends BasicScrollPane{ private static final long serialVersionUID = -4854070113748783014L; @@ -48,8 +46,7 @@ public class ChartDatasheetPane extends BasicScrollPane{ double[] rowSize = { p, p, p, p}; isDatasheetVisable = new UICheckBox(Inter.getLocText("Chart_Show_Data_Sheet")); textAttrPane = new ChartTextAttrPane(); - formatPane = new FormatPane(); - formatPane.setForDataSheet(); + formatPane = new FormatPaneWithNormalType(); Component[][] components = new Component[][]{ new Component[]{null,textAttrPane}, new Component[]{new JSeparator(),null}, diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/series/MeterSeriesPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/series/MeterSeriesPane.java index de639997a..a190bbd59 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/series/MeterSeriesPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/series/MeterSeriesPane.java @@ -54,7 +54,14 @@ public class MeterSeriesPane extends AbstractPlotSeriesPane { } protected UIColorPickerPane createColorPickerPane(){ - return new ColorPickerPaneWithFormula("meterString"); + return new ColorPickerPaneWithFormula("meterString"){ + protected double getEditAreaWidth () { + return 120; + } + protected int getColorgroupMarginLeft () { + return 20; + } + }; } diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/series/UIColorPickerPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/series/UIColorPickerPane.java index a4771e1bf..b9966fc66 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/series/UIColorPickerPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/series/UIColorPickerPane.java @@ -186,7 +186,7 @@ public class UIColorPickerPane extends BasicPane implements UIObserver { }; double p = TableLayout.PREFERRED; - double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; + double e = getEditAreaWidth (); double d = TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH; double[] columnSize = {d, e}; double[] rowSize = {p}; @@ -209,7 +209,10 @@ public class UIColorPickerPane extends BasicPane implements UIObserver { this.textFieldList = this.getTextFieldList(); refreshGroupPane(colors, getValueArray(number)); + } + protected double getEditAreaWidth () { + return TableLayout4VanChartHelper.EDIT_AREA_WIDTH; } protected ArrayList getTextFieldList(){ @@ -560,6 +563,10 @@ public class UIColorPickerPane extends BasicPane implements UIObserver { return null; } + protected int getColorgroupMarginLeft () { + return COLORGROUP_MARGIN_LEFT; + } + private LayoutManager layoutMeter = new LayoutManager() { @Override public void removeLayoutComponent(Component comp) { @@ -580,8 +587,8 @@ public class UIColorPickerPane extends BasicPane implements UIObserver { public void layoutContainer(Container parent) { upControlPane.setBounds(MARGIN_LEFT, MARGIN_TOP, UPCONTROLPANE_WIDTH, upControlPane.getPreferredSize().height + MARGIN_TOP); stagePanel.setBounds(MARGIN_LEFT, upControlPane.getPreferredSize().height + LAYOUR_DET + MARGIN_TOP, UPCONTROLPANE_WIDTH, stagePanel.getPreferredSize().height); - colorGroup.setBounds(COLORGROUP_MARGIN_LEFT, 2 * MARGIN_TOP + upControlPane.getPreferredSize().height + stagePanel.getPreferredSize().height + 2 * LAYOUR_DET, colorGroup.getPreferredSize().width, colorGroup.getPreferredSize().height + upControlPane.getPreferredSize().height); - textGroup.setBounds(colorGroup.getPreferredSize().width + COLORGROUP_MARGIN_LEFT, upControlPane.getPreferredSize().height + stagePanel.getPreferredSize().height + 2 * LAYOUR_DET + MARGIN_TOP, textGroup.getPreferredSize().width, textGroup.getPreferredSize().height); + colorGroup.setBounds( getColorgroupMarginLeft (), 2 * MARGIN_TOP + upControlPane.getPreferredSize().height + stagePanel.getPreferredSize().height + 2 * LAYOUR_DET, colorGroup.getPreferredSize().width, colorGroup.getPreferredSize().height + upControlPane.getPreferredSize().height); + textGroup.setBounds(colorGroup.getPreferredSize().width + getColorgroupMarginLeft (), upControlPane.getPreferredSize().height + stagePanel.getPreferredSize().height + 2 * LAYOUR_DET + MARGIN_TOP, textGroup.getPreferredSize().width, textGroup.getPreferredSize().height); } @Override diff --git a/designer_chart/src/com/fr/plugin/chart/custom/component/VanChartHyperLinkPane.java b/designer_chart/src/com/fr/plugin/chart/custom/component/VanChartHyperLinkPane.java index 59e92c7b8..10fef883d 100644 --- a/designer_chart/src/com/fr/plugin/chart/custom/component/VanChartHyperLinkPane.java +++ b/designer_chart/src/com/fr/plugin/chart/custom/component/VanChartHyperLinkPane.java @@ -12,8 +12,12 @@ import com.fr.design.fun.HyperlinkProvider; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.UIListControlPane; +import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.imenutable.UIMenuNameableCreator; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.mainframe.DesignerContext; import com.fr.design.module.DesignModuleFactory; +import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.Inter; import com.fr.general.NameObject; import com.fr.js.EmailJavaScript; @@ -31,6 +35,10 @@ import com.fr.stable.ListMap; import com.fr.stable.Nameable; import com.fr.stable.bridge.StableFactory; +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -116,6 +124,10 @@ public class VanChartHyperLinkPane extends UIListControlPane { } public void populate(Plot plot) { + //特殊处理,使用instanceof判断,处理连续弹窗问题 + if (SwingUtilities.getWindowAncestor(this) instanceof JDialog) { + popupEditDialog = new HyperDialog(cardPane); + } this.plot = plot; HashMap paneMap = getHyperlinkMap(plot); @@ -229,4 +241,86 @@ public class VanChartHyperLinkPane extends UIListControlPane { return null; } + + protected void popupEditDialog(Point mousePos) { + //特殊处理,处理连续弹窗情况 + if (SwingUtilities.getWindowAncestor(this) instanceof JDialog) { + GUICoreUtils.centerWindow(popupEditDialog); + popupEditDialog.setVisible(true); + return; + } + super.popupEditDialog(mousePos); + } + + + + // 点击"编辑"按钮,弹出面板 + protected class HyperDialog extends JDialog { + private JComponent editPane; + private static final int WIDTH = 570; + private static final int HEIGHT = 490; + + private UIButton okButton, cancelButton; + + + HyperDialog(JComponent pane) { + super(DesignerContext.getDesignerFrame(), true); + pane.setBorder(BorderFactory.createEmptyBorder(20, 10, 10, 10)); + this.editPane = pane; + JPanel editPaneWrapper = new JPanel(new BorderLayout()); + editPaneWrapper.add(editPane, BorderLayout.CENTER); + this.getContentPane().add(editPaneWrapper, BorderLayout.CENTER); + this.getContentPane().add(createControlButtonPane(), BorderLayout.SOUTH); + setSize(WIDTH, HEIGHT); + this.setVisible(false); + } + + private JPanel createControlButtonPane() { + JPanel controlPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + + JPanel buttonsPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 0)); + controlPane.add(buttonsPane, BorderLayout.EAST); + + //确定 + addOkButton(buttonsPane); + //取消 + addCancelButton(buttonsPane); + + controlPane.setBorder(BorderFactory.createEmptyBorder(10,0,10,0)); + + return controlPane; + } + + private void addCancelButton(JPanel buttonsPane) { + cancelButton = new UIButton(Inter.getLocText("Cancel")); + buttonsPane.add(cancelButton); + cancelButton.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent evt) { + doCancel(); + } + }); + } + + private void addOkButton(JPanel buttonsPane) { + okButton = new UIButton(Inter.getLocText("OK")); + buttonsPane.add(okButton); + okButton.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent evt) { + doOK(); + } + }); + } + + public void doOK() { + saveSettings(); + setVisible(false); + } + + public void doCancel() { + setVisible(false); + } + } + } diff --git a/designer_chart/src/com/fr/plugin/chart/designer/other/HyperlinkMapFactory.java b/designer_chart/src/com/fr/plugin/chart/designer/other/HyperlinkMapFactory.java index d97294f76..4f0a79d57 100644 --- a/designer_chart/src/com/fr/plugin/chart/designer/other/HyperlinkMapFactory.java +++ b/designer_chart/src/com/fr/plugin/chart/designer/other/HyperlinkMapFactory.java @@ -12,13 +12,25 @@ import com.fr.design.chart.series.SeriesCondition.impl.ChartHyperRelateFloatLink import com.fr.design.chart.series.SeriesCondition.impl.FormHyperlinkPane; import com.fr.design.editor.ValueEditorPane; import com.fr.design.editor.ValueEditorPaneFactory; -import com.fr.design.editor.editor.*; +import com.fr.design.editor.editor.BooleanEditor; +import com.fr.design.editor.editor.ConstantsEditor; +import com.fr.design.editor.editor.DateEditor; +import com.fr.design.editor.editor.DoubleEditor; +import com.fr.design.editor.editor.Editor; +import com.fr.design.editor.editor.FormulaEditor; +import com.fr.design.editor.editor.IntegerEditor; +import com.fr.design.editor.editor.TextEditor; import com.fr.design.hyperlink.ReportletHyperlinkPane; import com.fr.design.hyperlink.WebHyperlinkPane; import com.fr.design.javascript.JavaScriptImplPane; import com.fr.design.javascript.ParameterJavaScriptPane; import com.fr.general.Inter; -import com.fr.js.*; +import com.fr.js.EmailJavaScript; +import com.fr.js.FormHyperlinkProvider; +import com.fr.js.JavaScriptImpl; +import com.fr.js.ParameterJavaScript; +import com.fr.js.ReportletHyperlink; +import com.fr.js.WebHyperlink; import com.fr.plugin.chart.area.VanChartAreaPlot; import com.fr.plugin.chart.bubble.BubblePlotType; import com.fr.plugin.chart.bubble.VanChartBubblePlot; @@ -28,16 +40,16 @@ import com.fr.plugin.chart.custom.type.CustomStyle; import com.fr.plugin.chart.drillmap.VanChartDrillMapPlot; import com.fr.plugin.chart.funnel.VanChartFunnelPlot; import com.fr.plugin.chart.gantt.VanChartGanttPlot; -import com.fr.plugin.chart.type.GaugeStyle; import com.fr.plugin.chart.gauge.VanChartGaugePlot; import com.fr.plugin.chart.heatmap.VanChartHeatMapPlot; import com.fr.plugin.chart.line.VanChartLinePlot; -import com.fr.plugin.chart.type.MapType; import com.fr.plugin.chart.map.VanChartMapPlot; import com.fr.plugin.chart.multilayer.VanChartMultiPiePlot; import com.fr.plugin.chart.scatter.VanChartScatterPlot; import com.fr.plugin.chart.structure.VanChartStructurePlot; import com.fr.plugin.chart.treemap.VanChartTreeMapPlot; +import com.fr.plugin.chart.type.GaugeStyle; +import com.fr.plugin.chart.type.MapType; import com.fr.plugin.chart.wordcloud.VanChartWordCloudPlot; import java.util.ArrayList; @@ -771,6 +783,13 @@ public class HyperlinkMapFactory { public static class VAN_CHART extends ChartHyperRelateCellLinkPane{ } + public static class VAN_CHART_MULTICATEGORY extends ChartHyperRelateCellLinkPane{ + @Override + protected ValueEditorPane getValueEditorPane() { + return getMultiCategoryEditorPane(); + } + } + public static class VAN_CHART_SCATTER extends ChartHyperRelateCellLinkPane{ @Override protected ValueEditorPane getValueEditorPane() { From c6423031e6ae3aaf48faf3c40a35c46f84c87b78 Mon Sep 17 00:00:00 2001 From: mengao <283296419@qq.com> Date: Wed, 6 Sep 2017 08:58:33 +0800 Subject: [PATCH 13/13] =?UTF-8?q?=E6=8C=89=E7=85=A7=E6=9C=80=E6=96=B0?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=EF=BC=8C=E5=A4=84=E7=90=86=E8=BF=9E=E7=BB=AD?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/gui/controlpane/UIListControlPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/gui/controlpane/UIListControlPane.java b/designer_base/src/com/fr/design/gui/controlpane/UIListControlPane.java index ca0363d25..67fa2b324 100644 --- a/designer_base/src/com/fr/design/gui/controlpane/UIListControlPane.java +++ b/designer_base/src/com/fr/design/gui/controlpane/UIListControlPane.java @@ -390,7 +390,7 @@ public abstract class UIListControlPane extends UIControlPane { } } - private void popupEditDialog(Point mousePos) { + protected void popupEditDialog(Point mousePos) { if (isNewStyle()) { Rectangle currentCellBounds = nameableList.getCellBounds(editingIndex, editingIndex); if (editingIndex < 0 || !currentCellBounds.contains(mousePos)) {