From 10dd3858cdde8e28497d0926f380212c43dcbaef Mon Sep 17 00:00:00 2001 From: kerry Date: Tue, 14 Apr 2020 20:01:39 +0800 Subject: [PATCH] =?UTF-8?q?KERNEL-3501=20=E5=86=B3=E7=AD=96=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E8=87=AA=E9=80=82=E5=BA=94=E5=90=8E=E7=AB=AF=E9=87=8D?= =?UTF-8?q?=E6=9E=84=EF=BC=8C=E6=95=B4=E7=90=86=E4=BB=A3=E7=A0=81=EF=BC=8C?= =?UTF-8?q?=E6=8F=90=E4=BE=9B=E5=8D=95=E5=85=83=E6=A0=BC=E5=8D=95=E4=BD=8D?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/unit/ReportLengthUNIT.java | 21 ++++++++ .../unit/ReportLengthUnitProcessor.java | 14 +++++ .../com/fr/design/unit/UnitConvertUtil.java | 42 +++++++++++++++ .../AbstracReportLengthUnitProcessor.java | 19 +++++++ .../unit/impl/AbstractReportLengthUNIT.java | 22 ++++++++ .../design/unit/impl/CMReportLengthUNIT.java | 32 +++++++++++ .../unit/impl/INCHReportLengthUNIT.java | 31 +++++++++++ .../design/unit/impl/MMReportLengthUNIT.java | 31 +++++++++++ .../design/unit/impl/PTReportLengthUNIT.java | 30 +++++++++++ .../FormWidgetDefinePaneFactoryBase.java | 7 ++- .../columnrow/ColumnRowSizingAction.java | 49 +++++------------ .../java/com/fr/design/condition/WHPane.java | 53 +++++-------------- .../grid/AbstractGridHeaderMouseHandler.java | 26 +++------ 13 files changed, 280 insertions(+), 97 deletions(-) create mode 100644 designer-base/src/main/java/com/fr/design/unit/ReportLengthUNIT.java create mode 100644 designer-base/src/main/java/com/fr/design/unit/ReportLengthUnitProcessor.java create mode 100644 designer-base/src/main/java/com/fr/design/unit/UnitConvertUtil.java create mode 100644 designer-base/src/main/java/com/fr/design/unit/impl/AbstracReportLengthUnitProcessor.java create mode 100644 designer-base/src/main/java/com/fr/design/unit/impl/AbstractReportLengthUNIT.java create mode 100644 designer-base/src/main/java/com/fr/design/unit/impl/CMReportLengthUNIT.java create mode 100644 designer-base/src/main/java/com/fr/design/unit/impl/INCHReportLengthUNIT.java create mode 100644 designer-base/src/main/java/com/fr/design/unit/impl/MMReportLengthUNIT.java create mode 100644 designer-base/src/main/java/com/fr/design/unit/impl/PTReportLengthUNIT.java diff --git a/designer-base/src/main/java/com/fr/design/unit/ReportLengthUNIT.java b/designer-base/src/main/java/com/fr/design/unit/ReportLengthUNIT.java new file mode 100644 index 000000000..513232d95 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/unit/ReportLengthUNIT.java @@ -0,0 +1,21 @@ +package com.fr.design.unit; + +import com.fr.stable.fun.mark.Mutable; +import com.fr.stable.unit.UNIT; + +/** + * Created by kerry on 2020-04-09 + */ +public interface ReportLengthUNIT extends Mutable { + String MARK_STRING = "ReportLengthUNIT"; + + int CURRENT_LEVEL = 1; + + String unitText(); + + int unitType(); + + float unit2Value4Scale(UNIT value); + + UNIT float2UNIT(float value); +} diff --git a/designer-base/src/main/java/com/fr/design/unit/ReportLengthUnitProcessor.java b/designer-base/src/main/java/com/fr/design/unit/ReportLengthUnitProcessor.java new file mode 100644 index 000000000..f496d69db --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/unit/ReportLengthUnitProcessor.java @@ -0,0 +1,14 @@ +package com.fr.design.unit; + +import com.fr.stable.fun.mark.Immutable; + +/** + * Created by kerry on 2020-04-09 + */ +public interface ReportLengthUnitProcessor extends Immutable { + String MARK_STRING = "ReportLengthUnitProcessor"; + int CURRENT_LEVEL = 1; + + ReportLengthUNIT getReportLengthUNIT(); + +} diff --git a/designer-base/src/main/java/com/fr/design/unit/UnitConvertUtil.java b/designer-base/src/main/java/com/fr/design/unit/UnitConvertUtil.java new file mode 100644 index 000000000..80d35d83b --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/unit/UnitConvertUtil.java @@ -0,0 +1,42 @@ +package com.fr.design.unit; + +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.unit.impl.CMReportLengthUNIT; +import com.fr.design.unit.impl.INCHReportLengthUNIT; +import com.fr.design.unit.impl.MMReportLengthUNIT; +import com.fr.design.unit.impl.PTReportLengthUNIT; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by kerry on 2020-04-09 + */ +public class UnitConvertUtil { + private static List lengthUNITList = new ArrayList(); + + static { + lengthUNITList.add(new CMReportLengthUNIT()); + lengthUNITList.add(new INCHReportLengthUNIT()); + lengthUNITList.add(new PTReportLengthUNIT()); + lengthUNITList.add(new MMReportLengthUNIT()); + } + + private UnitConvertUtil() { + + } + + + public static ReportLengthUNIT parseLengthUNIT(int unitType) { + ReportLengthUnitProcessor lengthUnitProcessor = ExtraDesignClassManager.getInstance().getSingle(ReportLengthUnitProcessor.MARK_STRING); + if (lengthUnitProcessor != null) { + return lengthUnitProcessor.getReportLengthUNIT(); + } + for (ReportLengthUNIT lengthUNIT : lengthUNITList) { + if (unitType == lengthUNIT.unitType()) { + return lengthUNIT; + } + } + return new MMReportLengthUNIT(); + } +} diff --git a/designer-base/src/main/java/com/fr/design/unit/impl/AbstracReportLengthUnitProcessor.java b/designer-base/src/main/java/com/fr/design/unit/impl/AbstracReportLengthUnitProcessor.java new file mode 100644 index 000000000..64242b3b3 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/unit/impl/AbstracReportLengthUnitProcessor.java @@ -0,0 +1,19 @@ +package com.fr.design.unit.impl; + +import com.fr.design.unit.ReportLengthUnitProcessor; + +/** + * Created by kerry on 2020-04-09 + */ +public abstract class AbstracReportLengthUnitProcessor implements ReportLengthUnitProcessor { + + @Override + public int currentAPILevel() { + return CURRENT_LEVEL; + } + + @Override + public int layerIndex() { + return DEFAULT_LAYER_INDEX; + } +} diff --git a/designer-base/src/main/java/com/fr/design/unit/impl/AbstractReportLengthUNIT.java b/designer-base/src/main/java/com/fr/design/unit/impl/AbstractReportLengthUNIT.java new file mode 100644 index 000000000..d1947b8f4 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/unit/impl/AbstractReportLengthUNIT.java @@ -0,0 +1,22 @@ +package com.fr.design.unit.impl; + + +import com.fr.design.unit.ReportLengthUNIT; + +/** + * Created by kerry on 2020-04-09 + */ +public abstract class AbstractReportLengthUNIT implements ReportLengthUNIT { + + + @Override + public int currentAPILevel() { + return CURRENT_LEVEL; + } + + @Override + public String mark4Provider() { + return getClass().getName(); + } + +} diff --git a/designer-base/src/main/java/com/fr/design/unit/impl/CMReportLengthUNIT.java b/designer-base/src/main/java/com/fr/design/unit/impl/CMReportLengthUNIT.java new file mode 100644 index 000000000..e3b550d01 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/unit/impl/CMReportLengthUNIT.java @@ -0,0 +1,32 @@ +package com.fr.design.unit.impl; + +import com.fr.design.unit.impl.AbstractReportLengthUNIT; +import com.fr.stable.Constants; +import com.fr.stable.unit.CM; +import com.fr.stable.unit.UNIT; + +/** + * Created by kerry on 2020-04-09 + */ +public class CMReportLengthUNIT extends AbstractReportLengthUNIT { + @Override + public String unitText() { + return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_CM"); + } + + @Override + public int unitType() { + return Constants.UNIT_CM; + } + + @Override + public float unit2Value4Scale(UNIT value) { + return value.toCMValue4Scale2(); + } + + @Override + public UNIT float2UNIT(float value) { + return new CM(value); + } + +} diff --git a/designer-base/src/main/java/com/fr/design/unit/impl/INCHReportLengthUNIT.java b/designer-base/src/main/java/com/fr/design/unit/impl/INCHReportLengthUNIT.java new file mode 100644 index 000000000..c919e14e1 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/unit/impl/INCHReportLengthUNIT.java @@ -0,0 +1,31 @@ +package com.fr.design.unit.impl; + +import com.fr.design.unit.impl.AbstractReportLengthUNIT; +import com.fr.stable.Constants; +import com.fr.stable.unit.INCH; +import com.fr.stable.unit.UNIT; + +/** + * Created by kerry on 2020-04-09 + */ +public class INCHReportLengthUNIT extends AbstractReportLengthUNIT { + @Override + public String unitText() { + return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_INCH"); + } + + @Override + public int unitType() { + return Constants.UNIT_INCH; + } + + @Override + public float unit2Value4Scale(UNIT value) { + return value.toINCHValue4Scale3(); + } + + @Override + public UNIT float2UNIT(float value) { + return new INCH(value); + } +} diff --git a/designer-base/src/main/java/com/fr/design/unit/impl/MMReportLengthUNIT.java b/designer-base/src/main/java/com/fr/design/unit/impl/MMReportLengthUNIT.java new file mode 100644 index 000000000..e6f3523ec --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/unit/impl/MMReportLengthUNIT.java @@ -0,0 +1,31 @@ +package com.fr.design.unit.impl; + +import com.fr.design.unit.impl.AbstractReportLengthUNIT; +import com.fr.stable.Constants; +import com.fr.stable.unit.MM; +import com.fr.stable.unit.UNIT; + +/** + * Created by kerry on 2020-04-09 + */ +public class MMReportLengthUNIT extends AbstractReportLengthUNIT { + @Override + public String unitText() { + return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_MM"); + } + + @Override + public int unitType() { + return Constants.UNIT_MM; + } + + @Override + public float unit2Value4Scale(UNIT value) { + return value.toMMValue4Scale2(); + } + + @Override + public UNIT float2UNIT(float value) { + return new MM(value); + } +} diff --git a/designer-base/src/main/java/com/fr/design/unit/impl/PTReportLengthUNIT.java b/designer-base/src/main/java/com/fr/design/unit/impl/PTReportLengthUNIT.java new file mode 100644 index 000000000..1ab5bbedf --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/unit/impl/PTReportLengthUNIT.java @@ -0,0 +1,30 @@ +package com.fr.design.unit.impl; + +import com.fr.stable.Constants; +import com.fr.stable.unit.PT; +import com.fr.stable.unit.UNIT; + +/** + * Created by kerry on 2020-04-09 + */ +public class PTReportLengthUNIT extends AbstractReportLengthUNIT { + @Override + public String unitText() { + return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_PT_Duplicate"); + } + + @Override + public int unitType() { + return Constants.UNIT_PT; + } + + @Override + public float unit2Value4Scale(UNIT value) { + return value.toPTValue4Scale2(); + } + + @Override + public UNIT float2UNIT(float value) { + return new PT(value); + } +} diff --git a/designer-form/src/main/java/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java b/designer-form/src/main/java/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java index 9df0a3201..1947e9ec4 100644 --- a/designer-form/src/main/java/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java +++ b/designer-form/src/main/java/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java @@ -127,6 +127,11 @@ public class FormWidgetDefinePaneFactoryBase { } + + public static void registerDefinePane(Class widget, Appearance appearance) { + defineMap.put(widget, appearance); + } + public static RN createWidgetDefinePane(XCreator creator, FormDesigner designer, Widget widget, Operator operator) { if (isExtraXWidget(widget)) { WidgetDefinePane widgetDefinePane = new WidgetDefinePane(creator, designer); @@ -165,4 +170,4 @@ public class FormWidgetDefinePaneFactoryBase { } } -} \ No newline at end of file +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/columnrow/ColumnRowSizingAction.java b/designer-realize/src/main/java/com/fr/design/actions/columnrow/ColumnRowSizingAction.java index c9cc9e1b5..b14d1945b 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/columnrow/ColumnRowSizingAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/columnrow/ColumnRowSizingAction.java @@ -10,14 +10,11 @@ import com.fr.design.mainframe.DesignerContext; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.mainframe.ElementCasePane; +import com.fr.design.unit.ReportLengthUNIT; +import com.fr.design.unit.UnitConvertUtil; import com.fr.grid.selection.CellSelection; import com.fr.report.elementcase.ElementCase; import com.fr.stable.ArrayUtils; -import com.fr.stable.Constants; -import com.fr.stable.unit.CM; -import com.fr.stable.unit.INCH; -import com.fr.stable.unit.MM; -import com.fr.stable.unit.PT; import com.fr.stable.unit.UNIT; /** @@ -28,7 +25,7 @@ public abstract class ColumnRowSizingAction extends AbstractColumnRowIndexAction protected ColumnRowSizingAction(ElementCasePane t, int indexOfColumnOrRow) { super(t, indexOfColumnOrRow); } - + @Override protected boolean executeActionReturnUndoRecordNeededWithCellSelection( CellSelection cs) { @@ -43,7 +40,7 @@ public abstract class ColumnRowSizingAction extends AbstractColumnRowIndexAction }; UNIT len = getShowLen(report, cs); populateNumberDialog(uPane, len); - + final CellSelection finalCS = cs; uPane.showSmallWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { @@ -52,21 +49,13 @@ public abstract class ColumnRowSizingAction extends AbstractColumnRowIndexAction try { float newHeight = (float) uPane.update(); int unitType = DesignerEnvManager.getEnvManager().getReportLengthUnit(); - UNIT len; - if (unitType == Constants.UNIT_CM) { - len = new CM(newHeight); - } else if (unitType == Constants.UNIT_INCH) { - len = new INCH(newHeight); - } else if (unitType == Constants.UNIT_PT) { - len = new PT(newHeight); - } else { - len = new MM(newHeight); - } + ReportLengthUNIT lengthUNIT = UnitConvertUtil.parseLengthUNIT(unitType); + UNIT len = lengthUNIT.float2UNIT(newHeight); updateAction(report, len, finalCS); } catch (ValueNotChangeException e) { // nothing } - + ePane.fireTargetModified(); } }).setVisible(true); @@ -75,28 +64,16 @@ public abstract class ColumnRowSizingAction extends AbstractColumnRowIndexAction protected void populateNumberDialog(final UnitInputPane uPane, UNIT unit) { int unitType = DesignerEnvManager.getEnvManager().getReportLengthUnit(); - float va; - if (unitType == Constants.UNIT_CM) { - va = unit.toCMValue4Scale2(); - uPane.setUnitText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_CM")); - } else if (unitType == Constants.UNIT_INCH) { - va = unit.toINCHValue4Scale3(); - uPane.setUnitText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_INCH")); - } else if (unitType == Constants.UNIT_PT) { - va = unit.toPTValue4Scale2(); - uPane.setUnitText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_PT")); - } else { - va = unit.toMMValue4Scale2(); - uPane.setUnitText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_MM")); - } - + ReportLengthUNIT lengthUNIT = UnitConvertUtil.parseLengthUNIT(unitType); + float va = lengthUNIT.unit2Value4Scale(unit); + uPane.setUnitText(lengthUNIT.unitText()); uPane.populate(va); } - + protected abstract String title4UnitInputPane(); - + protected abstract void updateAction(ElementCase report, UNIT len, CellSelection cs); - + protected abstract UNIT getShowLen(ElementCase report, CellSelection cs); protected abstract UNIT getIndexLen(int index, ElementCase report); diff --git a/designer-realize/src/main/java/com/fr/design/condition/WHPane.java b/designer-realize/src/main/java/com/fr/design/condition/WHPane.java index dce2d466a..ed8eea854 100644 --- a/designer-realize/src/main/java/com/fr/design/condition/WHPane.java +++ b/designer-realize/src/main/java/com/fr/design/condition/WHPane.java @@ -3,17 +3,16 @@ package com.fr.design.condition; import com.fr.design.DesignerEnvManager; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UIBasicSpinner; +import com.fr.design.unit.ReportLengthUNIT; +import com.fr.design.unit.UnitConvertUtil; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.report.cell.cellattr.highlight.HighlightAction; -import com.fr.stable.Constants; -import com.fr.stable.unit.*; +import com.fr.stable.unit.UNIT; -import javax.swing.*; -import java.awt.event.FocusAdapter; -import java.awt.event.FocusEvent; +import javax.swing.JSpinner; +import javax.swing.SpinnerNumberModel; import java.math.BigDecimal; -import java.text.ParseException; /** * @author richie @@ -45,23 +44,12 @@ public abstract class WHPane extends ConditionAttrSingleConditionPane