forked from fanruan/design
Harrison
5 years ago
30 changed files with 1144 additions and 404 deletions
After Width: | Height: | Size: 135 B |
@ -0,0 +1,55 @@
|
||||
package com.fr.design.chart; |
||||
|
||||
import com.fr.base.chart.BaseChartCollection; |
||||
import com.fr.chart.chartattr.ChartCollection; |
||||
|
||||
import java.awt.Component; |
||||
import java.awt.Dialog; |
||||
import java.awt.Frame; |
||||
import java.awt.event.ActionEvent; |
||||
import java.awt.event.ActionListener; |
||||
|
||||
/** |
||||
* @author Bjorn |
||||
* @version 10.0 |
||||
* Created by Bjorn on 2020-05-28 |
||||
*/ |
||||
public class AutoChartDialog extends ChartDialog { |
||||
|
||||
private AutoChartTypePane autoChartTypePane; |
||||
|
||||
public AutoChartDialog(Frame owner) { |
||||
super(owner); |
||||
} |
||||
|
||||
public AutoChartDialog(Dialog owner) { |
||||
super(owner); |
||||
} |
||||
|
||||
protected Component initCenterPane() { |
||||
autoChartTypePane = new AutoChartTypePane(); |
||||
|
||||
return autoChartTypePane; |
||||
} |
||||
|
||||
protected ActionListener getActionListener() { |
||||
return new ActionListener() { |
||||
public void actionPerformed(ActionEvent e) { |
||||
ChartCollection chartCollection = (ChartCollection) getChartCollection(); |
||||
autoChartTypePane.update(chartCollection); |
||||
if (chartCollection.getChartCount() > 0) { |
||||
doOK(); |
||||
} else { |
||||
doCancel(); |
||||
} |
||||
} |
||||
}; |
||||
} |
||||
|
||||
/** |
||||
* 更新新建的图表 ChartCollection |
||||
*/ |
||||
public void populate(BaseChartCollection cc) { |
||||
super.populate(cc); |
||||
} |
||||
} |
@ -0,0 +1,104 @@
|
||||
package com.fr.design.chart; |
||||
|
||||
import com.fr.base.chart.BaseChartPainter; |
||||
import com.fr.base.chart.chartdata.CallbackEvent; |
||||
import com.fr.base.chart.result.WebChartIDInfo; |
||||
import com.fr.chart.chartattr.Chart; |
||||
import com.fr.chart.chartattr.ChartCollection; |
||||
import com.fr.design.ChartTypeInterfaceManager; |
||||
import com.fr.design.file.HistoryTemplateListCache; |
||||
import com.fr.script.Calculator; |
||||
|
||||
import javax.swing.Icon; |
||||
import java.awt.Color; |
||||
import java.awt.Component; |
||||
import java.awt.Graphics; |
||||
import java.awt.Graphics2D; |
||||
import java.awt.Paint; |
||||
|
||||
/** |
||||
* @author Bjorn |
||||
* @version 10.0 |
||||
* Created by Bjorn on 2020-05-29 |
||||
*/ |
||||
public class AutoChartIcon implements Icon { |
||||
|
||||
private static final int WIDTH = 500; |
||||
private static final int HEIGHT = 281; |
||||
|
||||
private ChartCollection chartCollection; |
||||
private CallbackEvent callbackEvent; |
||||
|
||||
private String chartName; |
||||
|
||||
public AutoChartIcon(ChartCollection chartCollection) { |
||||
this.chartCollection = chartCollection; |
||||
initChartName(); |
||||
} |
||||
|
||||
public ChartCollection getChartCollection() { |
||||
return chartCollection; |
||||
} |
||||
|
||||
public String getChartName() { |
||||
return chartName; |
||||
} |
||||
|
||||
private void initChartName() { |
||||
Chart chart = chartCollection.getSelectedChart(Chart.class); |
||||
String[] subName = ChartTypeInterfaceManager.getInstance().getSubName(chart.getPlot().getPlotID()); |
||||
chartName = subName[0]; |
||||
} |
||||
|
||||
public void registerCallBackEvent(CallbackEvent callbackEvent) { |
||||
this.callbackEvent = callbackEvent; |
||||
} |
||||
|
||||
/** |
||||
* 画出缩略图Icon |
||||
* |
||||
* @param g 图形的上下文 |
||||
* @param c 所在的Component |
||||
* @param x 缩略图的起始坐标x |
||||
* @param y 缩略图的起始坐标y |
||||
*/ |
||||
@Override |
||||
public void paintIcon(Component c, Graphics g, int x, int y) { |
||||
|
||||
BaseChartPainter painter = chartCollection.createResultChartPainterWithOutDealFormula(Calculator.createCalculator(), |
||||
WebChartIDInfo.createEmptyDesignerInfo(), getIconWidth(), getIconHeight()); |
||||
|
||||
int resolution = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getJTemplateResolution(); |
||||
|
||||
Graphics2D g2d = (Graphics2D) g; |
||||
Paint oldPaint = g2d.getPaint(); |
||||
g.translate(x, y); |
||||
g2d.setPaint(Color.white); |
||||
g2d.fillRect(0, 0, getIconWidth(), getIconHeight()); |
||||
|
||||
painter.paint(g2d, getIconWidth(), getIconHeight(), resolution, null, callbackEvent); |
||||
|
||||
g.translate(-x, -y); |
||||
g2d.setPaint(oldPaint); |
||||
} |
||||
|
||||
/** |
||||
* 返回缩略图的宽度 |
||||
* |
||||
* @return int 缩略图宽度 |
||||
*/ |
||||
@Override |
||||
public int getIconWidth() { |
||||
return WIDTH; |
||||
} |
||||
|
||||
/** |
||||
* 返回缩略图的高度 |
||||
* |
||||
* @return int 缩略图高度 |
||||
*/ |
||||
@Override |
||||
public int getIconHeight() { |
||||
return HEIGHT; |
||||
} |
||||
} |
@ -0,0 +1,199 @@
|
||||
package com.fr.design.chart; |
||||
|
||||
import com.fr.base.chart.chartdata.CallbackEvent; |
||||
import com.fr.chart.chartattr.ChartCollection; |
||||
import com.fr.chartx.attr.ChartProvider; |
||||
import com.fr.design.data.DesignTableDataManager; |
||||
import com.fr.design.data.datapane.TableDataComboBox; |
||||
import com.fr.design.data.tabledata.wrapper.TableDataWrapper; |
||||
import com.fr.design.gui.ibutton.UIButton; |
||||
import com.fr.design.gui.icombocheckbox.UIComboCheckBox; |
||||
import com.fr.design.gui.ilable.UILabel; |
||||
import com.fr.design.i18n.Toolkit; |
||||
import com.fr.design.layout.FRGUIPaneFactory; |
||||
import com.fr.design.utils.gui.GUICoreUtils; |
||||
|
||||
import javax.swing.BorderFactory; |
||||
import javax.swing.DefaultListCellRenderer; |
||||
import javax.swing.DefaultListModel; |
||||
import javax.swing.JList; |
||||
import javax.swing.JPanel; |
||||
import javax.swing.JScrollPane; |
||||
import javax.swing.JSplitPane; |
||||
import javax.swing.ListCellRenderer; |
||||
import java.util.HashMap; |
||||
import java.util.List; |
||||
import java.util.Map; |
||||
import java.awt.Color; |
||||
import java.awt.Component; |
||||
import java.awt.Dimension; |
||||
import java.awt.event.ActionEvent; |
||||
import java.awt.event.ActionListener; |
||||
import java.awt.event.ItemEvent; |
||||
import java.awt.event.ItemListener; |
||||
|
||||
/** |
||||
* @author Bjorn |
||||
* @version 10.0 |
||||
* Created by Bjorn on 2020-05-29 |
||||
*/ |
||||
public class AutoChartTypePane extends ChartWizardPane implements CallbackEvent { |
||||
|
||||
private JList chartViewList; |
||||
private DefaultListModel chartResultModel; |
||||
private UIButton refreshButton; |
||||
|
||||
private TableDataComboBox tableNameComboBox; |
||||
private UIComboCheckBox dataFieldBox; |
||||
|
||||
public AutoChartTypePane() { |
||||
this.setLayout(FRGUIPaneFactory.createBorderLayout()); |
||||
initButtonGroup(); |
||||
initRefreshLabel(); |
||||
initDataFiledBox(); |
||||
JPanel contentPane = createContentPane(); |
||||
|
||||
chartViewList = new JList(); |
||||
|
||||
chartResultModel = new DefaultListModel(); |
||||
chartViewList.setModel(chartResultModel); |
||||
chartViewList.setVisibleRowCount(0); |
||||
chartViewList.setLayoutOrientation(JList.HORIZONTAL_WRAP); |
||||
chartViewList.setCellRenderer(iconCellRenderer); |
||||
|
||||
JScrollPane subListPane = new JScrollPane(chartViewList); |
||||
|
||||
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, true, contentPane, subListPane); |
||||
splitPane.setDividerLocation(60); |
||||
splitPane.setBorder(BorderFactory.createTitledBorder(Toolkit.i18nText("Fine-Design_Chart_M_Popup_Auto_Chart_Type"))); |
||||
this.add(splitPane); |
||||
} |
||||
|
||||
ListCellRenderer iconCellRenderer = new DefaultListCellRenderer() { |
||||
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { |
||||
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); |
||||
this.setText(""); |
||||
|
||||
AutoChartIcon chartIcon = (AutoChartIcon) value; |
||||
this.setIcon(chartIcon); |
||||
setHorizontalAlignment(UILabel.CENTER); |
||||
if (isSelected) { |
||||
// 深蓝色.
|
||||
this.setBackground(new Color(57, 107, 181)); |
||||
this.setBorder(GUICoreUtils.createTitledBorder(chartIcon.getChartName(), Color.WHITE)); |
||||
} else { |
||||
this.setBorder(GUICoreUtils.createTitledBorder(chartIcon.getChartName())); |
||||
} |
||||
return this; |
||||
} |
||||
}; |
||||
|
||||
private JPanel createContentPane() { |
||||
JPanel panel = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); |
||||
|
||||
JPanel tableDataPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); |
||||
panel.add(tableDataPane); |
||||
tableDataPane.add(new UILabel(Toolkit.i18nText("Fine-Design_Chart_Table_Data") + ":")); |
||||
tableNameComboBox.setPreferredSize(new Dimension(96, 20)); |
||||
tableDataPane.add(tableNameComboBox); |
||||
|
||||
JPanel areaNamePane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); |
||||
panel.add(areaNamePane); |
||||
areaNamePane.add(new UILabel(Toolkit.i18nText("Fine-Design_Chart_Data_Field") + ":")); |
||||
areaNamePane.add(dataFieldBox); |
||||
panel.add(refreshButton); |
||||
return panel; |
||||
} |
||||
|
||||
private void initButtonGroup() { |
||||
dataFieldBox = new UIComboCheckBox(new Object[0]); |
||||
dataFieldBox.addActionListener(new ActionListener() { |
||||
@Override |
||||
public void actionPerformed(ActionEvent e) { |
||||
checkButtonState(); |
||||
} |
||||
}); |
||||
} |
||||
|
||||
private void initDataFiledBox() { |
||||
tableNameComboBox = new TableDataComboBox(DesignTableDataManager.getEditingTableDataSource()); |
||||
tableNameComboBox.addItemListener(new ItemListener() { |
||||
@Override |
||||
public void itemStateChanged(ItemEvent e) { |
||||
if (e.getStateChange() == ItemEvent.SELECTED) { |
||||
refreshBox(); |
||||
checkButtonState(); |
||||
} |
||||
} |
||||
}); |
||||
} |
||||
|
||||
private void checkButtonState() { |
||||
if (tableNameComboBox.getSelectedItem() != null && dataFieldBox.getSelectedValues().length > 0) { |
||||
refreshButton.setEnabled(true); |
||||
} else { |
||||
refreshButton.setEnabled(false); |
||||
} |
||||
} |
||||
|
||||
private void refreshBox() { |
||||
TableDataWrapper dataWrap = tableNameComboBox.getSelectedItem(); |
||||
|
||||
if (dataWrap == null) { |
||||
return; |
||||
} |
||||
dataFieldBox.clearText(); |
||||
|
||||
List<String> columnNameList = dataWrap.calculateColumnNameList(); |
||||
|
||||
dataFieldBox.refreshCombo(columnNameList.toArray()); |
||||
} |
||||
|
||||
private void initRefreshLabel() { |
||||
refreshButton = new UIButton(Toolkit.i18nText("Fine-Design_Chart_Recommend")); |
||||
refreshButton.addActionListener(new ActionListener() { |
||||
@Override |
||||
public void actionPerformed(ActionEvent e) { |
||||
calculateAutoChart(); |
||||
} |
||||
}); |
||||
refreshButton.setEnabled(false); |
||||
} |
||||
|
||||
private void calculateAutoChart() { |
||||
chartResultModel.clear(); |
||||
} |
||||
|
||||
@Override |
||||
public void populate(ChartCollection cc) { |
||||
|
||||
} |
||||
|
||||
@Override |
||||
public void update(ChartCollection cc) { |
||||
if (chartViewList.getSelectedIndex() < 0) { |
||||
return; |
||||
} |
||||
AutoChartIcon chartIcon = (AutoChartIcon) chartViewList.getSelectedValue(); |
||||
ChartProvider chartProvider = chartIcon.getChartCollection().getSelectedChartProvider(ChartProvider.class); |
||||
if (cc.getChartCount() > 0) { |
||||
cc.setSelectChart(chartProvider); |
||||
} else { |
||||
cc.addChart(chartProvider); |
||||
} |
||||
} |
||||
|
||||
public void populate(String tableName, String[] dataFields) { |
||||
tableNameComboBox.setSelectedTableDataByName(tableName); |
||||
Map<Object, Boolean> map = new HashMap(); |
||||
for (String dataField : dataFields) { |
||||
map.put(dataField, true); |
||||
} |
||||
dataFieldBox.setSelectedValues(map); |
||||
} |
||||
|
||||
@Override |
||||
public void callback() { |
||||
this.repaint(); |
||||
} |
||||
} |
After Width: | Height: | Size: 179 B |
@ -0,0 +1,113 @@
|
||||
package com.fr.design.designer.creator; |
||||
|
||||
import com.fr.base.GraphHelper; |
||||
import com.fr.base.chart.BaseChartCollection; |
||||
import com.fr.design.dialog.DialogActionAdapter; |
||||
import com.fr.design.gui.chart.MiddleChartComponent; |
||||
import com.fr.design.gui.chart.MiddleChartDialog; |
||||
import com.fr.design.mainframe.BaseJForm; |
||||
import com.fr.design.mainframe.DesignerContext; |
||||
import com.fr.design.mainframe.EditingMouseListener; |
||||
import com.fr.design.mainframe.FormDesigner; |
||||
import com.fr.design.module.DesignModuleFactory; |
||||
import com.fr.form.ui.ChartAutoEditor; |
||||
import com.fr.stable.bridge.StableFactory; |
||||
|
||||
import javax.swing.JComponent; |
||||
import javax.swing.JPanel; |
||||
import java.awt.Color; |
||||
import java.awt.Dimension; |
||||
import java.awt.Graphics; |
||||
import java.awt.Rectangle; |
||||
import java.awt.event.MouseEvent; |
||||
|
||||
/** |
||||
* @author Bjorn |
||||
* @version 10.0 |
||||
* Created by Bjorn on 2020-05-26 |
||||
*/ |
||||
public class XAutoChartCreator extends XChartEditor { |
||||
|
||||
private MiddleChartDialog autoChartDialog; |
||||
|
||||
private EditingMouseListener editingMouseListener; |
||||
|
||||
public XAutoChartCreator(ChartAutoEditor editor, Dimension size) { |
||||
super(editor, size); |
||||
} |
||||
|
||||
/** |
||||
* 返回组件默认名 |
||||
* |
||||
* @return 组件类名(小写) |
||||
*/ |
||||
public String createDefaultName() { |
||||
return "auto_chart"; |
||||
} |
||||
|
||||
@Override |
||||
public ChartAutoEditor toData() { |
||||
return (ChartAutoEditor) data; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* 点击选中的时候, 刷新界面 |
||||
* 右键 reset之后, 触发事件 populate此方法 |
||||
* |
||||
* @param jform 表单 |
||||
* @param formDesigner 表单设计器 |
||||
* @return 控件. |
||||
*/ |
||||
public JComponent createToolPane(final BaseJForm jform, final FormDesigner formDesigner) { |
||||
if (toData().isChartSelect()) { |
||||
return super.createToolPane(jform, formDesigner); |
||||
} |
||||
if (isEditing) { |
||||
if (autoChartDialog != null && autoChartDialog.isVisible()) { |
||||
return new JPanel(); |
||||
} |
||||
final BaseChartCollection chartCollection = (BaseChartCollection) StableFactory.createXmlObject(BaseChartCollection.XML_TAG); |
||||
autoChartDialog = DesignModuleFactory.getAutoChartDialog(DesignerContext.getDesignerFrame()); |
||||
autoChartDialog.populate(chartCollection); |
||||
autoChartDialog.addDialogActionListener(new DialogActionAdapter() { |
||||
@Override |
||||
public void doOk() { |
||||
initChart(autoChartDialog.getChartCollection()); |
||||
formDesigner.fireTargetModified(); |
||||
} |
||||
@Override |
||||
public void doCancel() { |
||||
editingMouseListener.stopEditing(); |
||||
} |
||||
}); |
||||
autoChartDialog.setVisible(true); |
||||
} |
||||
return toData().isChartSelect() ? super.createToolPane(jform, formDesigner) : new JPanel(); |
||||
} |
||||
|
||||
/** |
||||
* 响应点击事件 |
||||
* |
||||
* @param editingMouseListener 鼠标点击,位置处理器 |
||||
* @param e 鼠标点击事件 |
||||
*/ |
||||
public void respondClick(EditingMouseListener editingMouseListener, MouseEvent e) { |
||||
this.editingMouseListener = editingMouseListener; |
||||
super.respondClick(editingMouseListener, e); |
||||
} |
||||
|
||||
|
||||
public void paint(Graphics g) { |
||||
//TODO @Bjorn 视觉样式优化
|
||||
g.setColor(Color.RED); |
||||
GraphHelper.fill(g, new Rectangle(0, 0, getWidth(), getHeight())); |
||||
super.paint(g); |
||||
} |
||||
|
||||
private void initChart(BaseChartCollection chartCollection) { |
||||
((MiddleChartComponent) getDesignerEditor().getEditorTarget()).populate(chartCollection); |
||||
this.toData().resetChangeChartCollection(chartCollection); |
||||
this.toData().setChartSelect(true); |
||||
} |
||||
} |
@ -0,0 +1,58 @@
|
||||
package com.fr.design.actions.insert.cell; |
||||
|
||||
import com.fr.base.BaseUtils; |
||||
import com.fr.chart.chartattr.AutoChartCollection; |
||||
import com.fr.design.actions.core.WorkBookSupportable; |
||||
import com.fr.design.i18n.Toolkit; |
||||
import com.fr.design.mainframe.ElementCasePane; |
||||
import com.fr.design.menu.MenuKeySet; |
||||
|
||||
import javax.swing.KeyStroke; |
||||
|
||||
/** |
||||
* @author Bjorn |
||||
* @version 10.0 |
||||
* Created by Bjorn on 2020-05-28 |
||||
*/ |
||||
public class AutoChartCellAction extends AbstractCellAction implements WorkBookSupportable { |
||||
|
||||
public AutoChartCellAction() { |
||||
initAction(); |
||||
} |
||||
|
||||
public AutoChartCellAction(ElementCasePane t) { |
||||
super(t); |
||||
initAction(); |
||||
} |
||||
|
||||
private void initAction() { |
||||
this.setMenuKeySet(INSERT_AUTO_CHART); |
||||
this.setName(getMenuKeySet().getMenuKeySetName() + "..."); |
||||
this.setMnemonic(getMenuKeySet().getMnemonic()); |
||||
//TODO @Bjorn 视觉样式优化icon
|
||||
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_insert/auto_chart.png")); |
||||
} |
||||
|
||||
public static final MenuKeySet INSERT_AUTO_CHART = new MenuKeySet() { |
||||
@Override |
||||
public char getMnemonic() { |
||||
return 'M'; |
||||
} |
||||
|
||||
@Override |
||||
public String getMenuName() { |
||||
return Toolkit.i18nText("Fine-Design_Report_M_Insert_Auto_Chart"); |
||||
} |
||||
|
||||
@Override |
||||
public KeyStroke getKeyStroke() { |
||||
return null; |
||||
} |
||||
}; |
||||
|
||||
|
||||
@Override |
||||
public Class getCellValueClass() { |
||||
return AutoChartCollection.class; |
||||
} |
||||
} |
@ -0,0 +1,54 @@
|
||||
package com.fr.design.actions.insert.flot; |
||||
|
||||
import com.fr.base.BaseUtils; |
||||
import com.fr.design.gui.chart.MiddleChartDialog; |
||||
import com.fr.design.i18n.Toolkit; |
||||
import com.fr.design.mainframe.ElementCasePane; |
||||
import com.fr.design.menu.MenuKeySet; |
||||
import com.fr.design.module.DesignModuleFactory; |
||||
|
||||
import javax.swing.KeyStroke; |
||||
import java.awt.Window; |
||||
|
||||
/** |
||||
* @author Bjorn |
||||
* @version 10.0 |
||||
* Created by Bjorn on 2020-05-28 |
||||
*/ |
||||
public class AutoChartFloatAction extends ChartFloatAction { |
||||
|
||||
/** |
||||
* 构造函数 图表插入悬浮元素 |
||||
*/ |
||||
public AutoChartFloatAction(ElementCasePane t) { |
||||
super(t); |
||||
} |
||||
|
||||
protected void init() { |
||||
this.setMenuKeySet(FLOAT_INSERT_AUTO_CHART); |
||||
this.setName(getMenuKeySet().getMenuKeySetName()); |
||||
this.setMnemonic(getMenuKeySet().getMnemonic()); |
||||
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_insert/auto_chart.png")); |
||||
} |
||||
|
||||
public static final MenuKeySet FLOAT_INSERT_AUTO_CHART = new MenuKeySet() { |
||||
@Override |
||||
public char getMnemonic() { |
||||
return 'M'; |
||||
} |
||||
|
||||
@Override |
||||
public String getMenuName() { |
||||
return Toolkit.i18nText("Fine-Design_Report_M_Insert_Auto_Chart"); |
||||
} |
||||
|
||||
@Override |
||||
public KeyStroke getKeyStroke() { |
||||
return null; |
||||
} |
||||
}; |
||||
|
||||
protected MiddleChartDialog getMiddleChartDialog(Window window) { |
||||
return DesignModuleFactory.getAutoChartDialog(window); |
||||
} |
||||
} |
@ -0,0 +1,24 @@
|
||||
package com.fr.design.cell.editor; |
||||
|
||||
import com.fr.design.gui.chart.MiddleChartDialog; |
||||
import com.fr.design.mainframe.ElementCasePane; |
||||
import com.fr.design.module.DesignModuleFactory; |
||||
import com.fr.report.elementcase.TemplateElementCase; |
||||
|
||||
import java.awt.Window; |
||||
|
||||
/** |
||||
* @author Bjorn |
||||
* @version 10.0 |
||||
* Created by Bjorn on 2020-05-28 |
||||
*/ |
||||
public class AutoChartCellEditor extends ChartCellEditor { |
||||
|
||||
public AutoChartCellEditor(ElementCasePane<? extends TemplateElementCase> ePane) { |
||||
super(ePane); |
||||
} |
||||
|
||||
protected MiddleChartDialog getMiddleChartDialog(Window window) { |
||||
return DesignModuleFactory.getAutoChartDialog(window); |
||||
} |
||||
} |
@ -0,0 +1,18 @@
|
||||
package com.fr.design.cell.editor; |
||||
|
||||
import com.fr.design.gui.chart.MiddleChartDialog; |
||||
import com.fr.design.module.DesignModuleFactory; |
||||
|
||||
import java.awt.Window; |
||||
|
||||
/** |
||||
* @author Bjorn |
||||
* @version 10.0 |
||||
* Created by Bjorn on 2020-05-28 |
||||
*/ |
||||
public class AutoChartFloatEditor extends ChartFloatEditor { |
||||
|
||||
protected MiddleChartDialog getMiddleChartDialog(Window window) { |
||||
return DesignModuleFactory.getAutoChartDialog(window); |
||||
} |
||||
} |
Loading…
Reference in new issue