From 83d78aaa9136f8101c3cb92f268070e4e36197f9 Mon Sep 17 00:00:00 2001 From: Starryi Date: Wed, 19 Jan 2022 15:37:23 +0800 Subject: [PATCH 1/2] =?UTF-8?q?REPORT-65989=20frm=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E5=9D=97=E5=86=8510.0=E6=A8=A1=E6=9D=BF=E5=9C=A811.0=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=99=A8=E6=89=93=E5=BC=80=E5=90=8E=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E9=BC=A0=E6=A0=87=E6=BB=9A=E8=BD=AE=E6=BB=91?= =?UTF-8?q?=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 表格中处理触摸板滚动和缩放虽然用的都是MouseWheelListener接口,但是是分开注册。 其中处理纵向滚动的是逻辑是在GridMouseAdapter中实现,而处理缩放的逻辑则是在 FormReportComponentComposite.java(表单报表块)和 ReportComponentComposite.java(报表) 中实现。 所以删除GridMouseAdapter中处理鼠标纵向滚动的的代码后,表单报表块就无法处理鼠标纵向滚动了。 目前排查了下,发现还有FormReportComponentComposite(表单报表块)以及PreviewPane(组件快捷配置) 还未实现触摸板双向滚动,所以一起处理下,将原来添加缩放的逻辑替换为双向滚动 + 缩放. 【改动思路】 同上 --- .../form/FormReportComponentComposite.java | 19 ++--- ...rtComponentCompositeMouseWheelHandler.java | 79 +++++++++++++++++++ .../design/share/ui/effect/PreviewPane.java | 25 +----- .../effect/PreviewPaneMouseWheelHandler.java | 69 ++++++++++++++++ 4 files changed, 156 insertions(+), 36 deletions(-) create mode 100644 designer-realize/src/main/java/com/fr/design/mainframe/form/FormReportComponentCompositeMouseWheelHandler.java create mode 100644 designer-realize/src/main/java/com/fr/design/share/ui/effect/PreviewPaneMouseWheelHandler.java diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/form/FormReportComponentComposite.java b/designer-realize/src/main/java/com/fr/design/mainframe/form/FormReportComponentComposite.java index 67235ee7b..05c3b13ec 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/form/FormReportComponentComposite.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/form/FormReportComponentComposite.java @@ -12,6 +12,8 @@ import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerUIModeConfig; import com.fr.design.mainframe.ElementCasePane; import com.fr.design.mainframe.JFormSliderPane; +import com.fr.design.mainframe.ReportComponent; +import com.fr.design.mainframe.ReportComponentCompositeMouseWheelHandler; import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; import com.fr.form.FormElementCaseContainerProvider; import com.fr.form.FormElementCaseProvider; @@ -53,23 +55,11 @@ public class FormReportComponentComposite extends JComponent implements TargetMo sheetNameTab = new FormTabPane(ecContainer, jform); this.add(createSouthControlPane(), BorderLayout.SOUTH); jSliderContainer.addValueChangeListener(showValSpinnerChangeListener); - this.elementCaseDesigner.elementCasePane.getGrid().addMouseWheelListener(showValSpinnerMouseWheelListener); + this.elementCaseDesigner.elementCasePane.getGrid().addMouseWheelListener(new FormReportComponentCompositeMouseWheelHandler(this)); elementCaseDesigner.addTargetModifiedListener(this); this.jSliderContainer.setShowValue((ScreenResolution.getScreenResolution() * HUND) / Constants.DEFAULT_WEBWRITE_AND_SCREEN_RESOLUTION); } - MouseWheelListener showValSpinnerMouseWheelListener = new MouseWheelListener() { - @Override - public void mouseWheelMoved(MouseWheelEvent e) { - if (InputEventBaseOnOS.isControlDown(e)) { - int dir = e.getWheelRotation(); - int old_resolution = jSliderContainer.getShowValue(); - jSliderContainer.setShowValue(old_resolution - (dir * DIR)); - } - } - }; - - ChangeListener showValSpinnerChangeListener = new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { @@ -195,5 +185,8 @@ public class FormReportComponentComposite extends JComponent implements TargetMo jForm.fireTargetModified(); } + public JFormSliderPane getSliderContainer() { + return this.jSliderContainer; + } } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/form/FormReportComponentCompositeMouseWheelHandler.java b/designer-realize/src/main/java/com/fr/design/mainframe/form/FormReportComponentCompositeMouseWheelHandler.java new file mode 100644 index 000000000..7e8da60dc --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/mainframe/form/FormReportComponentCompositeMouseWheelHandler.java @@ -0,0 +1,79 @@ +package com.fr.design.mainframe.form; + +import com.fr.common.inputevent.InputEventBaseOnOS; +import com.fr.design.mainframe.DesignerScaleMouseWheelHandler; +import com.fr.design.mainframe.DesignerTranslateMouseWheelHandler; +import com.fr.design.mainframe.JFormSliderPane; +import com.fr.design.mainframe.ReportComponentComposite; + +import javax.swing.JScrollBar; +import javax.swing.JViewport; +import java.awt.event.MouseWheelEvent; +import java.awt.event.MouseWheelListener; + +/** + * @author Starryi + * @version 1.0 + * Created by Starryi on 2021/9/24 + */ +public class FormReportComponentCompositeMouseWheelHandler implements MouseWheelListener { + private final DesignerTranslateMouseWheelHandler translateMouseWheelHandler; + private final DesignerScaleMouseWheelHandler scaleMouseWheelHandler; + + public FormReportComponentCompositeMouseWheelHandler(FormReportComponentComposite componentComposite) { + translateMouseWheelHandler = new DesignerTranslateMouseWheelHandler(new ScrollPaneAdapter(componentComposite)); + scaleMouseWheelHandler = new DesignerScaleMouseWheelHandler(new ScalePaneAdapter(componentComposite), ReportComponentComposite.DIR); + } + + @Override + public void mouseWheelMoved(MouseWheelEvent e) { + if (InputEventBaseOnOS.isControlDown(e)) { + scaleMouseWheelHandler.mouseWheelMoved(e); + } else { + translateMouseWheelHandler.mouseWheelMoved(e); + } + } + + private static class ScrollPaneAdapter implements DesignerTranslateMouseWheelHandler.ScrollPane { + private final FormReportComponentComposite componentComposite; + private JViewport viewport; + + public ScrollPaneAdapter(FormReportComponentComposite componentComposite) { + this.componentComposite = componentComposite; + this.viewport = new JViewport(); + } + + @Override + public boolean isWheelScrollingEnabled() { + return true; + } + + @Override + public JScrollBar getVerticalScrollBar() { + return componentComposite.elementCaseDesigner.getVerticalScrollBar(); + } + + @Override + public JScrollBar getHorizontalScrollBar() { + return componentComposite.elementCaseDesigner.getHorizontalScrollBar(); + } + + @Override + public JViewport getViewport() { + return viewport; + } + } + + private static class ScalePaneAdapter implements DesignerScaleMouseWheelHandler.ScalePane { + private final FormReportComponentComposite componentComposite; + + public ScalePaneAdapter(FormReportComponentComposite componentComposite) { + this.componentComposite = componentComposite; + } + + @Override + public JFormSliderPane getSlidePane() { + return componentComposite.getSliderContainer(); + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/share/ui/effect/PreviewPane.java b/designer-realize/src/main/java/com/fr/design/share/ui/effect/PreviewPane.java index 68cd025e3..a9a7a8512 100644 --- a/designer-realize/src/main/java/com/fr/design/share/ui/effect/PreviewPane.java +++ b/designer-realize/src/main/java/com/fr/design/share/ui/effect/PreviewPane.java @@ -70,7 +70,6 @@ public class PreviewPane extends JPanel implements CallbackEvent{ private static final int MAX = 400; private static final int HUND = 100; private static final int MIN = 10; - private static final int DIR = 10; private static final double MIN_TIME = 0.4; private Widget widget; @@ -194,27 +193,7 @@ public class PreviewPane extends JPanel implements CallbackEvent{ grid.removeMouseMotionListener(grid.getGridMouseAdapter()); grid.removeMouseListener(grid.getGridMouseAdapter()); - grid.addMouseWheelListener(new MouseWheelListener() { - @Override - public void mouseWheelMoved(MouseWheelEvent e) { - if (!InputEventBaseOnOS.isControlDown(e)) { - ElementCasePane reportPane = grid.getElementCasePane(); - if (reportPane.isVerticalScrollBarVisible()) { - JScrollBar scrollBar = reportPane.getVerticalScrollBar(); - int maxValue = scrollBar.getModel().getMaximum(); - int newValue = reportPane.getVerticalScrollBar().getValue() + e.getWheelRotation(); - int extendValue = GridUtils.getExtentValue(newValue, elementCase.getRowHeightList_DEC(), grid.getHeight(), getResolution()); - if (extendValue <= maxValue) { - reportPane.getVerticalScrollBar().setValue(newValue); - } - } - } else { - int dir = e.getWheelRotation(); - addScale( - dir * DIR); - grid.setCursor(SCALE_CURSOR); - } - } - }); + grid.addMouseWheelListener(new PreviewPaneMouseWheelHandler(this)); grid.addMouseMotionListener(new MouseMotionAdapter() { @Override @@ -320,7 +299,7 @@ public class PreviewPane extends JPanel implements CallbackEvent{ elementCasePane.repaint(); } - private void addScale(int step) { + public void addScale(int step) { scaleValue += step; scaleValue = fixedScale(scaleValue); plusButton.setEnabled(scaleValue < MAX); diff --git a/designer-realize/src/main/java/com/fr/design/share/ui/effect/PreviewPaneMouseWheelHandler.java b/designer-realize/src/main/java/com/fr/design/share/ui/effect/PreviewPaneMouseWheelHandler.java new file mode 100644 index 000000000..56e73955d --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/share/ui/effect/PreviewPaneMouseWheelHandler.java @@ -0,0 +1,69 @@ +package com.fr.design.share.ui.effect; + +import com.fr.common.inputevent.InputEventBaseOnOS; +import com.fr.design.mainframe.DesignerTranslateMouseWheelHandler; + +import javax.swing.JScrollBar; +import javax.swing.JViewport; +import java.awt.event.MouseWheelEvent; +import java.awt.event.MouseWheelListener; + +import static com.fr.design.share.ui.effect.PreviewPane.SCALE_CURSOR; + +/** + * @author Starryi + * @version 1.0 + * Created by Starryi on 2021/9/24 + */ +public class PreviewPaneMouseWheelHandler implements MouseWheelListener { + private static final int DIR = 10; + + private final DesignerTranslateMouseWheelHandler translateMouseWheelHandler; + private final PreviewPane previewPane; + + public PreviewPaneMouseWheelHandler(PreviewPane previewPane) { + this.translateMouseWheelHandler = new DesignerTranslateMouseWheelHandler(new PreviewPaneScrollPaneAdapter(previewPane)); + this.previewPane = previewPane; + } + + @Override + public void mouseWheelMoved(MouseWheelEvent e) { + if (InputEventBaseOnOS.isControlDown(e)) { + int dir = e.getWheelRotation(); + previewPane.addScale( - dir * DIR); + previewPane.getElementCasePane().getGrid().setCursor(SCALE_CURSOR); + } else { + translateMouseWheelHandler.mouseWheelMoved(e); + } + } + + private static class PreviewPaneScrollPaneAdapter implements DesignerTranslateMouseWheelHandler.ScrollPane { + private final PreviewPane previewPane; + private final JViewport viewport; + + public PreviewPaneScrollPaneAdapter(PreviewPane previewPane) { + this.previewPane = previewPane; + this.viewport = new JViewport(); + } + + @Override + public boolean isWheelScrollingEnabled() { + return true; + } + + @Override + public JScrollBar getVerticalScrollBar() { + return previewPane.getElementCasePane().getVerticalScrollBar(); + } + + @Override + public JScrollBar getHorizontalScrollBar() { + return previewPane.getElementCasePane().getHorizontalScrollBar(); + } + + @Override + public JViewport getViewport() { + return this.viewport; + } + } +} From 8c5a2ec35a0ba6da388b607aca27d64249cb90d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Thu, 20 Jan 2022 11:52:24 +0800 Subject: [PATCH 2/2] =?UTF-8?q?CHART-22531=20=E5=A4=9A=E5=88=86=E7=B1=BB?= =?UTF-8?q?=E8=BD=B4=E5=88=86=E5=B1=82=E8=AE=BE=E7=BD=AE=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E2=80=94=E8=AE=BE=E8=AE=A1=E5=99=A8=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../style/axis/VanChartAxisPaneHelper.java | 30 ++ .../axis/VanChartAxisStyleSettingPane.java | 74 ++-- .../style/axis/VanChartBaseAxisPane.java | 343 ++++-------------- .../style/axis/VanChartTimeAxisPane.java | 5 - .../style/axis/VanChartValueAxisPane.java | 5 - ...VanChartCategoryStylePaneWithCheckBox.java | 19 +- .../gauge/VanChartGaugeDetailAxisPane.java | 13 +- 7 files changed, 153 insertions(+), 336 deletions(-) create mode 100644 designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartAxisPaneHelper.java diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartAxisPaneHelper.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartAxisPaneHelper.java new file mode 100644 index 000000000..770043af9 --- /dev/null +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartAxisPaneHelper.java @@ -0,0 +1,30 @@ +package com.fr.van.chart.designer.style.axis; + +import com.fr.design.layout.TableLayout; +import com.fr.design.mainframe.chart.gui.style.ChartTextAttrPane; +import com.fr.design.mainframe.chart.gui.style.ChartTextAttrPaneWithThemeStyle; +import com.fr.design.mainframe.chart.mode.ChartEditContext; +import com.fr.van.chart.designer.TableLayout4VanChartHelper; + +import javax.swing.JPanel; + +public class VanChartAxisPaneHelper { + public static ChartTextAttrPane createAxisTextAttrPane() { + return ChartEditContext.supportTheme() ? new ChartTextAttrPaneWithThemeStyle() { + protected double getEdithAreaWidth() { + return TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH; + } + } : new ChartTextAttrPane() { + @Override + protected JPanel getContentPane(JPanel buttonPane) { + double p = TableLayout.PREFERRED; + double f = TableLayout.FILL; + double e = TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH; + double[] columnSize = {f, e}; + double[] rowSize = {p, p, p}; + + return TableLayout4VanChartHelper.createGapTableLayoutPane(getComponents(buttonPane), rowSize, columnSize); + } + }; + } +} diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartAxisStyleSettingPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartAxisStyleSettingPane.java index 94a9e4a0c..5deb49831 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartAxisStyleSettingPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartAxisStyleSettingPane.java @@ -10,11 +10,9 @@ import com.fr.design.gui.itextfield.UITextField; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.TableLayout; import com.fr.design.mainframe.chart.gui.style.ChartTextAttrPane; -import com.fr.design.mainframe.chart.gui.style.ChartTextAttrPaneWithThemeStyle; -import com.fr.design.mainframe.chart.mode.ChartEditContext; import com.fr.design.utils.gui.UIComponentUtils; import com.fr.design.widget.FRWidgetFactory; -import com.fr.plugin.chart.VanChartAxisCategoryStyle; +import com.fr.plugin.chart.attr.axis.VanChartAxisLabelStyle; import com.fr.van.chart.designer.TableLayout4VanChartHelper; import com.fr.van.chart.designer.style.axis.component.AxisLabelDisplayComboBox; @@ -25,10 +23,11 @@ import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -public class VanChartAxisStyleSettingPane extends BasicBeanPane { +public class VanChartAxisStyleSettingPane extends BasicBeanPane { private static final double ROTATION_MAX = 90.0; private AxisLabelDisplayComboBox labelDisplayComboBox; + private JPanel labelDisplayPane; private ChartTextAttrPane labelTextAttrPane; private UINumberDragPane labelTextRotation; private UIButtonGroup labelGapStyle; @@ -37,7 +36,10 @@ public class VanChartAxisStyleSettingPane extends BasicBeanPane(new String[]{Toolkit.i18nText("Fine-Design_Chart_Automatic"), Toolkit.i18nText("Fine-Design_Chart_Fixed")}); labelGapValue = new UITextField(); labelGapPane = createLabelGapPane(row, column); @@ -61,6 +66,10 @@ public class VanChartAxisStyleSettingPane extends BasicBeanPane { protected UIButtonGroup showLabel; protected UIButtonGroup showLogic; - protected ChartTextAttrPane labelTextAttrPane; - protected UINumberDragPane labelTextRotation; - - private AxisLabelDisplayComboBox labelDisplayComboBox; - - //轴标签缩略间隔显示 恢复用注释。下面6行删除。 - protected UITextField labelGapValue; private UIButtonGroup overlapHandleTypeGroup; - protected UIButtonGroup labelGapStyle; //轴标签缩略间隔显示 恢复用注释。取消注释。 //protected UISpinner labelGapValue; - protected JPanel labelPanel; - private JPanel labelStylePane; + protected JPanel labelContentPane; + private VanChartAxisStyleSettingPane labelPane; private JPanel showLogicPane; - private JPanel labelGapPane; - private JPanel labelGapStylePane; - private JPanel labelGapValuePane; - private JPanel labelDisplayPane; + private JPanel labelStylePane; private JPanel categoryStylePane; + private VanChartAxisStyleSettingPane wholeDisplayLabelPanel; private List categoryStyles = new ArrayList<>(); protected LineComboBox axisLineStyle; @@ -234,17 +219,18 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { protected JPanel createLabelPane(double[] row, double[] col) { initLabelComponents(); - labelGapPane = createLabelGapPane(row, col); - labelPanel = createLabelDetailPanel(); + labelPane = new VanChartAxisStyleSettingPane(showLabelDisplay(), getChartTextAttrPane()); + wholeDisplayLabelPanel = new VanChartAxisStyleSettingPane(showLabelDisplay(), getChartTextAttrPane()); + wholeDisplayLabelPanel.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 10)); addComponentsListener(); JPanel showLabelPane = TableLayout4VanChartHelper.createGapTableLayoutPane(Toolkit.i18nText("Fine-Design_Chart_Axis_Label"), showLabel); - JPanel showLogicPane = createShowLogicPane(); + JPanel labelContentPane = createLabelContentPane(); JPanel labelPane = new JPanel(new BorderLayout()); labelPane.add(showLabelPane, BorderLayout.NORTH); - labelPane.add(showLogicPane, BorderLayout.CENTER); + labelPane.add(labelContentPane, BorderLayout.CENTER); return TableLayout4VanChartHelper.createExpandablePaneWithTitle(PaneTitleConstants.CHART_STYLE_LABEL_TITLE, labelPane); } @@ -253,15 +239,6 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { showLabel = new UIButtonGroup(new String[]{Toolkit.i18nText("Fine-Design_Chart_Use_Show"), Toolkit.i18nText("Fine-Design_Chart_Hidden")}); showLogic = new UIButtonGroup(new String[]{Toolkit.i18nText("Fine-Design_Chart_Axis_Style_Whole_Display"), Toolkit.i18nText("Fine-Design_Chart_Axis_Style_Layer_Display")}); initButtonGroupListener(); - - labelDisplayComboBox = new AxisLabelDisplayComboBox(); - labelDisplayPane = TableLayout4VanChartHelper.createGapTableLayoutPane(Toolkit.i18nText("Fine-Design_Chart_Axis_Label_Show"), labelDisplayComboBox, TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH); - labelDisplayPane.setVisible(showLabelDisplay()); - - labelTextAttrPane = getChartTextAttrPane(); - labelTextRotation = new UINumberDragPane(-ROTATION_MAX, ROTATION_MAX); - labelGapStyle = new UIButtonGroup<>(new String[]{Toolkit.i18nText("Fine-Design_Chart_Automatic"), Toolkit.i18nText("Fine-Design_Chart_Fixed")}); - labelGapValue = new UITextField(); } private void initButtonGroupListener() { @@ -288,14 +265,18 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { * * @return */ - private JPanel createShowLogicPane() { + private JPanel createLabelContentPane() { + labelContentPane = new JPanel(new BorderLayout()); showLogicPane = new JPanel(new BorderLayout()); labelStylePane = new JPanel(new CardLayout()); - labelStylePane.add(labelPanel, WHOLE_DISPLAY); + labelStylePane.add(wholeDisplayLabelPanel, WHOLE_DISPLAY); labelStylePane.add(createCategoryStylePane(), LAYER_DISPLAY); showLogicPane.add(TableLayout4VanChartHelper.createGapTableLayoutPane(Toolkit.i18nText("Fine-Design_Chart_Axis_Label_Show_Logic"), showLogic), BorderLayout.NORTH); showLogicPane.add(labelStylePane, BorderLayout.CENTER); - return showLogicPane; + showLogicPane.setVisible(false); + labelContentPane.add(labelPane, BorderLayout.NORTH); + labelContentPane.add(showLogicPane, BorderLayout.CENTER); + return labelContentPane; } /** @@ -309,37 +290,6 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { return categoryStylePane; } - private JPanel createLabelGapPane(double[] row, double[] col) { - Component[][] gapComponents = new Component[][]{ - new Component[]{null, null}, - new Component[]{ - FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Chart_TextRotation")), - UIComponentUtils.wrapWithBorderLayoutPane(labelTextRotation) - }, - new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Label_Interval")), labelGapStyle} - }; - - JPanel gapDetailPane = TableLayout4VanChartHelper.createGapTableLayoutPane(gapComponents, row, col); - labelGapValuePane = TableLayout4VanChartHelper.createGapTableLayoutPane(Toolkit.i18nText(""), labelGapValue, TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH); - - JPanel panel = new JPanel(new BorderLayout()); - panel.add(gapDetailPane, BorderLayout.CENTER); - panel.add(labelGapValuePane, BorderLayout.SOUTH); - - return panel; - } - - private JPanel createLabelDetailPanel() { - JPanel panel = new JPanel(new BorderLayout()); - panel.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 0)); - - panel.add(labelDisplayPane, BorderLayout.NORTH); - panel.add(labelTextAttrPane, BorderLayout.CENTER); - panel.add(labelGapPane, BorderLayout.SOUTH); - - return panel; - } - private void addComponentsListener() { // 显示/隐藏 showLabel.addActionListener(new ActionListener() { @@ -348,123 +298,10 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { checkLabelPane(); } }); - - // 间隔/缩略/换行 - labelDisplayComboBox.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - checkLabelGapPane(); - } - }); - - // 自动/固定 - labelGapStyle.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - checkLabelGapValuePane(); - } - }); - } - -// protected JPanel createLabelPane(double[] row, double[] col){ -// double p = TableLayout.PREFERRED; -// showLabel = new UIButtonGroup(new String[]{Toolkit.i18nText("Fine-Design_Chart_Use_Show"), Toolkit.i18nText("Fine-Design_Chart_Hidden")}); -// labelTextAttrPane = getChartTextAttrPane(); -// -// JPanel rotationPane = createLabelRotationPane(col); -// JPanel overlapPane = createLabelOverlapPane(); -// -// -// Component[][] components = new Component[][]{ -// new Component[]{labelTextAttrPane, null}, -// new Component[]{rotationPane, null}, -// new Component[]{overlapPane, null}, -// }; -// -// JPanel showLabelPane = TableLayout4VanChartHelper.createGapTableLayoutPane(Toolkit.i18nText("Fine-Design_Chart_Axis_Label"),showLabel); -// labelPanel = TableLayout4VanChartHelper.createGapTableLayoutPane(components, new double[]{p, p, p}, col); -// labelPanel.setBorder(BorderFactory.createEmptyBorder(0,10,0,0)); -// showLabel.addActionListener(new ActionListener() { -// @Override -// public void actionPerformed(ActionEvent e) { -// checkLabelPane(); -// } -// }); -// JPanel jPanel = new JPanel(new BorderLayout()); -// jPanel.add(showLabelPane, BorderLayout.NORTH); -// jPanel.add(labelPanel, BorderLayout.CENTER); -// return TableLayout4VanChartHelper.createExpandablePaneWithTitle(PaneTitleConstants.CHART_STYLE_LABEL_TITLE, jPanel); -// } - - private JPanel createLabelRotationPane(double[] col) { - labelTextRotation = new UINumberDragPane(-ROTATION_MAX, ROTATION_MAX); - - Component[][] gapComponents = new Component[][]{ - new Component[]{ - FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Chart_TextRotation")), - UIComponentUtils.wrapWithBorderLayoutPane(labelTextRotation) - } - }; - return TableLayout4VanChartHelper.createGapTableLayoutPane(gapComponents, new double[]{TableLayout.PREFERRED}, col); - } - - private JPanel createLabelOverlapPane() { - - labelGapStyle = new UIButtonGroup(new String[]{Toolkit.i18nText("Fine-Design_Chart_Automatic"), Toolkit.i18nText("Fine-Design_Chart_Fixed")}); - labelGapStylePane = TableLayout4VanChartHelper.createGapTableLayoutPane(Toolkit.i18nText("Fine-Design_Chart_Label_Interval"), labelGapStyle, TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH); - - //轴标签缩略间隔显示 恢复用注释。取消注释。 - //labelGapValue = new UISpinner(0, Integer.MAX_VALUE, 1, 1); - labelGapValuePane = TableLayout4VanChartHelper.createGapTableLayoutPane(StringUtils.EMPTY, labelGapValue, TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH); - - JPanel panel = new JPanel(new BorderLayout(0, 0)); - addOverlapGroupButton(panel); - panel.add(labelGapStylePane, BorderLayout.CENTER); - panel.add(labelGapValuePane, BorderLayout.SOUTH); - - labelGapStyle.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - checkLabelGapValuePane(); - } - }); - - return panel; - } - - protected void addOverlapGroupButton(JPanel panel) { - overlapHandleTypeGroup = new UIButtonGroup(new String[]{Toolkit.i18nText("Fine-Design_Chart_Label_OverlapAbbreviate"), Toolkit.i18nText("Fine-Design_Chart_Label_OverlapInterval")}, - new OverlapHandleType[]{OverlapHandleType.ABBREVIATE, OverlapHandleType.INTERVAL}); - JPanel north = TableLayout4VanChartHelper.createGapTableLayoutPane(Toolkit.i18nText("Fine-Design_Chart_Label_WhenOverlap"), overlapHandleTypeGroup, TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH); - - panel.add(north, BorderLayout.NORTH); - - overlapHandleTypeGroup.addChangeListener(new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - checkLabelGapAndStylePane(); - } - }); - } protected ChartTextAttrPane getChartTextAttrPane() { - return ChartEditContext.supportTheme() ? new ChartTextAttrPaneWithThemeStyle() { - protected double getEdithAreaWidth() { - return TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH; - } - } : new ChartTextAttrPane() { - @Override - protected JPanel getContentPane(JPanel buttonPane) { - double p = TableLayout.PREFERRED; - double f = TableLayout.FILL; - double e = TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH; - double[] columnSize = {f, e}; - double[] rowSize = {p, p, p}; - - return TableLayout4VanChartHelper.createGapTableLayoutPane(getComponents(buttonPane), rowSize, columnSize); - } - }; + return VanChartAxisPaneHelper.createAxisTextAttrPane(); } protected JPanel createLineStylePane(double[] row, double[] col) { @@ -605,7 +442,6 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { protected void checkAllUse() { checkCardPane(); checkLabelPane(); - checkLabelGapPane(); checkTitlePane(); //区域显示策略 恢复用注释。删除下面一行。 checkMaxProPortionUse(); @@ -638,14 +474,8 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { protected void checkLabelPane() { if (showLabel != null) { boolean enabled = showLabel.getSelectedIndex() == 0; - if (showLogicPane != null) { - showLogicPane.setVisible(enabled); - } - if (enabled) { - //轴标签缩略间隔显示 恢复用注释。下面1行删除。 - checkLabelGapValuePane(); - //轴标签缩略间隔显示 恢复用注释。取消注释。 - //checkLabelGapAndStylePane(); + if (labelContentPane != null) { + labelContentPane.setVisible(enabled); } } } @@ -656,39 +486,6 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { } } - private void checkLabelGapAndStylePane() { - if (overlapHandleTypeGroup != null && labelGapStylePane != null) { - boolean visible = overlapHandleTypeGroup.getSelectedItem() == OverlapHandleType.INTERVAL; - - labelGapStylePane.setVisible(visible); - } - checkLabelGapValuePane(); - } - - protected void checkLabelGapPane() { - if (labelGapPane != null) { - boolean visible = true; - - if (showLabelDisplay() && labelDisplayPane != null && labelDisplayComboBox != null) { - visible = labelDisplayComboBox.getSelectedIndex() == 0; - } - - labelGapPane.setVisible(visible); - } - } - - protected void checkLabelGapValuePane() { - if (labelGapValuePane != null && labelGapStyle != null) { - boolean visible = labelGapStyle.getSelectedIndex() == 1; - //轴标签缩略间隔显示 恢复用注释。取消注释。 -// if (overlapHandleTypeGroup != null) { -// visible = visible && overlapHandleTypeGroup.getSelectedItem() == OverlapHandleType.INTERVAL; -// } - labelGapValuePane.setVisible(visible); - } - } - - /** * 是否是指定类型 * @@ -767,7 +564,18 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { showLabel.setSelectedIndex(axis.isShowAxisLabel() ? 0 : 1); } + labelPane.populateBean(getAxisLabelStyle(axis)); populateShowLogicPane(axis); + switchLabelPane(axis); + labelContentPane.validate(); + } + + /** + * 切换显示是单分类样式设置面板还是多分类样式设置面板 + */ + private void switchLabelPane(VanChartAxis axis) { + labelPane.setVisible(!axis.isMultiCategory()); + showLogicPane.setVisible(axis.isMultiCategory()); } private void populateShowLogicPane(VanChartAxis axis) { @@ -784,29 +592,16 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { * populate整体显示那个card面板 */ private void populateWholeDisplayPane(VanChartAxis axis) { - TextAttr labelTextAttr = axis.getTextAttr(); - if (labelTextAttrPane != null) { - labelTextAttrPane.populate(labelTextAttr); - } - if (labelTextRotation != null) { - labelTextRotation.populateBean((double) labelTextAttr.getRotation()); - } - //轴标签缩略间隔显示 恢复用注释。取消注释。 -// if (overlapHandleTypeGroup != null) { -// overlapHandleTypeGroup.setSelectedItem(axis.getOverlapHandleType()); -// } - if (labelDisplayComboBox != null) { - labelDisplayComboBox.populateBean(axis.getLabelDisplay()); - } - if (labelGapStyle != null) { - labelGapStyle.setSelectedIndex(axis.isAutoLabelGap() ? 0 : 1); - } - if (labelGapValue != null) { - //轴标签缩略间隔显示 恢复用注释。下面1行删除。 - labelGapValue.setText(axis.getLabelNumber().getContent()); - //轴标签缩略间隔显示 恢复用注释。取消注释。 - //labelGapValue.setValue(axis.getIntervalNumber()); - } + wholeDisplayLabelPanel.populateBean(getAxisLabelStyle(axis)); + } + + private VanChartAxisLabelStyle getAxisLabelStyle(VanChartAxis axis) { + VanChartAxisLabelStyle style = new VanChartAxisLabelStyle(); + style.setLabelDisplay(axis.getLabelDisplay()); + style.setTextAttr(axis.getTextAttr()); + style.setAutoLabelGap(axis.isAutoLabelGap()); + style.setLabelIntervalNumber(axis.getLabelNumber()); + return style; } /** @@ -871,21 +666,21 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { private void populateCategoryStyles(VanChartAxis axis, String uuid, int index) { VanChartCategoryStylePaneWithCheckBox pane = new VanChartCategoryStylePaneWithCheckBox(parent, this, Toolkit.i18nText("Fine-Design_Chart_Style_Category") + (index + 1)); - VanChartAxisCategoryStyle style = populateAxisCategoryStyles(axis, uuid, index); + VanChartAxisLabelStyle style = populateAxisCategoryStyles(axis, uuid, index); pane.populate(style, uuid); categoryStyles.add(pane); categoryStylePane.add(createCateLableStylePanel(), BorderLayout.NORTH); } - private VanChartAxisCategoryStyle populateAxisCategoryStyles(VanChartAxis axis, String uuid, int index) { - VanChartAxisCategoryStyle style; + private VanChartAxisLabelStyle populateAxisCategoryStyles(VanChartAxis axis, String uuid, int index) { + VanChartAxisLabelStyle style; if (axis.getCategoryStyle(uuid) != null) { style = axis.getCategoryStyle(uuid); } else { style = axis.getCategoryStyleByIndex(index); if (style == null) { - style = new VanChartAxisCategoryStyle(); + style = new VanChartAxisLabelStyle(); } axis.addCategoryStyle(uuid, style); } @@ -1041,7 +836,13 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { if (showLabel != null) { axis.setShowAxisLabel(showLabel.getSelectedIndex() == 0); } - updateShowLogicPane(axis); + if (!axis.isMultiCategory()) { + axis.setLabelDisplayMode(VanChartAxis.WHOLE_DISPLAY); + updateLabelPaneStyle(axis, labelPane); + } else { + updateShowLogicPane(axis); + } + switchLabelPane(axis); } private void updateShowLogicPane(VanChartAxis axis) { @@ -1057,33 +858,15 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { * update整体显示那个card面板 */ private void updateWholeDisplayPane(VanChartAxis axis) { - TextAttr labelTextAttr = axis.getTextAttr(); - if (labelTextAttrPane != null) { - labelTextAttrPane.update(labelTextAttr); - } - if (labelTextRotation != null) { - labelTextAttr.setRotation(labelTextRotation.updateBean().intValue()); - } - //轴标签缩略间隔显示 恢复用注释。取消注释。 -// if (overlapHandleTypeGroup != null) { -// axis.setOverlapHandleType(overlapHandleTypeGroup.getSelectedItem()); -// } - if (labelDisplayComboBox != null) { - axis.setLabelDisplay(labelDisplayComboBox.updateBean()); - } - if (labelGapStyle != null) { - axis.setAutoLabelGap(labelGapStyle.getSelectedIndex() == 0); - } - if (labelGapValue != null) { - //轴标签缩略间隔显示 恢复用注释。下面5行删除。 - if (axis.isAutoLabelGap()) { - axis.setLabelIntervalNumber(BaseFormula.createFormulaBuilder().build("1")); - } else { - axis.setLabelIntervalNumber(BaseFormula.createFormulaBuilder().build(labelGapValue.getText())); - } - //轴标签缩略间隔显示 恢复用注释。取消注释。 - //axis.setIntervalNumber((int) labelGapValue.getValue()); - } + updateLabelPaneStyle(axis, wholeDisplayLabelPanel); + } + + private void updateLabelPaneStyle(VanChartAxis axis, VanChartAxisStyleSettingPane pane) { + VanChartAxisLabelStyle style = pane.updateBean(); + axis.setLabelDisplay(style.getLabelDisplay()); + axis.setTextAttr(style.getTextAttr()); + axis.setAutoLabelGap(style.isAutoLabelGap()); + axis.setLabelIntervalNumber(style.getLabelIntervalNumber()); } /** @@ -1093,8 +876,8 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { */ private void updateLayerDisplayPane(VanChartAxis axis) { for (VanChartCategoryStylePaneWithCheckBox categoryStyle : categoryStyles) { - Map styleMap = categoryStyle.update(); - for (Map.Entry entry : styleMap.entrySet()) { + Map styleMap = categoryStyle.update(); + for (Map.Entry entry : styleMap.entrySet()) { axis.addCategoryStyle(entry.getKey(), entry.getValue()); } } diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartTimeAxisPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartTimeAxisPane.java index 1a0b78982..500667963 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartTimeAxisPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartTimeAxisPane.java @@ -85,11 +85,6 @@ public class VanChartTimeAxisPane extends VanChartBaseAxisPane { return false; } - @Override - protected void addOverlapGroupButton(JPanel panel) { - //do nothing - } - private JPanel createValueDefinition(){ timeMinMaxValuePane = new TimeMinMaxValuePane(); return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Value_Definition"), timeMinMaxValuePane); diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartValueAxisPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartValueAxisPane.java index 7633d0c1e..032642c93 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartValueAxisPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartValueAxisPane.java @@ -66,11 +66,6 @@ public class VanChartValueAxisPane extends VanChartBaseAxisPane { return false; } - @Override - protected void addOverlapGroupButton(JPanel panel) { - //do nothing - } - protected JPanel createMinMaxValuePane(double[] row, double[] col){ JPanel panel = createCommenValuePane(row,col); return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Value_Definition"), panel); diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/component/VanChartCategoryStylePaneWithCheckBox.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/component/VanChartCategoryStylePaneWithCheckBox.java index 71b2b2948..52877216a 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/component/VanChartCategoryStylePaneWithCheckBox.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/component/VanChartCategoryStylePaneWithCheckBox.java @@ -5,8 +5,9 @@ import com.fr.design.gui.frpane.UIBubbleFloatPane; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.i18n.Toolkit; -import com.fr.plugin.chart.VanChartAxisCategoryStyle; +import com.fr.plugin.chart.attr.axis.VanChartAxisLabelStyle; import com.fr.stable.Constants; +import com.fr.van.chart.designer.style.axis.VanChartAxisPaneHelper; import com.fr.van.chart.designer.style.axis.VanChartAxisStyleSettingPane; import javax.swing.BorderFactory; @@ -30,7 +31,7 @@ public class VanChartCategoryStylePaneWithCheckBox extends JPanel { private AbstractAttrNoScrollPane parent; private String axisId; - private VanChartAxisCategoryStyle axis; + private VanChartAxisLabelStyle axis; public VanChartCategoryStylePaneWithCheckBox(AbstractAttrNoScrollPane parent, JPanel showOnPane, String checkBoxName) { this.parent = parent; @@ -64,13 +65,13 @@ public class VanChartCategoryStylePaneWithCheckBox extends JPanel { @Override public void mouseReleased(MouseEvent e) { if (settingPane == null) { - settingPane = new VanChartAxisStyleSettingPane(); + settingPane = new VanChartAxisStyleSettingPane(VanChartAxisPaneHelper.createAxisTextAttrPane()); } Point comPoint = settingButton.getLocationOnScreen(); Point arrowPoint = new Point(comPoint.x +settingButton.getWidth() - 25, comPoint.y + settingButton.getHeight()); Dimension size = settingPane.getPreferredSize(); - UIBubbleFloatPane pane = new UIBubbleFloatPane(Constants.LEFT, arrowPoint, settingPane, size.width, 216) { + UIBubbleFloatPane pane = new UIBubbleFloatPane(Constants.LEFT, arrowPoint, settingPane, size.width, 216) { @Override public void updateContentPane() { @@ -87,15 +88,15 @@ public class VanChartCategoryStylePaneWithCheckBox extends JPanel { } } - public void populate(VanChartAxisCategoryStyle style, String uuid) { + public void populate(VanChartAxisLabelStyle style, String uuid) { this.axis = style; this.axisId = uuid; - checkBox.setSelected(axis.isAvailable()); + checkBox.setSelected(axis.isShowLabel()); } - public Map update() { - axis.setAvailable(checkBox.isSelected()); - Map map = new LinkedHashMap<>(); + public Map update() { + axis.setShowLabel(checkBox.isSelected()); + Map map = new LinkedHashMap<>(); map.put(axisId, axis); return map; } diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/gauge/VanChartGaugeDetailAxisPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/gauge/VanChartGaugeDetailAxisPane.java index 91de3ed35..aa2c2a3fd 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/gauge/VanChartGaugeDetailAxisPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/gauge/VanChartGaugeDetailAxisPane.java @@ -1,5 +1,6 @@ package com.fr.van.chart.designer.style.axis.gauge; +import com.fr.chart.base.TextAttr; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ilable.UILabel; import com.fr.design.i18n.Toolkit; @@ -35,6 +36,7 @@ public class VanChartGaugeDetailAxisPane extends VanChartValueAxisPane { private static final long serialVersionUID = -9213466625457882224L; + private ChartTextAttrPane labelTextAttrPane; private ColorSelectBox mainTickColor; private ColorSelectBox secTickColor; @@ -83,12 +85,12 @@ public class VanChartGaugeDetailAxisPane extends VanChartValueAxisPane { protected JPanel createLabelPane(double[] row, double[] col) { showLabel = new UIButtonGroup(new String[]{Toolkit.i18nText("Fine-Design_Chart_Use_Show"), Toolkit.i18nText("Fine-Design_Chart_Hidden")}); labelTextAttrPane = getChartTextAttrPane(); - labelPanel = new JPanel(new BorderLayout()); - labelPanel.add(labelTextAttrPane); - labelPanel.setBorder(BorderFactory.createEmptyBorder(0, 15, 0, 0)); + labelContentPane = new JPanel(new BorderLayout()); + labelContentPane.add(labelTextAttrPane); + labelContentPane.setBorder(BorderFactory.createEmptyBorder(0, 15, 0, 0)); JPanel panel = new JPanel(new BorderLayout(0, 6)); panel.add(TableLayout4VanChartHelper.createGapTableLayoutPane(Toolkit.i18nText("Fine-Design_Chart_Axis_Label"), showLabel), BorderLayout.NORTH); - panel.add(labelPanel, BorderLayout.CENTER); + panel.add(labelContentPane, BorderLayout.CENTER); showLabel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -183,6 +185,7 @@ public class VanChartGaugeDetailAxisPane extends VanChartValueAxisPane { public void populateBean(VanChartAxis axis) { VanChartGaugeAxis gaugeAxis = (VanChartGaugeAxis) axis; + labelTextAttrPane.populate(axis.getTextAttr()); if (mainTickColor != null) { mainTickColor.setSelectObject(gaugeAxis.getMainTickColor()); } @@ -194,6 +197,8 @@ public class VanChartGaugeDetailAxisPane extends VanChartValueAxisPane { public void updateBean(VanChartAxis axis) { VanChartGaugeAxis gaugeAxis = (VanChartGaugeAxis) axis; + TextAttr textAttr = axis.getTextAttr(); + labelTextAttrPane.update(textAttr); if (mainTickColor != null) { gaugeAxis.setMainTickColor(mainTickColor.getSelectObject()); }