|
|
|
@ -7,7 +7,6 @@ import com.fr.base.BaseUtils;
|
|
|
|
|
import com.fr.base.DynamicUnitList; |
|
|
|
|
import com.fr.base.Style; |
|
|
|
|
import com.fr.base.chart.BaseChartCollection; |
|
|
|
|
import com.fr.chart.chartattr.ChartCollection; |
|
|
|
|
import com.fr.design.actions.ElementCaseAction; |
|
|
|
|
import com.fr.design.dialog.DialogActionAdapter; |
|
|
|
|
import com.fr.design.file.HistoryTemplateListPane; |
|
|
|
@ -18,8 +17,6 @@ import com.fr.design.menu.MenuKeySet;
|
|
|
|
|
import com.fr.design.module.DesignModuleFactory; |
|
|
|
|
import com.fr.grid.Grid; |
|
|
|
|
import com.fr.grid.selection.FloatSelection; |
|
|
|
|
import com.fr.log.FineLoggerFactory; |
|
|
|
|
import com.fr.plugin.chart.vanchart.VanChart; |
|
|
|
|
import com.fr.report.ReportHelper; |
|
|
|
|
import com.fr.report.cell.FloatElement; |
|
|
|
|
import com.fr.report.elementcase.TemplateElementCase; |
|
|
|
@ -88,51 +85,39 @@ public class ChartFloatAction extends ElementCaseAction {
|
|
|
|
|
public void doOk() { |
|
|
|
|
isRecordNeeded = true; |
|
|
|
|
FloatElement newFloatElement; |
|
|
|
|
try { |
|
|
|
|
//TODO @Bjorn 这里不知道为什么要把ChartCollection克隆一下,会导致chart的ID发生变化,影响记录埋点的功能。
|
|
|
|
|
//TODO 不知道去掉clone之后会有什么影响,下个版本的迭代中优化试着去掉clone方法,测试看看会不会有问题。
|
|
|
|
|
ChartCollection chartCollection = (ChartCollection) chartDialog.getChartCollection().clone(); |
|
|
|
|
VanChart vanChart = ((ChartCollection) chartDialog.getChartCollection()).getSelectedChartProvider(VanChart.class); |
|
|
|
|
if (vanChart != null) { |
|
|
|
|
chartCollection.getSelectedChartProvider(VanChart.class).setUuid(vanChart.getUuid()); |
|
|
|
|
} |
|
|
|
|
newFloatElement = new FloatElement(chartCollection); |
|
|
|
|
|
|
|
|
|
newFloatElement.setWidth(new OLDPIX(BaseChartCollection.CHART_DEFAULT_WIDTH)); |
|
|
|
|
newFloatElement.setHeight(new OLDPIX(BaseChartCollection.CHART_DEFAULT_HEIGHT)); |
|
|
|
|
|
|
|
|
|
Grid grid = reportPane.getGrid(); |
|
|
|
|
TemplateElementCase report = reportPane.getEditingElementCase(); |
|
|
|
|
DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(report); |
|
|
|
|
DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(report); |
|
|
|
|
int horizentalScrollValue = grid.getHorizontalValue(); |
|
|
|
|
int verticalScrollValue = grid.getVerticalValue(); |
|
|
|
|
|
|
|
|
|
int resolution = grid.getResolution(); |
|
|
|
|
int floatWdith = newFloatElement.getWidth().toPixI(resolution); |
|
|
|
|
int floatHeight = newFloatElement.getWidth().toPixI(resolution); |
|
|
|
|
|
|
|
|
|
int leftDifference = (grid.getWidth() - floatWdith) > 0 ? (grid.getWidth() - floatWdith) : 0; |
|
|
|
|
int topDifference = (grid.getHeight() - floatHeight) > 0 ? (grid.getHeight() - floatHeight) : 0; |
|
|
|
|
FU evtX_fu = FU.valueOfPix((leftDifference) / 2, resolution); |
|
|
|
|
FU evtY_fu = FU.valueOfPix((topDifference) / 2, resolution); |
|
|
|
|
|
|
|
|
|
FU leftDistance = FU.getInstance(evtX_fu.toFU() + columnWidthList.getRangeValue(0, horizentalScrollValue).toFU()); |
|
|
|
|
FU topDistance = FU.getInstance(evtY_fu.toFU() + rowHeightList.getRangeValue(0, verticalScrollValue).toFU()); |
|
|
|
|
|
|
|
|
|
newFloatElement.setLeftDistance(leftDistance); |
|
|
|
|
newFloatElement.setTopDistance(topDistance); |
|
|
|
|
|
|
|
|
|
Style style = newFloatElement.getStyle(); |
|
|
|
|
if (style != null) { |
|
|
|
|
newFloatElement.setStyle(style.deriveBorder(Constants.LINE_NONE, Color.black, Constants.LINE_NONE, Color.black, Constants.LINE_NONE, Color.black, Constants.LINE_NONE, Color.black)); |
|
|
|
|
} |
|
|
|
|
reportPane.getEditingElementCase().addFloatElement(newFloatElement); |
|
|
|
|
reportPane.setSelection(new FloatSelection(newFloatElement.getName())); |
|
|
|
|
reportPane.fireSelectionChangeListener(); |
|
|
|
|
} catch (CloneNotSupportedException e) { |
|
|
|
|
FineLoggerFactory.getLogger().error("Error in Float"); |
|
|
|
|
newFloatElement = new FloatElement(chartDialog.getChartCollection()); |
|
|
|
|
newFloatElement.setWidth(new OLDPIX(BaseChartCollection.CHART_DEFAULT_WIDTH)); |
|
|
|
|
newFloatElement.setHeight(new OLDPIX(BaseChartCollection.CHART_DEFAULT_HEIGHT)); |
|
|
|
|
|
|
|
|
|
Grid grid = reportPane.getGrid(); |
|
|
|
|
TemplateElementCase report = reportPane.getEditingElementCase(); |
|
|
|
|
DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(report); |
|
|
|
|
DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(report); |
|
|
|
|
int horizentalScrollValue = grid.getHorizontalValue(); |
|
|
|
|
int verticalScrollValue = grid.getVerticalValue(); |
|
|
|
|
|
|
|
|
|
int resolution = grid.getResolution(); |
|
|
|
|
int floatWdith = newFloatElement.getWidth().toPixI(resolution); |
|
|
|
|
int floatHeight = newFloatElement.getWidth().toPixI(resolution); |
|
|
|
|
|
|
|
|
|
int leftDifference = (grid.getWidth() - floatWdith) > 0 ? (grid.getWidth() - floatWdith) : 0; |
|
|
|
|
int topDifference = (grid.getHeight() - floatHeight) > 0 ? (grid.getHeight() - floatHeight) : 0; |
|
|
|
|
FU evtX_fu = FU.valueOfPix((leftDifference) / 2, resolution); |
|
|
|
|
FU evtY_fu = FU.valueOfPix((topDifference) / 2, resolution); |
|
|
|
|
|
|
|
|
|
FU leftDistance = FU.getInstance(evtX_fu.toFU() + columnWidthList.getRangeValue(0, horizentalScrollValue).toFU()); |
|
|
|
|
FU topDistance = FU.getInstance(evtY_fu.toFU() + rowHeightList.getRangeValue(0, verticalScrollValue).toFU()); |
|
|
|
|
|
|
|
|
|
newFloatElement.setLeftDistance(leftDistance); |
|
|
|
|
newFloatElement.setTopDistance(topDistance); |
|
|
|
|
|
|
|
|
|
Style style = newFloatElement.getStyle(); |
|
|
|
|
if (style != null) { |
|
|
|
|
newFloatElement.setStyle(style.deriveBorder(Constants.LINE_NONE, Color.black, Constants.LINE_NONE, Color.black, Constants.LINE_NONE, Color.black, Constants.LINE_NONE, Color.black)); |
|
|
|
|
} |
|
|
|
|
reportPane.getEditingElementCase().addFloatElement(newFloatElement); |
|
|
|
|
reportPane.setSelection(new FloatSelection(newFloatElement.getName())); |
|
|
|
|
reportPane.fireSelectionChangeListener(); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|