Browse Source

KERNEL-3501 决策报表自适应后端重构,整理代码,提供单元格单位修改的接口

feature/big-screen
kerry 4 years ago
parent
commit
10dd3858cd
  1. 21
      designer-base/src/main/java/com/fr/design/unit/ReportLengthUNIT.java
  2. 14
      designer-base/src/main/java/com/fr/design/unit/ReportLengthUnitProcessor.java
  3. 42
      designer-base/src/main/java/com/fr/design/unit/UnitConvertUtil.java
  4. 19
      designer-base/src/main/java/com/fr/design/unit/impl/AbstracReportLengthUnitProcessor.java
  5. 22
      designer-base/src/main/java/com/fr/design/unit/impl/AbstractReportLengthUNIT.java
  6. 32
      designer-base/src/main/java/com/fr/design/unit/impl/CMReportLengthUNIT.java
  7. 31
      designer-base/src/main/java/com/fr/design/unit/impl/INCHReportLengthUNIT.java
  8. 31
      designer-base/src/main/java/com/fr/design/unit/impl/MMReportLengthUNIT.java
  9. 30
      designer-base/src/main/java/com/fr/design/unit/impl/PTReportLengthUNIT.java
  10. 7
      designer-form/src/main/java/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java
  11. 49
      designer-realize/src/main/java/com/fr/design/actions/columnrow/ColumnRowSizingAction.java
  12. 53
      designer-realize/src/main/java/com/fr/design/condition/WHPane.java
  13. 26
      designer-realize/src/main/java/com/fr/grid/AbstractGridHeaderMouseHandler.java

21
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);
}

14
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();
}

42
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<ReportLengthUNIT> lengthUNITList = new ArrayList<ReportLengthUNIT>();
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();
}
}

19
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;
}
}

22
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();
}
}

32
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);
}
}

31
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);
}
}

31
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);
}
}

30
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);
}
}

7
designer-form/src/main/java/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java

@ -127,6 +127,11 @@ public class FormWidgetDefinePaneFactoryBase {
}
public static void registerDefinePane(Class<? extends Widget> 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 {
}
}
}
}

49
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);

53
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<HighlightA
return nameForPopupMenuItem();
}
public void populate(HighlightAction ha, JSpinner sp) {
public void populate(HighlightAction ha, JSpinner sp) {
int unitType = DesignerEnvManager.getEnvManager().getReportLengthUnit();
UNIT width = getUnit(ha);
double va;
if (unitType == Constants.UNIT_CM) {
va = width.toCMValue4Scale2();
unitLabel.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_CM"));
} else if (unitType == Constants.UNIT_INCH) {
va = width.toINCHValue4Scale3();
unitLabel.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_INCH"));
} else if (unitType == Constants.UNIT_PT) {
va = width.toPTValue4Scale2();
unitLabel.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_PT_Duplicate"));
} else {
va = width.toMMValue4Scale2();
unitLabel.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_MM"));
}
ReportLengthUNIT lengthUNIT = UnitConvertUtil.parseLengthUNIT(unitType);
double va = lengthUNIT.unit2Value4Scale(width);
unitLabel.setText(lengthUNIT.unitText());
// 只保留两位
Float d = new Float(new BigDecimal(va + "").setScale(2, BigDecimal.ROUND_DOWN).floatValue());
sp.setValue(d);
@ -71,15 +59,8 @@ public abstract class WHPane extends ConditionAttrSingleConditionPane<HighlightA
protected String getUnitString() {
int unitType = DesignerEnvManager.getEnvManager().getReportLengthUnit();
if (unitType == Constants.UNIT_CM) {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_CM");
} else if (unitType == Constants.UNIT_INCH) {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_INCH");
} else if (unitType == Constants.UNIT_PT) {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_PT_Duplicate");
} else {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_MM");
}
ReportLengthUNIT lengthUNIT = UnitConvertUtil.parseLengthUNIT(unitType);
return lengthUNIT.unitText();
}
public HighlightAction update(UIBasicSpinner sp) {
@ -87,16 +68,8 @@ public abstract class WHPane extends ConditionAttrSingleConditionPane<HighlightA
// 只保留两位
newWidth = new Float(new BigDecimal(newWidth + "").setScale(2, BigDecimal.ROUND_DOWN).floatValue());
int unitType = DesignerEnvManager.getEnvManager().getReportLengthUnit();
UNIT width;
if (unitType == Constants.UNIT_CM) {
width = new CM(newWidth);
} else if (unitType == Constants.UNIT_INCH) {
width = new INCH(newWidth);
} else if (unitType == Constants.UNIT_PT) {
width = new PT(newWidth);
} else {
width = new MM(newWidth);
}
ReportLengthUNIT lengthUNIT = UnitConvertUtil.parseLengthUNIT(unitType);
UNIT width = lengthUNIT.float2UNIT(newWidth);
return returnAction(width);
}

26
designer-realize/src/main/java/com/fr/grid/AbstractGridHeaderMouseHandler.java

@ -7,6 +7,8 @@ import com.fr.base.vcs.DesignerMode;
import com.fr.design.DesignerEnvManager;
import com.fr.design.gui.imenu.UIPopupMenu;
import com.fr.design.mainframe.ElementCasePane;
import com.fr.design.unit.ReportLengthUNIT;
import com.fr.design.unit.UnitConvertUtil;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.grid.selection.CellSelection;
import com.fr.grid.selection.FloatSelection;
@ -14,7 +16,6 @@ import com.fr.grid.selection.Selection;
import com.fr.log.FineLoggerFactory;
import com.fr.report.elementcase.ElementCase;
import com.fr.stable.ColumnRow;
import com.fr.stable.Constants;
import com.fr.stable.unit.FU;
import com.fr.stable.unit.UNIT;
@ -306,25 +307,10 @@ public abstract class AbstractGridHeaderMouseHandler extends MouseInputAdapter {
// int resolution = ScreenResolution.getScreenResolution();
FU ulen = FU.valueOfPix((int) doubleValue, resolution);
FU tulen = FU.valueOfPix((int) totalDoubleValue, resolution);
String unit;
double len, tlen;
if (unitType == Constants.UNIT_PT) {
len = ulen.toPTValue4Scale2();
tlen = tulen.toPTValue4Scale2();
unit = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_PT");
} else if (unitType == Constants.UNIT_CM) {
len = ulen.toCMValue4Scale2();
tlen = tulen.toCMValue4Scale2();
unit = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_CM");
} else if (unitType == Constants.UNIT_INCH) {
len = ulen.toINCHValue4Scale3();
tlen = tulen.toINCHValue4Scale3();
unit = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_INCH");
} else {
len = ulen.toMMValue4Scale2();
tlen = tulen.toMMValue4Scale2();
unit = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_MM");
}
ReportLengthUNIT lengthUNIT = UnitConvertUtil.parseLengthUNIT(unitType);
String unit = lengthUNIT.unitText();
double len = lengthUNIT.unit2Value4Scale(ulen);
double tlen = lengthUNIT.unit2Value4Scale(tulen);
StringBuilder sb = new StringBuilder();
sb.append(String.format("%.2f", new Double(len)))
.append('/').append(String.format("%.2f", new Double(tlen)))

Loading…
Cancel
Save