neil 8 years ago
parent
commit
917a793904
  1. 188
      designer_chart/src/com/fr/design/ChartEnvManager.java
  2. 69
      designer_chart/src/com/fr/design/chart/report/GisMapDataPane4Chart.java
  3. 341
      designer_chart/src/com/fr/design/chart/report/GisMapTableDataContentPane4Chart.java
  4. 68
      designer_chart/src/com/fr/design/chart/report/MapCubeDataPane4Chart.java
  5. 133
      designer_chart/src/com/fr/design/chart/report/MapDataPane4Chart.java
  6. 113
      designer_chart/src/com/fr/design/chart/report/MapMoreCubeLayerPane4Chart.java
  7. 79
      designer_chart/src/com/fr/design/chart/report/MapSinglePane4Chart.java
  8. 93
      designer_chart/src/com/fr/design/chart/report/MapTableCubeDataPane4Chart.java
  9. 268
      designer_chart/src/com/fr/design/chart/report/MapTableDataSinglePane4Chart.java
  10. 244
      designer_chart/src/com/fr/design/mainframe/AbstractChartDataPane4Chart.java
  11. 111
      designer_chart/src/com/fr/design/mainframe/AbstractMapPlotPane4ToolBar.java
  12. 521
      designer_chart/src/com/fr/design/mainframe/ChartArea.java
  13. 230
      designer_chart/src/com/fr/design/mainframe/ChartDesigner.java
  14. 211
      designer_chart/src/com/fr/design/mainframe/ChartDesignerUI.java
  15. 558
      designer_chart/src/com/fr/design/mainframe/ChartToolBarPane.java
  16. 98
      designer_chart/src/com/fr/design/mainframe/DesignerFrame4Chart.java
  17. 203
      designer_chart/src/com/fr/design/mainframe/GisMapPlotPane4ToolBar.java
  18. 339
      designer_chart/src/com/fr/design/mainframe/MapArrayPane.java
  19. 210
      designer_chart/src/com/fr/design/mainframe/MapPlotPane4ToolBar.java
  20. 90
      designer_chart/src/com/fr/design/mainframe/PlotToolBarFactory.java
  21. 91
      designer_chart/src/com/fr/design/mainframe/ToolTip4Chart.java
  22. 170
      designer_chart/src/com/fr/design/mainframe/actions/ChartDownLoadWorker.java
  23. 51
      designer_chart/src/com/fr/design/mainframe/actions/ChartFeedBackAciton.java
  24. 25
      designer_chart/src/com/fr/design/mainframe/actions/ChartUpdateAction.java
  25. 56
      designer_chart/src/com/fr/design/mainframe/actions/ChartWebAction.java
  26. 35
      designer_chart/src/com/fr/design/mainframe/actions/OpenChartAction.java
  27. 74
      designer_chart/src/com/fr/design/mainframe/actions/UpdateOnlineAction.java
  28. 69
      designer_chart/src/com/fr/design/mainframe/actions/UpdateVersion.java
  29. 55
      designer_chart/src/com/fr/design/mainframe/chart/ChartDesignEditPane.java
  30. 238
      designer_chart/src/com/fr/design/mainframe/chart/UpdateOnLinePane.java
  31. 71
      designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDesignerDataPane.java
  32. 48
      designer_chart/src/com/fr/design/mainframe/chart/gui/data/ChartDesignDataLoadPane.java
  33. 124
      designer_chart/src/com/fr/design/mainframe/chart/gui/data/EmbbeddDataPane.java
  34. 123
      designer_chart/src/com/fr/design/mainframe/chart/gui/data/ExcelDataPane.java
  35. 117
      designer_chart/src/com/fr/design/mainframe/chart/gui/data/ImportSetChartDataPane.java
  36. 101
      designer_chart/src/com/fr/design/mainframe/chart/gui/data/JSONDataPane.java
  37. 69
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/AreaPlotPane4ToolBar.java
  38. 72
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/BarPlotPane4ToolBar.java
  39. 72
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/BubblePlotPane4ToolBar.java
  40. 138
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/ChartDesignerImagePane.java
  41. 73
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/ColumnPlotPane4ToolBar.java
  42. 54
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/CustomPlotPane4ToolBar.java
  43. 54
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/DonutPlotPane4ToolBar.java
  44. 52
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/GanttPlotPane4ToolBar.java
  45. 57
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/LinePlotPane4ToolBar.java
  46. 69
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/MeterPlotPane4ToolBar.java
  47. 58
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/PiePlotPane4ToolBar.java
  48. 134
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/PlotPane4ToolBar.java
  49. 51
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/RadarPlotPane4ToolBar.java
  50. 53
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/RangePlotPane4ToolBar.java
  51. 52
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/StockPlotPane4ToolBar.java
  52. 45
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/UserDefinedChartTypePane.java
  53. 72
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/XYSCatterPlotPane4ToolBar.java

188
designer_chart/src/com/fr/design/ChartEnvManager.java

@ -1,188 +0,0 @@
package com.fr.design;
import com.fr.base.FRContext;
import com.fr.base.Utils;
import com.fr.general.ComparatorUtils;
import com.fr.general.DateUtils;
import com.fr.general.IOUtils;
import com.fr.stable.ProductConstants;
import com.fr.stable.StableUtils;
import com.fr.stable.StringUtils;
import com.fr.stable.project.ProjectConstants;
import com.fr.stable.xml.*;
import java.io.*;
import java.util.Date;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class ChartEnvManager implements XMLReadable, XMLWriter {
public static final String ACTIVE_KEY = "RXWY-A25421-K58F47757-7373";
private static final int ONE_MONTH_SECOND = 30*24*60*60;//30天,以秒为单位
private static final int MS =1000;
boolean isPushUpdateAuto = true; //是否自动推送更新
private String activationKey = null;
private static ChartEnvManager chartEnvManager;
private Date lastCheckDate;
private long checkTimeSpan =ONE_MONTH_SECOND;
/**
* DesignerEnvManager.
*/
public static ChartEnvManager getEnvManager() {
if(chartEnvManager == null){
chartEnvManager = new ChartEnvManager();
try {
XMLTools.readFileXML(chartEnvManager, chartEnvManager.getDesignerEnvFile());
}catch (Exception exp){
FRContext.getLogger().error(exp.getMessage(), exp);
}
}
return chartEnvManager;
}
private static File envFile = new File(ProductConstants.getEnvHome() + File.separator + ProductConstants.APP_NAME + "ChartEnv.xml");
private File getEnvFile() {
return envFile;
}
private File getDesignerEnvFile() {
File envFile = getEnvFile();
if (!envFile.exists()) {
createEnvFile(envFile);
}
return envFile;
}
private void createEnvFile(File envFile) {
try {
FileWriter fileWriter = new FileWriter(envFile);
StringReader stringReader = new StringReader("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><Env></Env>");
Utils.copyCharTo(stringReader, fileWriter);
stringReader.close();
fileWriter.close();
} catch (IOException e) {
FRContext.getLogger().error(e.getMessage(), e);
}
}
/**
* 返回激活码
*/
public String getActivationKey() {
return activationKey;
}
/**
* 设置激活码
*/
public void setActivationKey(String activationKey) {
this.activationKey = activationKey;
}
public void setPushUpdateAuto(boolean isPushUpdateAuto){
this.isPushUpdateAuto = isPushUpdateAuto;
if(!this.isPushUpdateAuto){
lastCheckDate = new Date();
}
}
/**
* 是否设置了自动推送图表设计器在线更行
* @return 是则返回true
*/
public boolean isPushUpdateAuto(){
return isPushUpdateAuto;
}
/**
*在设置不自动推送在线更新的情况下每30天自动检测一次
* @return 是否需要检测
*/
public boolean isOverOneMonth(){
return !isPushUpdateAuto && ((new Date().getTime()-lastCheckDate.getTime())/MS>=checkTimeSpan);
}
/***
* 重新设置最新检查的日期
*/
public void resetCheckDate(){
this.lastCheckDate = new Date();
}
@Override
public void readXML(XMLableReader reader) {
if (reader.isChildNode()) {
String name = reader.getTagName();
if(ComparatorUtils.equals(name,"ChartAttributes")){
activationKey = reader.getAttrAsString("activationKey",null);
isPushUpdateAuto = reader.getAttrAsBoolean("isPushUpdateAuto",true);
checkTimeSpan = reader.getAttrAsLong("checkTimeSpan",ONE_MONTH_SECOND);
String date = reader.getAttrAsString("lastCheckDate", null);
if(!StringUtils.isEmpty(date)){
lastCheckDate = DateUtils.string2Date(date,true);
} else {
lastCheckDate = new Date();
}
}
}
}
@Override
public void writeXML(XMLPrintWriter writer) {
writer.startTAG("ChartDesigner");
writer.startTAG("ChartAttributes").attr("activationKey",activationKey)
.attr("isPushUpdateAuto",isPushUpdateAuto)
.attr("checkTimeSpan",checkTimeSpan)
.attr("lastCheckDate", DateUtils.getDate2LStr(lastCheckDate))
.end();
writer.end();
}
/**
* 保存设计器的配置文件, 该文件不在env的resource目录下
* 而是在Consts.getEnvHome() + File.separator + Consts.APP_NAME
*
*
* @date 2014-9-29-上午11:04:23
*/
public void saveXMLFile() {
File xmlFile = this.getDesignerEnvFile();
if (xmlFile == null) {
return;
}
if (!xmlFile.getParentFile().exists()) {//建立目录.
StableUtils.mkdirs(xmlFile.getParentFile());
}
String tempName = xmlFile.getName() + ProjectConstants.TEMP_SUFFIX;
File tempFile = new File(xmlFile.getParentFile(), tempName);
writeTempFile(tempFile);
IOUtils.renameTo(tempFile, xmlFile);
}
private void writeTempFile(File tempFile){
try{
OutputStream fout = new FileOutputStream(tempFile);
XMLTools.writeOutputStreamXML(this, fout);
fout.flush();
fout.close();
}catch (Exception e) {
FRContext.getLogger().error(e.getMessage());
}
}
}

69
designer_chart/src/com/fr/design/chart/report/GisMapDataPane4Chart.java

@ -1,69 +0,0 @@
package com.fr.design.chart.report;
import com.fr.base.TableData;
import com.fr.base.chart.chartdata.TopDefinitionProvider;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartdata.*;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.mainframe.AbstractChartDataPane4Chart;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import javax.swing.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class GisMapDataPane4Chart extends AbstractChartDataPane4Chart {
private GisMapTableDataContentPane4Chart tablePane = new GisMapTableDataContentPane4Chart();
public GisMapDataPane4Chart(AttributeChangeListener listener, ChartDataPane parent) {
super(listener, parent);
}
protected JPanel getDataContentPane() {
return tablePane;
}
@Override
public void populate(ChartCollection collection) {
tablePane = new GisMapTableDataContentPane4Chart();
if (collection != null && collection.getSelectedChart() != null) {
Chart chart = collection.getSelectedChart();
TopDefinitionProvider definition = chart.getFilterDefinition();
if (definition instanceof TableDataDefinition) {
TableData tableData = ((TableDataDefinition) definition).getTableData();
if (tableData != null) {
populateChoosePane(tableData);
fireTableDataChange();
}
}
if (definition instanceof GisMapTableDefinition) {
tablePane.populateBean((GisMapTableDefinition) definition);
}
}
this.remove(leftContentPane);
this.initContentPane();
this.validate();
dataSource.addItemListener(dsListener);
initAllListeners();
initSelfListener(tablePane);
this.addAttributeChangeListener(attributeChangeListener);
}
@Override
public void update(ChartCollection collection) {
collection.getSelectedChart().setFilterDefinition(tablePane.updateBean());
}
/**
* 数据集数据改变
*/
public void fireTableDataChange() {
tablePane.fireTableDataChange(choosePane.getTableDataWrapper());
}
}

341
designer_chart/src/com/fr/design/chart/report/GisMapTableDataContentPane4Chart.java

@ -1,341 +0,0 @@
package com.fr.design.chart.report;
import com.fr.base.Utils;
import com.fr.chart.base.ChartConstants;
import com.fr.chart.chartdata.GisMapTableDefinition;
import com.fr.chart.chartdata.SeriesDefinition;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.event.UIObserver;
import com.fr.design.event.UIObserverListener;
import com.fr.design.gui.frpane.UICorrelationPane;
import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itable.UITableEditor;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.general.Inter;
import com.fr.stable.ArrayUtils;
import com.fr.stable.StringUtils;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class GisMapTableDataContentPane4Chart extends FurtherBasicBeanPane<GisMapTableDefinition> implements UIObserver {
private ArrayList<ChangeListener> changeListeners = new ArrayList<ChangeListener>();
private String[] initNames = {""};
private UIButtonGroup<String> addressType;
private UIButtonGroup<String> lnglatOrder;
private UIComboBox addressBox;
private UIComboBox addressNameBox;
private UICorrelationPane titleValuePane;
private JPanel orderPane;
private TableDataWrapper tableDataWrapper;
public GisMapTableDataContentPane4Chart() {
this.setLayout(new BorderLayout());
addressType = new UIButtonGroup<String>(new String[]{Inter.getLocText("Chart-Gis_Address"), Inter.getLocText("Chart-Gis_LatLng")});
lnglatOrder = new UIButtonGroup<String>(new String[]{Inter.getLocText("Chart-Lng_First"), Inter.getLocText("Chart-Lat_First")});
addressBox = new UIComboBox();
addressNameBox = new UIComboBox();
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = new double[]{p, f};
double[] rowSize = new double[]{p, p, p};
orderPane = new JPanel(new BorderLayout(LayoutConstants.VGAP_MEDIUM, 0)) {
@Override
public Dimension getPreferredSize() {
if (this.isVisible()) {
return super.getPreferredSize();
} else {
return new Dimension(0, 0);
}
}
};
orderPane.add(new UILabel(Inter.getLocText("Chart-LatLng_Order")), BorderLayout.WEST);
orderPane.add(lnglatOrder, BorderLayout.CENTER);
orderPane.setVisible(false);
lnglatOrder.setSelectedIndex(0);
addressType.setSelectedIndex(0);
addressNameBox.removeAllItems();
addressNameBox.addItem(Inter.getLocText("Chart-Use_None"));
Component[][] components = new Component[][]{
new Component[]{addressType, addressBox},
new Component[]{orderPane, null},
new Component[]{new UILabel(Inter.getLocText("Chart-Address_Name") + ":", SwingConstants.RIGHT), addressNameBox},
};
JPanel centerPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
JPanel pane = new JPanel();
this.add(pane, BorderLayout.CENTER);
pane.setLayout(new BorderLayout());
pane.add(centerPane, BorderLayout.NORTH);
String[] titles = {Inter.getLocText("Chart-Area_Title"), Inter.getLocText("Chart-Area_Value")};
titleValuePane = new UICorrelationPane(titles) {
public UITableEditor createUITableEditor() {
return new InnerTableEditor();
}
};
pane.add(titleValuePane, BorderLayout.CENTER);
}
private void refresh2ComboBox() {// 刷新地址 地址名 名称列表
TableDataWrapper tableDataWrappe =tableDataWrapper;
if (tableDataWrappe == null) {
return;
}
java.util.List<String> columnNameList = tableDataWrappe.calculateColumnNameList();
initNames = columnNameList.toArray(new String[columnNameList.size()]);
addressBox.removeAllItems();
addressNameBox.removeAllItems();
addressNameBox.addItem(Inter.getLocText("Chart-Use_None"));
for (int i = 0, size = initNames.length; i < size; i++) {
addressBox.addItem(initNames[i]);
addressNameBox.addItem(initNames[i]);
}
if(initNames.length > 0){
addressBox.setSelectedIndex(0);
}
addressNameBox.setSelectedIndex(0);
stopEditing();
}
/**
* 界面接入
*
* @param ob 对象
* @return true表示接受
*/
public boolean accept(Object ob) {
return false;
}
/**
* 界面重置
*/
public void reset() {
}
/**
* 界面弹出标题
*
* @return 标题
*/
public String title4PopupWindow() {
return Inter.getLocText("Chart-DS_TableData");
}
private void stopEditing() {
}
@Override
public void populateBean(GisMapTableDefinition ob) {
stopEditing();
if (ob instanceof GisMapTableDefinition) {
GisMapTableDefinition mapDefinition = (GisMapTableDefinition) ob;
if (ob.isAddress()) {
addressType.setSelectedIndex(0);
orderPane.setVisible(false);
} else {
addressType.setSelectedIndex(1);
orderPane.setVisible(true);
}
if (ob.isLngFirst()) {
lnglatOrder.setSelectedIndex(0);
} else {
lnglatOrder.setSelectedIndex(1);
}
addressBox.setSelectedItem(mapDefinition.getAddress());
if (StringUtils.isEmpty(mapDefinition.getAddressName())) {
addressNameBox.setSelectedItem(Inter.getLocText("Chart-Use_None"));
} else {
addressNameBox.setSelectedItem(mapDefinition.getAddressName());
}
java.util.List paneList = new ArrayList();
int titleValueSize = mapDefinition.getTittleValueSize();
for (int i = 0; i < titleValueSize; i++) {
SeriesDefinition definition = mapDefinition.getTittleValueWithIndex(i);
if (definition != null && definition.getSeriesName() != null && definition.getValue() != null) {
paneList.add(new Object[]{definition.getSeriesName(), definition.getValue()});
}
}
if (!paneList.isEmpty()) {
titleValuePane.populateBean(paneList);
}
}
}
@Override
public GisMapTableDefinition updateBean() {// 从一行内容中update
stopEditing();
GisMapTableDefinition definition = new GisMapTableDefinition();
TableDataWrapper tableDataWrappe = tableDataWrapper;
if (tableDataWrappe == null || addressBox.getSelectedItem() == null) {
return null;
}
definition.setTableData(tableDataWrapper.getTableData());
definition.setAddress(Utils.objectToString(addressBox.getSelectedItem()));
if (this.addressType.getSelectedIndex() == 0) {
definition.setAddressType(true);
lnglatOrder.setVisible(false);
} else {
definition.setAddressType(false);
lnglatOrder.setVisible(true);
}
if (this.lnglatOrder.getSelectedIndex() == 0) {
definition.setLnglatOrder(true);
} else {
definition.setLnglatOrder(false);
}
if (addressNameBox.getSelectedItem() != null) {
String adName = Utils.objectToString(addressNameBox.getSelectedItem());
if (ArrayUtils.contains(ChartConstants.getNoneKeys(), adName)) {
definition.setAddressName(StringUtils.EMPTY);
} else {
definition.setAddressName(adName);
}
}
java.util.List paneList = titleValuePane.updateBean();
for (int i = 0, size = paneList.size(); i < size; i++) {
Object[] values = (Object[]) paneList.get(i);
if (values.length == 2) {
SeriesDefinition seriesDefinition = new SeriesDefinition();
seriesDefinition.setSeriesName(values[0]);
seriesDefinition.setValue(values[1]);
definition.addTittleValue(seriesDefinition);
}
}
return definition;
}
/**
* 给组件登记一个观察者监听事件
*
* @param listener 观察者监听事件
*/
public void registerChangeListener(final UIObserverListener listener) {
changeListeners.add(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
listener.doChange();
}
});
}
/**
* 组件是否需要响应添加的观察者事件
*
* @return 如果需要响应观察者事件则返回true否则返回false
*/
public boolean shouldResponseChangeListener() {
return true;
}
private class InnerTableEditor extends UITableEditor {
private JComponent editorComponent;
/**
* 返回当前编辑器的值
*/
public Object getCellEditorValue() {
if (editorComponent instanceof UITextField) {
UITextField textField = (UITextField) editorComponent;
return textField.getText();
} else if (editorComponent instanceof UIComboBox) {
UIComboBox boxPane = (UIComboBox) editorComponent;
return boxPane.getSelectedItem();
}
return super.getCellEditorValue();
}
/**
* 返回当前编辑器..
*/
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
if (column == table.getModel().getColumnCount()) {
return null;
}
if (column == 0) {
UITextField text = new UITextField();
if (value != null) {
text.setText(Utils.objectToString(value));
}
text.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
titleValuePane.stopCellEditing();
titleValuePane.fireTargetChanged();
}
});
this.editorComponent = text;
} else {
UIComboBox box = new UIComboBox(initNames);
box.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
titleValuePane.fireTargetChanged();
titleValuePane.stopCellEditing();
}
});
if (value != null && StringUtils.isNotEmpty(value.toString())) {
box.setSelectedItem(value);
} else {
box.setSelectedItem(value);
}
this.editorComponent = box;
}
return this.editorComponent;
}
}
/**
* 出发数据集改变
* @param wrapper 数据集
*/
public void fireTableDataChange(TableDataWrapper wrapper){
this.tableDataWrapper = wrapper;
refresh2ComboBox();
}
}

68
designer_chart/src/com/fr/design/chart/report/MapCubeDataPane4Chart.java

@ -1,68 +0,0 @@
package com.fr.design.chart.report;
import com.fr.base.chart.chartdata.TopDefinitionProvider;
import com.fr.chart.chartdata.MapMoreLayerTableDefinition;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.gui.frpane.UIComboBoxPane;
import com.fr.general.Inter;
import java.awt.*;
import java.util.*;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class MapCubeDataPane4Chart extends UIComboBoxPane<TopDefinitionProvider> {
private MapTableCubeDataPane4Chart tablePane;
protected void initLayout() {
this.setLayout(new BorderLayout(0, 0));
this.add(cardPane, BorderLayout.CENTER);
}
@Override
protected List<FurtherBasicBeanPane<? extends TopDefinitionProvider>> initPaneList() {
List list = new ArrayList();
list.add(tablePane = new MapTableCubeDataPane4Chart());
return list;
}
@Override
protected String title4PopupWindow() {
return Inter.getLocText("FR-Chart-Map_LayerData");
}
/**
* 对数据集或者单元格数据加载界面
*/
public void populateBean(TopDefinitionProvider definition) {
if(definition instanceof MapMoreLayerTableDefinition) {
MapMoreLayerTableDefinition tableDefinition = (MapMoreLayerTableDefinition)definition;
this.setSelectedIndex(0);
tablePane.populateBean(tableDefinition);
}
}
/**
* 根据界面 下载保存数据
*/
public TopDefinitionProvider update() {
return tablePane.updateBean();
}
/**
* 出发数据集改变
* @param tableDataWrapper 数据集
*/
public void fireTableDataChanged(TableDataWrapper tableDataWrapper) {
tablePane.setTableDataWrapper(tableDataWrapper);
tablePane.refreshAreaNameBox();
}
}

133
designer_chart/src/com/fr/design/chart/report/MapDataPane4Chart.java

@ -1,133 +0,0 @@
package com.fr.design.chart.report;
import com.fr.base.TableData;
import com.fr.base.chart.chartdata.TopDefinitionProvider;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartdata.*;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.gui.frpane.UIComboBoxPane;
import com.fr.design.gui.ilable.BoldFontTextLabel;
import com.fr.design.mainframe.AbstractChartDataPane4Chart;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.general.Inter;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* Date: 14/12/3
* Time: 下午6:49
*/
public class MapDataPane4Chart extends AbstractChartDataPane4Chart {
private UIComboBoxPane dataContentPane;
private MapMoreCubeLayerPane4Chart morePane = new MapMoreCubeLayerPane4Chart();
private MapSinglePane4Chart singlePane = new MapSinglePane4Chart();
private ChartCollection currentCollection;
private ItemListener itemListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
fireTableDataChange();
}
};
public MapDataPane4Chart(AttributeChangeListener listener, ChartDataPane parent) {
super(listener, parent);
dataContentPane = new UIComboBoxPane<Chart>() {
protected void initLayout() {
this.setLayout(new BorderLayout(0, 6));
JPanel northPane = new JPanel(new FlowLayout(FlowLayout.LEFT));
northPane.add(new BoldFontTextLabel(Inter.getLocText("FR-Chart-Map_ShowWay") + ":"));
northPane.add(jcb);
this.add(northPane, BorderLayout.NORTH);
this.add(cardPane, BorderLayout.CENTER);
}
protected java.util.List<FurtherBasicBeanPane<? extends Chart>> initPaneList() {
java.util.List list = new ArrayList();
list.add(singlePane);
list.add(morePane);
return list;
}
protected void comboBoxItemStateChanged() {
if(currentCollection == null){
return;
}
fireTableDataChange();
morePane.init4PopuMapTree(currentCollection);
}
protected String title4PopupWindow() {
return Inter.getLocText(new String[]{"Chart-Map", "Data"});
}
};
}
protected JPanel getDataContentPane(){
return dataContentPane;
}
@Override
public void populate(ChartCollection collection) {
currentCollection = collection;
morePane.init4PopuMapTree(collection);
if (collection != null && collection.getSelectedChart() != null) {
Chart chart = collection.getSelectedChart();
TopDefinitionProvider definition = chart.getFilterDefinition();
if (definition instanceof TableDataDefinition) {
TableData tableData = ((TableDataDefinition) definition).getTableData();
if(tableData != null){
populateChoosePane(tableData);
fireTableDataChange();
}
}
if(definition instanceof MapSingleLayerTableDefinition) {
singlePane.populateBean(definition);
} else if(definition instanceof MapMoreLayerTableDefinition) {
morePane.populateBean(collection);
}
}
this.remove(leftContentPane);
this.initContentPane();
this.validate();
dataSource.addItemListener(dsListener);
initAllListeners();
initSelfListener(dataContentPane);
this.addAttributeChangeListener(attributeChangeListener);
}
@Override
public void update(ChartCollection collection) {
if(dataContentPane.getSelectedIndex() == 0) {
collection.getSelectedChart().setFilterDefinition(singlePane.updateBean());
} else {
morePane.updateBean(collection);
}
currentCollection = collection;
}
/**
* 数据集数据改变
*/
public void fireTableDataChange() {
if (dataContentPane == null) {
return;
}
if(dataContentPane.getSelectedIndex() == 0) {
singlePane.fireTableDataChanged(choosePane.getTableDataWrapper());
} else {
morePane.fireTableDataChanged(choosePane.getTableDataWrapper());
}
}
}

113
designer_chart/src/com/fr/design/chart/report/MapMoreCubeLayerPane4Chart.java

@ -1,113 +0,0 @@
package com.fr.design.chart.report;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartattr.MapPlot;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.dialog.BasicPane;
import com.fr.design.dialog.MultiTabPane;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class MapMoreCubeLayerPane4Chart extends MultiTabPane<ChartCollection> {
private static final long serialVersionUID = -174286187746442527L;
private MapCubeLayerPane layerPane;
private MapCubeDataPane4Chart dataPane;
@Override
protected List<BasicPane> initPaneList() {
List<BasicPane> paneList = new ArrayList<BasicPane>();
paneList.add(layerPane = new MapCubeLayerPane());
paneList.add(dataPane = new MapCubeDataPane4Chart());
return paneList;
}
public ChartCollection updateBean() {
return null;// do nothing
}
public void populateBean(ChartCollection collection) {
Chart selectChart = collection.getSelectedChart();
if(selectChart != null && selectChart.getPlot() instanceof MapPlot) {
MapPlot map = (MapPlot)selectChart.getPlot();
layerPane.populateBean(map.getMapName());
}
// 确认层级关系
dataPane.populateBean(collection.getSelectedChart().getFilterDefinition());
}
public void updateBean(ChartCollection collection) {
collection.getSelectedChart().setFilterDefinition(dataPane.update());
Chart selectChart = collection.getSelectedChart();
if(selectChart != null && selectChart.getPlot() instanceof MapPlot) {
MapPlot map = (MapPlot)selectChart.getPlot();
layerPane.updateBean(map.getMapName());// 确定更新地图名称所对应的层级关系
}
}
/**
* 刷新层级树 数据中populate 数据的层数
* @param collection 图表收集器.
*/
public void init4PopuMapTree(ChartCollection collection) {
Chart selectChart = collection.getSelectedChart();
if(selectChart != null && selectChart.getPlot() instanceof MapPlot) {
MapPlot map = (MapPlot)selectChart.getPlot();
if(layerPane != null) {
layerPane.initRootTree(map.getMapName());
}
}
}
/**
* 判断是否合格
* @param ob 参数判断
* @return 默认合格.
*/
public boolean accept(Object ob) {
return true;
}
/**
* 界面标题
* @return 返回标题
*/
public String title4PopupWindow() {
return Inter.getLocText("FR-Chart-Map_Multilayer");
}
/**
* 重置
*/
public void reset() {
}
/**
* 设置是否支持单元格数据.
*/
public void setSurpportCellData(boolean surpportCellData) {
dataPane.justSupportOneSelect(surpportCellData);
}
/**
* 出发数据集改变
* @param tableDataWrapper 数据集
*/
public void fireTableDataChanged(TableDataWrapper tableDataWrapper) {
dataPane.fireTableDataChanged(tableDataWrapper);
}
}

79
designer_chart/src/com/fr/design/chart/report/MapSinglePane4Chart.java

@ -1,79 +0,0 @@
package com.fr.design.chart.report;
import com.fr.base.chart.chartdata.TopDefinitionProvider;
import com.fr.chart.chartdata.MapSingleLayerTableDefinition;
import com.fr.chart.chartdata.TopDefinition;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.general.Inter;
import java.awt.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class MapSinglePane4Chart extends FurtherBasicBeanPane<TopDefinitionProvider> {
private MapTableDataSinglePane4Chart tableSinglePane;
public MapSinglePane4Chart() {
initCom();
}
private void initCom() {
this.setLayout(new BorderLayout());
this.add(tableSinglePane = new MapTableDataSinglePane4Chart(), BorderLayout.CENTER);
}
/**
* 判断准许的情况
* @param ob 数据集
* @return 是不是顶层数据
*/
public boolean accept(Object ob) {
return ob instanceof TopDefinition;
}
/**
* 重置
*/
public void reset() {
}
/**
*界面标题
* @return 界面标题
*/
public String title4PopupWindow() {
return Inter.getLocText(new String[]{"SingleLayer", "Chart-Map"});
}
/**
* 加载单层地图时的 数据来源界面
*/
public void populateBean(TopDefinitionProvider ob) {
if(ob instanceof MapSingleLayerTableDefinition) {
tableSinglePane.populateBean((MapSingleLayerTableDefinition)ob);
}
}
/**
* 保存下载 单层数据界面
*/
public TopDefinitionProvider updateBean() {
return tableSinglePane.updateBean();
}
/**
* 出发数据集改变
* @param tableDataWrapper 数据集
*/
public void fireTableDataChanged(TableDataWrapper tableDataWrapper) {
tableSinglePane.setTableDataWrapper(tableDataWrapper);
tableSinglePane.refreshAreaNameBox();
}
}

93
designer_chart/src/com/fr/design/chart/report/MapTableCubeDataPane4Chart.java

@ -1,93 +0,0 @@
package com.fr.design.chart.report;
import com.fr.chart.chartdata.MapMoreLayerTableDefinition;
import com.fr.chart.chartdata.MapSingleLayerTableDefinition;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.general.Inter;
import java.awt.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class MapTableCubeDataPane4Chart extends FurtherBasicBeanPane<MapMoreLayerTableDefinition> {
private MapMoreTableIndexPane tablePane;
private TableDataWrapper tableDataWrapper;
public MapTableCubeDataPane4Chart() {
this.setLayout(new BorderLayout());
tablePane = new MapMoreTableIndexPane();
this.add(tablePane, BorderLayout.CENTER);
}
/**
* 刷新区域名称列表
*/
public void refreshAreaNameBox() {
TableDataWrapper tableDataWrappe = tableDataWrapper;
if (tableDataWrappe == null) {
return;
}
java.util.List<String> columnNameList = tableDataWrappe.calculateColumnNameList();
tablePane.initAreaComBox(columnNameList.toArray(new String[columnNameList.size()]));
}
public void setTableDataWrapper(TableDataWrapper wrapper){
this.tableDataWrapper = wrapper;
}
/**
* 界面接入
* @param ob 界面
* @return 返回接入.
*/
public boolean accept(Object ob) {
return true;
}
/**
* 重置
*/
public void reset() {
}
/**
* 界面弹出标题
* @return 返回标题.
*/
public String title4PopupWindow() {
return Inter.getLocText("FR-Chart-Table_Data");
}
@Override
public void populateBean(MapMoreLayerTableDefinition tableDefinition) {
if (tableDefinition != null) {
MapSingleLayerTableDefinition[] values = tableDefinition.getNameValues();
if(values != null && values.length > 0) {
tablePane.populateBean(values[0]);
}
}
}
@Override
public MapMoreLayerTableDefinition updateBean() {
MapMoreLayerTableDefinition tableDefinition = new MapMoreLayerTableDefinition();
TableDataWrapper tableDataWrappe =tableDataWrapper;
if (tableDataWrappe != null) {
tableDefinition.setTableData(tableDataWrappe.getTableData());
tableDefinition.clearNameValues();
tableDefinition.addNameValue(tablePane.updateBean());
}
return tableDefinition;
}
}

268
designer_chart/src/com/fr/design/chart/report/MapTableDataSinglePane4Chart.java

@ -1,268 +0,0 @@
package com.fr.design.chart.report;
import com.fr.base.Utils;
import com.fr.chart.chartdata.MapSingleLayerTableDefinition;
import com.fr.chart.chartdata.SeriesDefinition;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.event.UIObserver;
import com.fr.design.event.UIObserverListener;
import com.fr.design.gui.frpane.UICorrelationPane;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilable.BoldFontTextLabel;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itable.UITableEditor;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.general.Inter;
import com.fr.stable.StringUtils;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class MapTableDataSinglePane4Chart extends FurtherBasicBeanPane<MapSingleLayerTableDefinition> implements UIObserver {
private static final int LABEL_WIDTH_GAP = 5;
private static final int COM_HEIGHT = 20;
private ArrayList<ChangeListener> changeListeners = new ArrayList<ChangeListener>();
private String[] initNames = {""};
private UIComboBox areaNameBox;
private UICorrelationPane titleValuePane;
private TableDataWrapper tableDataWrapper;
public MapTableDataSinglePane4Chart() {
this.setLayout(new BorderLayout());
JPanel pane = new JPanel();
this.add(pane, BorderLayout.CENTER);
pane.setLayout(new BorderLayout());
pane.add(getAreaNamePane(), BorderLayout.NORTH);
String[] titles = {Inter.getLocText("FR-Chart-Area_Title"), Inter.getLocText("FR-Chart-Area_Value")};
titleValuePane = new UICorrelationPane(titles){
public UITableEditor createUITableEditor() {
return new InnerTableEditor();
}
};
pane.add(titleValuePane, BorderLayout.CENTER);
}
private JPanel getAreaNamePane(){
final UILabel label = new BoldFontTextLabel(Inter.getLocText("FR-Chart-Map_ShowWay") + ":");
UILabel nameLabel = new UILabel(Inter.getLocText("FR-Chart-Area_Name") + ":", SwingConstants.RIGHT){
public Dimension getPreferredSize() {
return new Dimension(label.getPreferredSize().width+LABEL_WIDTH_GAP,COM_HEIGHT);
}
};
areaNameBox = new UIComboBox();
areaNameBox.setPreferredSize(new Dimension(80, 20));
double p =TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {p, f};
double[] rowSize = {p};
Component[][] components = new Component[][]{
new Component[]{nameLabel, areaNameBox},
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
/**
*刷新区域名称列表
*/
public void refreshAreaNameBox() {// 刷新区域名称列表
TableDataWrapper tableDataWrappe = tableDataWrapper;
if (tableDataWrappe == null) {
return;
}
java.util.List<String> columnNameList = tableDataWrappe.calculateColumnNameList();
initNames = columnNameList.toArray(new String[columnNameList.size()]);
Object oldSelected = areaNameBox.getSelectedItem();
areaNameBox.removeAllItems();
for(int i = 0, size = initNames.length; i < size; i++) {
areaNameBox.addItem(initNames[i]);
}
areaNameBox.getModel().setSelectedItem(oldSelected);
stopEditing();
}
/**
* 是否接受数据集
* @param ob 具体变量
* @return 不是
*/
public boolean accept(Object ob) {
return false;
}
/**
* 界面重置
*/
public void reset() {
}
/**
* 界面弹出标题
* @return 标题
*/
public String title4PopupWindow() {
return Inter.getLocText("FR-Chart-Table_Data");
}
private void stopEditing() {
}
@Override
public void populateBean(MapSingleLayerTableDefinition ob) {
stopEditing();
if (ob instanceof MapSingleLayerTableDefinition) {
MapSingleLayerTableDefinition mapDefinition = (MapSingleLayerTableDefinition) ob;
// fromTableData.populateBean(((NameTableData) mapDefinition.getTableData()));
areaNameBox.setSelectedItem(mapDefinition.getAreaName());
java.util.List paneList = new ArrayList();
int titleValueSize = mapDefinition.getTitleValueSize();
for(int i = 0; i < titleValueSize; i++) {
SeriesDefinition definition = mapDefinition.getTitleValueWithIndex(i);
if(definition != null && definition.getSeriesName() != null && definition.getValue() != null) {
paneList.add(new Object[]{definition.getSeriesName(), definition.getValue()});
}
}
if(!paneList.isEmpty()) {
titleValuePane.populateBean(paneList);
}
}
}
@Override
public MapSingleLayerTableDefinition updateBean() {// 从一行内容中update
stopEditing();
MapSingleLayerTableDefinition definition = new MapSingleLayerTableDefinition();
TableDataWrapper tableDataWrappe = tableDataWrapper;
// = fromTableData.getTableDataWrapper();
if (tableDataWrappe == null || areaNameBox.getSelectedItem() == null) {
return null;
}
definition.setTableData(tableDataWrapper.getTableData());
definition.setAreaName(Utils.objectToString(areaNameBox.getSelectedItem()));
java.util.List paneList = titleValuePane.updateBean();
for(int i = 0, size = paneList.size(); i < size; i++) {
Object[] values = (Object[])paneList.get(i);
if(values.length == 2) {
SeriesDefinition seriesDefinition = new SeriesDefinition();
seriesDefinition.setSeriesName(values[0]);
seriesDefinition.setValue(values[1]);
definition.addTitleValue(seriesDefinition);
}
}
return definition;
}
/**
* 给组件登记一个观察者监听事件
*
* @param listener 观察者监听事件
*/
public void registerChangeListener(final UIObserverListener listener) {
changeListeners.add(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
listener.doChange();
}
});
}
/**
* 组件是否需要响应添加的观察者事件
*
* @return 如果需要响应观察者事件则返回true否则返回false
*/
public boolean shouldResponseChangeListener() {
return true;
}
private class InnerTableEditor extends UITableEditor {
private JComponent editorComponent;
/**
* 返回当前编辑器的值
*/
public Object getCellEditorValue() {
if(editorComponent instanceof UITextField) {
UITextField textField = (UITextField)editorComponent;
return textField.getText();
} else if(editorComponent instanceof UIComboBox) {
UIComboBox boxPane = (UIComboBox)editorComponent;
return boxPane.getSelectedItem();
}
return super.getCellEditorValue();
}
/**
* 返回当前编辑器..
*/
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
if (column == table.getModel().getColumnCount()) {
return null;
}
if(column == 0 ) {
UITextField text = new UITextField();
if(value != null) {
text.setText(Utils.objectToString(value));
}
text.registerChangeListener(new UIObserverListener() {
@Override
public void doChange() {
titleValuePane.fireTargetChanged();
}
});
this.editorComponent = text;
} else {
UIComboBox box = new UIComboBox(initNames);
box.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
titleValuePane.fireTargetChanged();
titleValuePane.stopCellEditing();
}
});
if (value != null && StringUtils.isNotEmpty(value.toString())) {
box.setSelectedItem(value);
} else {
box.setSelectedItem(value);
}
this.editorComponent = box;
}
return this.editorComponent;
}
}
public void setTableDataWrapper(TableDataWrapper wrapper){
this.tableDataWrapper = wrapper;
}
}

244
designer_chart/src/com/fr/design/mainframe/AbstractChartDataPane4Chart.java

@ -1,244 +0,0 @@
package com.fr.design.mainframe;
import com.fr.base.TableData;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartdata.JSONTableData;
import com.fr.data.impl.EmbeddedTableData;
import com.fr.data.impl.ExcelTableData;
import com.fr.design.event.UIObserver;
import com.fr.design.event.UIObserverListener;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.data.*;
import com.fr.general.Inter;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* Date: 14/12/3
* Time: 下午6:53
*/
public class AbstractChartDataPane4Chart extends DataContentsPane implements UIObserver {
private static final int DATA_SOURCE_GAP = 18;
private static final int WIDTH = 262;
protected ChartDataPane parentPane;
protected ChartDesignDataLoadPane choosePane;
protected JComponent choose = new UILabel();
protected UIObserverListener observerListener;
protected UIComboBox dataSource = new UIComboBox(
new String[]{"JSON" + Inter.getLocText("Chart-DS_TableData"), Inter.getLocText("Chart-Use_Local") + "EXCEL", Inter.getLocText("Chart-DS_Embedded_TableData")});
protected ItemListener dsListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
int index = dataSource.getSelectedIndex();
if (index == 0) {
initJSON();
} else if (index == 1) {
initExcel();
} else {
initEmbbed();
}
remove(leftContentPane);
clearTableDataSetting();
initContentPane();
AbstractChartDataPane4Chart.this.validate();
}
};
protected AttributeChangeListener attributeChangeListener;
public AbstractChartDataPane4Chart(final AttributeChangeListener listener, ChartDataPane parent) {
this.parentPane = parent;
this.attributeChangeListener = listener;
initJSON();
initAll();
}
protected void populateChoosePane(TableData tableData) {
dataSource.removeItemListener(dsListener);
if (tableData instanceof JSONTableData) {
initJSON();
dataSource.setSelectedIndex(0);
} else if (tableData instanceof ExcelTableData) {
initExcel();
dataSource.setSelectedIndex(1);
} else if (tableData instanceof EmbeddedTableData) {
initEmbbed();
dataSource.setSelectedIndex(2);
}
choosePane.populateChartTableData(tableData);
dataSource.addItemListener(dsListener);
}
protected void initJSON() {
choosePane = new JSONDataPane(this);
UILabel url = new UILabel("URL:");
url.setHorizontalAlignment(SwingConstants.RIGHT);
choose = url;
}
protected void initExcel() {
choose = new UIButton(Inter.getLocText("Chart-Select_Path"));
choosePane = new ExcelDataPane(this, choose);
}
protected void initEmbbed() {
choosePane = new EmbbeddDataPane(this);
choose = null;
}
@Override
public void setSupportCellData(boolean supportCellData) {
}
@Override
protected JPanel createContentPane() {
double p = TableLayout.PREFERRED;
double[] columnSize = {WIDTH};
double[] rowSize = {p, p};
Component[][] components = new Component[][]{
new Component[]{new UILabel(Inter.getLocText("Chart-Data_Import"))},
new Component[]{createDataImportPane()}
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
private JPanel createDataImportPane() {
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {f};
double[] rowSize = {p, p, p};
Component[][] components = new Component[][]{
new Component[]{createDataSourcePane()},
new Component[]{new JSeparator()},
new Component[]{createDataSetPane()}
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
/**
* 数据配置面板
*
* @return
*/
protected JPanel createDataSetPane() {
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {f};
double[] rowSize = {p, p};
Component[][] components = new Component[][]{
new Component[]{new UILabel(Inter.getLocText("Chart-Data_Configuration"))},
new Component[]{getDataContentPane()}
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
protected JPanel getDataContentPane() {
return new JPanel();
}
private JPanel createDataSourcePane() {
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {DATA_SOURCE_GAP, f};
double[] rowSize = {p,};
Component[][] components = new Component[][]{
new Component[]{null, createChooseBoxPane()},
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
private JPanel createChooseBoxPane() {
UILabel dataSourceLabel = new UILabel(Inter.getLocText("Chart-Data_Resource") + ":");
dataSourceLabel.setHorizontalAlignment(SwingConstants.RIGHT);
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {p, f};
double[] rowSize = {p, p};
Component[][] components = new Component[][]{
new Component[]{dataSourceLabel, dataSource},
new Component[]{choose, choosePane}
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
/**
* 注册观察者监听事件
*
* @param listener 观察者监听事件
*/
public void registerChangeListener(UIObserverListener listener) {
this.observerListener = listener;
}
/**
* 使用应该响应listener
*
* @return 应该响应
*/
public boolean shouldResponseChangeListener() {
return true;
}
protected void initSelfListener(Container parentComponent) {
for (int i = 0; i < parentComponent.getComponentCount(); i++) {
Component tmpComp = parentComponent.getComponent(i);
if (tmpComp instanceof Container) {
initListener((Container) tmpComp);
}
if (tmpComp instanceof UIObserver) {
((UIObserver) tmpComp).registerChangeListener(observerListener);
}
}
}
@Override
public void populate(ChartCollection collection) {
}
@Override
public void update(ChartCollection collection) {
}
/**
* 清空数据集的设置
*/
public void clearTableDataSetting() {
}
/**
* 数据集数据改变
*/
public void fireTableDataChange() {
}
}

111
designer_chart/src/com/fr/design/mainframe/AbstractMapPlotPane4ToolBar.java

@ -1,111 +0,0 @@
package com.fr.design.mainframe;
import com.fr.chart.base.ChartConstants;
import com.fr.chart.base.MapSvgXMLHelper;
import com.fr.chart.chartattr.*;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.mainframe.chart.ChartDesignEditPane;
import com.fr.general.ComparatorUtils;
import com.fr.stable.Constants;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* Date: 14/12/1
* Time: 下午3:15
*/
public abstract class AbstractMapPlotPane4ToolBar extends JPanel{
protected static final int COM_HEIGHT = 22;
protected static final int COM_GAP = 14;
protected static final int COMBOX_WIDTH = 230;
protected ChartDesigner chartDesigner;
protected UIComboBox mapTypeComboBox;
protected ItemListener mapTypeListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
calculateDetailMaps(mapTypeComboBox.getSelectedIndex());
}
};
public AbstractMapPlotPane4ToolBar(ChartDesigner designer){
this.chartDesigner = designer;
this.setLayout(new FlowLayout(FlowLayout.LEFT, COM_GAP, 0));
this.setBorder(new EmptyBorder(2, 0, 2, 0));
mapTypeComboBox = new UIComboBox(getMapTypes()) {
public Dimension getPreferredSize() {
return new Dimension(COMBOX_WIDTH, COM_HEIGHT);
}
};
mapTypeComboBox.addItemListener(mapTypeListener);
this.add(mapTypeComboBox);
}
protected abstract void calculateDetailMaps(int mapType);
/**
* 更新地图面板
* @param mapType 地图名字
*/
public void populateMapPane(String mapType){
mapTypeComboBox.removeItemListener(mapTypeListener);
for (String type : getMapTypes()) {
java.util.List list = MapSvgXMLHelper.getInstance().getNamesListWithCateName(type);
for (Object name : list) {
if(ComparatorUtils.equals(name,mapType)){
mapTypeComboBox.setSelectedItem(type);
break;
}
}
}
mapTypeComboBox.addItemListener(mapTypeListener);
}
public abstract String[] getMapTypes();
/**
* 切换图表类型
*/
public void fireChange(){
ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection();
Chart chart =chartCollection.getSelectedChart();
if(chart.getPlot().getPlotStyle() != ChartConstants.STYLE_NONE){
resetChart(chart);
}
chart.switchPlot(getSelectedClonedPlot());
if(chart.getPlot().getPlotStyle() != ChartConstants.STYLE_NONE){
resetChart(chart);
}
chartDesigner.fireTargetModified();
ChartDesignEditPane.getInstance().populateSelectedTabPane();
}
protected void resetChart(Chart chart){
chart.setTitle(new Title(chart.getTitle().getTextObject()));
chart.setBorderStyle(Constants.LINE_NONE);
chart.setBorderColor(new Color(150, 150, 150));
chart.setBackground(null);
}
protected abstract Plot getSelectedClonedPlot();
/**
* 触发更新
*/
public void fireTargetModified() {
chartDesigner.fireTargetModified();
}
}

521
designer_chart/src/com/fr/design/mainframe/ChartArea.java

@ -1,521 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextfield.UINumberField;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.scrollruler.*;
import com.fr.general.FRScreen;
import com.fr.general.Inter;
import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-13
* Time: 下午5:08
*/
public class ChartArea extends JComponent implements ScrollRulerComponent {
private static final int TOPGAP = 8;
private static final int MIN_WIDTH = 36;
private static final int MIN_HEIGHT = 21;
private static final double SLIDER_FLOAT = 120.0;
private static final double SLIDER_MIN = 60.0;
private static final double DEFAULT_SLIDER = 100.0;
private static final int ROTATIONS = 50;
private int designerwidth = 810;
private int designerheight = 500;
private int customWidth = 810;
private int customHeight = 500;
private ChartDesigner designer;
private int horizontalValue = 0;
private int verticalValue = 0;
private int verticalMax = 0;
private int horicalMax = 0;
private FormScrollBar verScrollBar;
private FormScrollBar horScrollBar;
//显示和设置图表界面大小的控件
private UINumberField widthPane;
private UINumberField heightPane;
private boolean isValid = true;
private double START_VALUE = DEFAULT_SLIDER;
public ChartArea(ChartDesigner designer) {
this(designer, true);
}
public ChartArea(ChartDesigner designer, boolean useScrollBar) {
this.designer = designer;
this.designer.setParent(this);
this.customWidth = designer.getTarget().getWidth();
this.customHeight = designer.getTarget().getHeight();
this.designerwidth = this.customWidth;
this.designerheight = this.customHeight;
isValid = useScrollBar;
verScrollBar = new FormScrollBar(Adjustable.VERTICAL, this);
horScrollBar = new FormScrollBar(Adjustable.HORIZONTAL, this);
if (useScrollBar) {
this.setLayout(new FormRulerLayout());
designer.setBorder(new LineBorder(new Color(198, 198, 198)));
this.add(FormRulerLayout.CENTER, designer);
addFormSize();
this.add(FormRulerLayout.VERTICAL, verScrollBar);
this.add(FormRulerLayout.HIRIZONTAL, horScrollBar);
enableEvents(AWTEvent.MOUSE_WHEEL_EVENT_MASK);
} else {
// 报表参数界面只要标尺和中心pane
this.setLayout(new RulerLayout());
this.add(RulerLayout.CENTER, designer);
addFormRuler();
}
this.setFocusTraversalKeysEnabled(false);
}
/**
* 增加表单的页面大小控制界面包括手动修改和滑块拖动
*/
private void addFormSize() {
double f = TableLayout.FILL;
double p = TableLayout.PREFERRED;
double[] rowSize = {f};
double[] columnSize = {p, f, p, p, p, p, p,f,p};
UILabel tipsPane = new UILabel("chart");
tipsPane.setPreferredSize(new Dimension(200, 0));
widthPane = new UINumberField();
widthPane.setPreferredSize(new Dimension(60, 0));
heightPane = new UINumberField();
heightPane.setPreferredSize(new Dimension(60, 0));
JPanel panel = new JPanel(){
public Dimension getPreferredSize(){
return new Dimension(200,0);
}
};
JPanel resizePane = TableLayoutHelper.createCommonTableLayoutPane(new JComponent[][]{
{tipsPane, new UILabel(), widthPane, new UILabel(Inter.getLocText("Indent-Pixel")), new UILabel("x"),
heightPane, new UILabel(Inter.getLocText("Indent-Pixel")),new UILabel(),panel}},
rowSize, columnSize, 8
);
this.add(FormRulerLayout.BOTTOM, resizePane);
setWidgetsConfig();
// 先初始话滑块及对应事件,然后获取分辨率调整容器的显示大小
initCalculateSize();
}
private void setWidgetsConfig() {
widthPane.setHorizontalAlignment(widthPane.CENTER);
heightPane.setHorizontalAlignment(heightPane.CENTER);
widthPane.setMaxDecimalLength(0);
heightPane.setMaxDecimalLength(0);
//控件初始值就是根节点组件初始的宽和高
widthPane.setValue(designerwidth);
heightPane.setValue(designerheight);
addWidthPaneListener();
addHeightPaneListener();
}
private void initCalculateSize() {
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension scrnsize = toolkit.getScreenSize();
double value = FRScreen.getByDimension(scrnsize).getValue();
if (value != DEFAULT_SLIDER) {
reCalculateRoot(value, true);
}
}
//设置宽度的控件及响应事件
private void addWidthPaneListener() {
widthPane.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent evt) {
reCalculateWidth((int) ((UINumberField) evt.getSource()).getValue());
}
}
);
widthPane.addFocusListener(
new FocusAdapter() {
public void focusLost(FocusEvent e) {
// 失去焦点时,可以认为输入结束
reCalculateWidth((int) ((UINumberField) e.getSource()).getValue());
}
}
);
}
private void addHeightPaneListener() {
heightPane.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent evt) {
reCalculateHeight((int) ((UINumberField) evt.getSource()).getValue());
}
}
);
heightPane.addFocusListener(
new FocusAdapter() {
public void focusLost(FocusEvent e) {
// 失去焦点时,可以认为输入结束
reCalculateHeight((int) ((UINumberField) e.getSource()).getValue());
}
}
);
}
private void reCalculateWidth(int width) {
int dW = width - designerwidth;
if (dW == 0) {
return;
}
// 图表设计器先设大小为实际的高和当前的宽,然后按此调整内部的组件
designer.setSize(width, designerheight);
designerwidth = width;
customWidth = width;
designer.getTarget().setWidth(width);
ChartArea.this.validate();
designer.fireTargetModified();
}
private void reCalculateHeight(int height) {
int dW = height - designerwidth;
if (dW == 0) {
return;
}
// 图表设计器先设大小为实际的高和当前的宽,然后按此调整内部的组件
designer.setSize(designerwidth, height);
designerheight = height;
customHeight = height;
this.designer.getTarget().setHeight(height);
ChartArea.this.validate();
designer.fireTargetModified();
}
/**
* 按照界面大小的百分比值调整root大小
*
* @param needCalculateParaHeight 是否需要调整参数界面高度
* @param value
*/
private void reCalculateRoot(double value, boolean needCalculateParaHeight) {
if (value == START_VALUE) {
return;
}
double percent = (value - START_VALUE) / START_VALUE;
Dimension d = new Dimension(designerwidth, designerheight);
// 调整自适应布局大小后,同步调整参数界面和border大小,此时刷新下formArea
ChartArea.this.validate();
START_VALUE = value;
}
/**
* 增加刻度条
*/
public void addFormRuler() {
BaseRuler vRuler = new VerticalRuler(this);
BaseRuler hRuler = new HorizontalRuler(this);
this.add(RulerLayout.VRULER, vRuler);
this.add(RulerLayout.HRULER, hRuler);
}
/**
* 鼠标滚轮事件
* 由于表单设计界面要求 容器大小大于界面时滚动条才可以拖动所以不支持滚动无限往下滚
*/
@Override
protected void processMouseWheelEvent(java.awt.event.MouseWheelEvent evt) {
int id = evt.getID();
switch (id) {
case MouseEvent.MOUSE_WHEEL: {
int rotations = evt.getWheelRotation();
int value = this.verScrollBar.getValue() + rotations * ROTATIONS;
value = Math.min(value, verticalMax);
value = Math.max(0, value);
doLayout(); //加dolayout是因为每次滚动都要重置 Max的大小
this.verScrollBar.setValue(value);
break;
}
}
}
/**
* 容器布局
*/
public void doLayout() {
layout();
if (isValid) {
setScrollBarProperties(customWidth - designer.getWidth(), horScrollBar);
//计算滚动条值的时候应该算上参数面板的高度
setScrollBarProperties(customHeight - designer.getHeight(), verScrollBar);
}
}
/**
* 设置滚动条的属性
*/
private void setScrollBarProperties(int value, FormScrollBar bar) {
if (value <= 0) {
// 界面有滚动条时,手动缩小容器宽度到界面内,重置滚动条值和max
setScrollBarMax(0, bar);
bar.setMaximum(0);
bar.setValue(0);
bar.setEnabled(false);
} else {
//参数面板拖拽过程中value一直为当前value
int oldValue = verticalValue;
setScrollBarMax(value, bar);
bar.setEnabled(true);
bar.setMaximum(value);
bar.setValue(value);
bar.setValue(oldValue);
}
}
private boolean isScrollNotVisible(FormScrollBar bar) {
if (bar.getOrientation() == Adjustable.VERTICAL) {
return verticalMax == 0;
} else {
return horicalMax == 0;
}
}
private void setScrollBarMax(int max, FormScrollBar bar) {
if (bar.getOrientation() == Adjustable.VERTICAL) {
verticalMax = max;
} else {
horicalMax = max;
}
}
/**
* 返回designer的最小高度
*
* @return int
*/
public int getMinHeight() {
return MIN_HEIGHT;
}
/**
* 返回designer的最小宽度
*
* @return int
*/
public int getMinWidth() {
return MIN_WIDTH;
}
/**
* getRulerLengthUnit
*
* @return short
*/
public short getRulerLengthUnit() {
return -1;
}
/**
* 返回水平滚动条的value
*
* @return int
*/
public int getHorizontalValue() {
return horizontalValue;
}
/**
* 设置水平滚动条的value
*
* @param newValue
*/
public void setHorizontalValue(int newValue) {
this.horizontalValue = newValue;
}
/**
* 返回竖直滚动条的value
*
* @return
*/
public int getVerticalValue() {
return verticalValue;
}
/**
* 竖直滚动条赋值
*
* @param newValue
*/
public void setVerticalValue(int newValue) {
this.verticalValue = newValue;
}
/**
* 返回当前designer的高度
*
* @return height
*/
public int getDesignerHeight() {
return designer.getHeight();
}
/**
* 返回当前designer的宽度
*
* @return
*/
public int getDesignerWidth() {
return designer.getWidth();
}
/**
* 返回宽度控件的value
*
* @return 宽度
*/
public double getWidthPaneValue() {
return widthPane.getValue();
}
/**
* 设置宽度值
*
* @param value
*/
public void setWidthPaneValue(int value) {
widthPane.setValue(value);
}
/**
* 设置高度值
*
* @param value
*/
public void setHeightPaneValue(int value) {
heightPane.setValue(value);
}
/**
* 返回高度控件的value
*
* @return 高度
*/
public double getHeightPaneValue() {
return heightPane.getValue();
}
/**
* 返回界面区域大小
*
* @return Dimension
*/
public Dimension getAreaSize() {
return new Dimension(horScrollBar.getMaximum(), verScrollBar.getMaximum());
}
/**
* setAreaSize
*
* @param totalSize
* @param horizontalValue
* @param verticalValue
*/
public void setAreaSize(Dimension totalSize, int horizontalValue, int verticalValue, double width, double height, double slide) {
horScrollBar.setMaximum((int) totalSize.getWidth());
verScrollBar.setMaximum((int) totalSize.getHeight());
horScrollBar.setValue(horizontalValue);
verScrollBar.setValue(verticalValue);
// 撤销会refresh底层容器,需要按照之前的宽高和百分比重置下容器size
if (width != widthPane.getValue()) {
widthPane.setValue(width);
reCalculateWidth((int) width);
}
if (height != heightPane.getValue()) {
heightPane.setValue(height);
reCalculateHeight((int) height);
}
// undo时会重新refreshRoot,需要再次按照百分比调整下
START_VALUE = DEFAULT_SLIDER;
reCalculateRoot(slide, true);
}
public int getCustomWidth(){
return this.customWidth;
}
public int getCustomHeight(){
return this.customHeight;
}
/**
* 计算滚动条的值和max
*
* @param oldmax 之前最大值
* @param max 当前最大值
* @param newValue 当前value
* @param oldValue 之前value
* @param visi designer的大小
* @param orientation 滚动条方向
* @return 计算后的值和max
*/
@Override
public Point calculateScroll(int oldmax, int max, int newValue, int oldValue, int visi, int orientation) {
int scrollMax = orientation == 1 ? verticalMax : horicalMax;
//防止滚动条到达低端还可以继续点击移动(滚动条最大范围不变时,newValue要在范围之内)
if (oldmax == scrollMax + visi && newValue > scrollMax) {
return new Point(oldValue, oldmax);
}
return new Point(newValue, max);
}
private class FormRulerLayout extends RulerLayout {
public FormRulerLayout() {
super();
}
/**
* 表单用的layout当前不需要标尺
*/
public void layoutContainer(Container target) {
synchronized (target.getTreeLock()) {
Insets insets = target.getInsets();
int top = insets.top;
int left = insets.left;
int bottom = target.getHeight() - insets.bottom;
int right = target.getWidth() - insets.right;
Dimension resize = resizePane.getPreferredSize();
Dimension hbarPreferredSize = null;
Dimension vbarPreferredSize = null;
resizePane.setBounds(left, bottom - resize.height, right, resize.height);
if (horScrollBar != null) {
hbarPreferredSize = horScrollBar.getPreferredSize();
vbarPreferredSize = verScrollBar.getPreferredSize();
horScrollBar.setBounds(left, bottom - hbarPreferredSize.height - resize.height, right - BARSIZE, hbarPreferredSize.height);
verScrollBar.setBounds(right - vbarPreferredSize.width, top, vbarPreferredSize.width, bottom - BARSIZE - resize.height);
}
ChartDesigner dg = ((ChartDesigner) designer);
Rectangle rec = new Rectangle(left + (right - designerwidth) / 2, TOPGAP, right, bottom);
//是否为图表
if (isValid) {
int maxHeight = bottom - hbarPreferredSize.height - resize.height - TOPGAP * 2;
int maxWidth = right - vbarPreferredSize.width;
designerwidth = designerwidth> maxWidth ? maxWidth : designerwidth;
designerheight = designerheight > maxHeight ? maxHeight : designerheight;
int designerLeft = left + (verScrollBar.getX() - designerwidth) / 2;
rec = new Rectangle(designerLeft, TOPGAP, designerwidth, designerheight);
}
// designer是整个表单设计界面中的面板部分,目前只放自适应布局和参数界面。
designer.setBounds(rec);
}
}
}
}

230
designer_chart/src/com/fr/design/mainframe/ChartDesigner.java

@ -1,230 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe;
import com.fr.form.ui.ChartBook;
import com.fr.design.designer.TargetComponent;
import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus;
import com.fr.design.menu.MenuDef;
import com.fr.design.menu.ShortCut;
import com.fr.design.menu.ToolBarDef;
import javax.swing.*;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionAdapter;
import java.util.ArrayList;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-13
* Time: 下午4:30
*/
public class ChartDesigner extends TargetComponent<ChartBook> implements MouseListener{
private ChartArea chartArea;//上层区域
private boolean hasCalGap = false;
private ArrayList<ChangeListener> changeListeners = new ArrayList<ChangeListener>();
public ChartDesigner(ChartBook chartBook) {
super(chartBook);
this.addMouseListener(this);
updateUI();// 初始化界面设计工具的UI实例
}
/**
* 设置上层区域
* @param chartArea 图表区域
*/
public void setParent(ChartArea chartArea) {
this.chartArea = chartArea;
}
/**
* 复制
*/
public void copy() {
}
/**
* 黏贴
* @return 成功返回true
*/
public boolean paste() {
return false;
}
/**
* 剪切
* @return 成功返回TRUE
*/
public boolean cut() {
return false;
}
/**
* 停止编辑
*/
public void stopEditing() {
}
/**
* 权限编辑面板
* @return 面板
*/
public AuthorityEditPane createAuthorityEditPane() {
return null;
}
/**
* 工具条
* @return 工具条
*/
public ToolBarMenuDockPlus getToolBarMenuDockPlus() {
return null;
}
/**
* 菜单状态
* @return 状态
*/
public int getMenuState() {
return 0;
}
/**
* 东上面板
* @return 面板
*/
public JPanel getEastUpPane() {
return null;
}
/**
* 东下面板
* @return 面板
*/
public JPanel getEastDownPane() {
return null;
}
/**
* 取消格式
*/
public void cancelFormat() {
}
/**
* 图表设计器得工具条项
* @return 图表设计器得工具条项
*/
public ToolBarDef[] toolbars4Target() {
return new ToolBarDef[0];
}
/**
* 菜单
* @return 菜单
*/
public MenuDef[] menus4Target() {
return new MenuDef[0];
}
/**
* 菜单项
* @return 菜单项
*/
public ShortCut[] shortcut4TemplateMenu() {
return new ShortCut[0];
}
/**
* 权限编辑得菜单项
* @return 菜单项
*/
public ShortCut[] shortCuts4Authority() {
return new ShortCut[0];
}
/**
* 表单得工具条按钮
* @return 表单得工具条按钮
*/
public JComponent[] toolBarButton4Form() {
return new JComponent[0];
}
/**
* 返回表单区域
* @return 表单区域
*/
public ChartArea getArea() {
return chartArea;
}
/**
* 鼠标点击
* @param e 事件
*/
public void mouseClicked(MouseEvent e) {
}
/**
* 鼠标按下
* @param e 事件
*/
public void mousePressed(MouseEvent e) {
}
/**
* 鼠标释放
* @param e 事件
*/
public void mouseReleased(MouseEvent e) {
}
/**
* 鼠标进入
* @param e 事件
*/
public void mouseEntered(MouseEvent e) {
}
/**
* 鼠标退出
* @param e 事件
*/
public void mouseExited(MouseEvent e) {
}
private void registerChangeListener(ChangeListener changeListener){
if(changeListener == null){
return;
}
this.changeListeners.add(changeListener);
}
public void populate(){
}
/**
* 清除工具栏上面全局风格按钮的选中
*/
public void clearToolBarStyleChoose(){
}
}

211
designer_chart/src/com/fr/design/mainframe/ChartDesignerUI.java

@ -1,211 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe;
import com.fr.base.BaseUtils;
import com.fr.base.ScreenResolution;
import com.fr.base.chart.BaseChartGlyph;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.ColumnIndependentChart;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.mainframe.chart.ChartDesignEditPane;
import com.fr.general.FRLogger;
import javax.swing.*;
import javax.swing.plaf.ComponentUI;
import java.awt.*;
import java.awt.event.MouseEvent;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-13
* Time: 下午4:55
*/
public class ChartDesignerUI extends ComponentUI {
private static final Icon ADD = BaseUtils.readIcon("/com/fr/design/images/add.png");
private static final Icon DEL = BaseUtils.readIcon("/com/fr/design/images/del.png");
private static final int ICON_SIZE = 22;
private static final int H_GAP = 2;
private static final int V_GAP = 6;
private Rectangle[] iconLocations;
private Rectangle add;
private Rectangle del;
private UILabel tooltipLabel;
private int overIndex = -1;//鼠标悬浮上去的图表的INDEX
// 图表当前的设计器
private ChartDesigner designer;
public ChartDesignerUI() {
}
/**
* 加载界面
*
* @param c 组件
*/
public void installUI(JComponent c) {
designer = (ChartDesigner) c;
}
/**
* 渲染当前的设计界面以及设计辅助状态
*
* @param g 画图类
* @param c 组件
*/
@Override
public void paint(Graphics g, JComponent c) {
ChartCollection chartCollection = (ChartCollection) designer.getTarget().getChartCollection();
Chart editingChart = chartCollection.getSelectedChart();
BaseChartGlyph chartGlyph = null;
if (editingChart != null && editingChart.getPlot() != null) {
chartGlyph = editingChart.createGlyph(editingChart.defaultChartData());
}
int parentWidth = designer.getSize().width;
int parentHeight = designer.getSize().height;
int chartWidth = designer.getArea().getCustomWidth();
int chartHeight = designer.getArea().getCustomHeight();
Graphics clipg;
clipg = g.create(-designer.getArea().getHorizontalValue(), -designer.getArea().getVerticalValue(), parentWidth + designer.getArea().getHorizontalValue(), parentHeight + designer.getArea().getVerticalValue());
clipg = clipg.create(1, 1, designer.getArea().getCustomWidth(), designer.getArea().getCustomHeight());
g.setColor(Color.white);
g.fillRect(0, 0, chartWidth, chartHeight);
chartGlyph.setUseChangeChart(true);
Image chartImage = chartGlyph.toImage(chartWidth, chartHeight, ScreenResolution.getScreenResolution());
clipg.drawImage(chartImage, 0, 0, chartWidth, chartHeight, null);
paintChange(clipg, c);
}
//绘制切换的东西
private void paintChange(Graphics g, JComponent c) {
int chartWidth = designer.getArea().getCustomWidth();
ChartCollection collection = (ChartCollection) designer.getTarget().getChartCollection();
int chartCount = collection.getChartCount();
iconLocations = new Rectangle[chartCount];
int startX = chartWidth - V_GAP - ICON_SIZE;
if (chartCount == 1) {
//只有一个时,只绘制新增按钮,不绘制删除按钮
ADD.paintIcon(c, g, startX, H_GAP);
add = new Rectangle(startX, H_GAP, ICON_SIZE, ICON_SIZE);
del = null;
} else {
DEL.paintIcon(c, g, startX, H_GAP);
del = new Rectangle(startX, H_GAP, ICON_SIZE, ICON_SIZE);
startX -= (V_GAP + ICON_SIZE);
ADD.paintIcon(c, g, startX, H_GAP);
add = new Rectangle(startX, H_GAP, ICON_SIZE, ICON_SIZE);
}
for (int i = chartCount - 1; i >= 0; i--) {
Plot plot = collection.getChart(i).getPlot();
if (plot == null) {
continue;
}
if (collection.getSelectedIndex() == i) {
Icon ploticon = BaseUtils.readIcon(plot.getPlotSmallIconPath() + "_normal.png");
if (ploticon != null) {
startX -= (V_GAP + ICON_SIZE);
ploticon.paintIcon(c, g, startX, H_GAP);
}
}else if(overIndex == i){
Icon ploticon = BaseUtils.readIcon(plot.getPlotSmallIconPath() + "_over.png");
if (ploticon != null) {
startX -= (V_GAP + ICON_SIZE);
ploticon.paintIcon(c, g, startX, H_GAP);
}
} else {
Icon ploticon = BaseUtils.readIcon(plot.getPlotSmallIconPath() + "_gray.png");
if (ploticon != null) {
startX -= (V_GAP + ICON_SIZE);
ploticon.paintIcon(c, g, startX, H_GAP);
}
}
iconLocations[i] = new Rectangle(startX, H_GAP, ICON_SIZE, ICON_SIZE);
}
}
/**
* 鼠标点击
*
* @param e 事件
*/
public void mouseClicked(MouseEvent e) {
Point clikPoint = new Point(e.getPoint().x + designer.getArea().getHorizontalValue(), e.getPoint().y + designer.getArea().getVerticalValue());
ChartCollection collection = (ChartCollection) designer.getTarget().getChartCollection();
for (int i = 0; i < iconLocations.length; i++) {
if (iconLocations[i].contains(clikPoint)) {
if (i == collection.getSelectedIndex()) {
return;
}
collection.setSelectedIndex(i);
designer.repaint();
ChartDesignEditPane.getInstance().populateSelectedTabPane();
return;
}
}
if (add.contains(clikPoint)) {
Chart[] barChart = ColumnIndependentChart.columnChartTypes;
try {
Chart newChart = (Chart) barChart[0].clone();
int select = collection.getSelectedIndex();
collection.addNamedChartAtIndex(newChart.getTitle().getTextObject().toString(), newChart,select+1);
collection.setSelectedIndex(select+1);
ChartDesignEditPane.getInstance().populateSelectedTabPane();
} catch (CloneNotSupportedException e1) {
FRLogger.getLogger().error("Error in Clone");
}
designer.fireTargetModified();
ChartDesignEditPane.getInstance().populateSelectedTabPane();
return;
}
if (del != null && del.contains(clikPoint)) {
int selectedIndex = collection.getSelectedIndex();
collection.removeNameObject(selectedIndex);
if (selectedIndex > 0) {
collection.setSelectedIndex(selectedIndex - 1);
} else {
collection.setSelectedIndex(0);
}
designer.fireTargetModified();
ChartDesignEditPane.getInstance().populateSelectedTabPane();
}
}
/**
* 鼠标悬浮上时的数据点提示
*
* @param e 事件
*/
public void mouseMoved(MouseEvent e) {
Point clikPoint = new Point(e.getPoint().x + designer.getArea().getHorizontalValue(), e.getPoint().y + designer.getArea().getVerticalValue());
if (clikPoint.getY() < H_GAP || clikPoint.getY() > H_GAP + ICON_SIZE) {
ToolTip4Chart.getInstance().hideToolTip();
overIndex = -1;
return;
}
ChartCollection collection = (ChartCollection) designer.getTarget().getChartCollection();
for (int i = 0; i < iconLocations.length; i++) {
if (iconLocations[i].contains(clikPoint)) {
overIndex = i;
String chartName = collection.getChartName(i);
ToolTip4Chart.getInstance().showToolTip(chartName,e.getXOnScreen(),e.getYOnScreen());
return;
}
}
ToolTip4Chart.getInstance().hideToolTip();
overIndex = -1;
}
}

558
designer_chart/src/com/fr/design/mainframe/ChartToolBarPane.java

@ -1,558 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe;
import com.fr.base.ChartPreStyleManagerProvider;
import com.fr.base.ChartPreStyleServerManager;
import com.fr.base.background.ColorBackground;
import com.fr.chart.base.*;
import com.fr.chart.chartattr.*;
import com.fr.chart.chartglyph.ConditionAttr;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.mainframe.chart.ChartDesignEditPane;
import com.fr.design.mainframe.chart.ChartEditPane;
import com.fr.design.mainframe.chart.gui.type.ColumnPlotPane4ToolBar;
import com.fr.design.mainframe.chart.gui.type.PlotPane4ToolBar;
import com.fr.general.FRFont;
import com.fr.general.Inter;
import com.fr.stable.Constants;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-13
* Time: 下午8:32
*/
public class ChartToolBarPane extends JPanel {
public static final int TOTAL_HEIGHT = 42;
private static final int COM_HEIGHT = 22;
private static final int GAP = 7;
private static final int COM_GAP = 14;
private static final int COMBOX_WIDTH = 230;
private static final String[] CHOOSEITEM = new String[]{
Inter.getLocText("FR-Chart-Type_Column"),
Inter.getLocText("FR-Chart-Type_Line"),
Inter.getLocText("FR-Chart-Type_Bar"),
Inter.getLocText("FR-Chart-Type_Pie"),
Inter.getLocText("FR-Chart-Type_Area"),
Inter.getLocText("FR-Chart-Type_XYScatter"),
Inter.getLocText("FR-Chart-Chart_BubbleChart"),
Inter.getLocText("FR-Chart-Type_Radar"),
Inter.getLocText("FR-Chart-Type_Stock"),
Inter.getLocText("FR-Chart-Type_Meter"),
Inter.getLocText("FR-Chart-Type_Range"),
Inter.getLocText("FR-Chart-Type_Comb"),
Inter.getLocText("FR-Chart-Type_Gantt"),
Inter.getLocText("FR-Chart-Type_Donut"),
Inter.getLocText("FR-Chart-Map_Map"),
"gis"+Inter.getLocText("FR-Chart-Map_Map")
};
private UIComboBox chooseComboBox = new UIComboBox(CHOOSEITEM) {
public Dimension getPreferredSize() {
return new Dimension(COMBOX_WIDTH, COM_HEIGHT);
}
};
private JPanel stylePane;
private JPanel plotTypeComboBoxPane;
private UIButton topDownShade = new UIButton(Inter.getLocText("FR-Chart-Style_TopDownShade"));
private UIButton transparent = new UIButton(Inter.getLocText("FR-Chart-Style_Transparent"));
private UIButton plane3D = new UIButton(Inter.getLocText("FR-Chart-Style_Plane3D"));
private UIButton gradient = new UIButton(Inter.getLocText("FR-Chart-Style_GradientHighlight"));
private ItemListener itemListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.DESELECTED) {
ChartToolBarPane.this.remove(centerPane);
ChartToolBarPane.this.remove(stylePane);
if(chooseComboBox.getSelectedIndex() < ChartTypeValueCollection.MAP.toInt()){
calSubChartTypesPane(chooseComboBox.getSelectedIndex());
ChartToolBarPane.this.add(subChartTypesPane,BorderLayout.CENTER);
centerPane = subChartTypesPane;
ChartToolBarPane.this.add(stylePane, BorderLayout.EAST);
} else{
calMapSubChartTypesPane(chooseComboBox.getSelectedIndex());
ChartToolBarPane.this.add(mapTypePane, BorderLayout.CENTER);
centerPane = mapTypePane;
}
ChartCollection chartCollection = (ChartCollection) chartDesigner.getTarget().getChartCollection();
Chart chart = chartCollection.getSelectedChart();
ChartToolBarPane.this.validate();
fireTypeChange();
if(chooseComboBox.getSelectedIndex() == ChartTypeValueCollection.MAP.toInt()){
mapTypePane.populateMapPane(((MapPlot) chart.getPlot()).getMapName());
}else if(chooseComboBox.getSelectedIndex() == ChartTypeValueCollection.GIS.toInt()){
mapTypePane.populateMapPane(chart.getChartName());
}
}
}
};
private PlotPane4ToolBar subChartTypesPane;//默认柱形图
private AbstractMapPlotPane4ToolBar mapTypePane;//地图类型选择的面板
private JPanel centerPane;
private ChartDesigner chartDesigner;
private int lastStyleIndex = -1;
private MouseAdapter styleListener = new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
ChartCollection chartCollection = (ChartCollection) chartDesigner.getTarget().getChartCollection();
Chart chart = chartCollection.getSelectedChart();
Plot newPlot;
int chartType =chart.getPlot().getPlotType().toInt();
if(chartType >= ChartTypeValueCollection.MAP.toInt()){
return;
}
newPlot = subChartTypesPane.setSelectedClonedPlotWithCondition(chart.getPlot());
chartDesigner.fireTargetModified();
UIButton button = (UIButton)e.getSource();
//如果是第二次选中,就是消除
if(button.isSelected()){
button.setSelected(false);
chart.setPlot(newPlot);
resetChart(chart);
lastStyleIndex = -1;
ChartDesignEditPane.getInstance().populateSelectedTabPane();
return;
}
clearStyleChoose();
setStyle(chart,e,newPlot);
lastStyleIndex = chart.getPlot().getPlotStyle();
}
};
private void setStyle( Chart chart,MouseEvent e,Plot newPlot){
if (e.getSource() == topDownShade) {
topDownShade.setSelected(true);
chart.setPlot(newPlot);
chart.getPlot().setPlotStyle(ChartConstants.STYLE_SHADE);
resetChart(chart);
createCondition4Shade(chart);
setPlotFillStyle(chart);
} else if (e.getSource() == transparent) {
transparent.setSelected(true);
chart.setPlot(newPlot);
chart.getPlot().setPlotStyle(ChartConstants.STYLE_TRANSPARENT);
resetChart(chart);
createCondition4Transparent(chart);
setPlotFillStyle(chart);
} else if (e.getSource() == plane3D) {
plane3D.setSelected(true);
chart.setPlot(newPlot);
chart.getPlot().setPlotStyle(ChartConstants.STYLE_3D);
resetChart(chart);
createCondition4Plane3D(chart);
setPlotFillStyle(chart);
} else if (e.getSource() == gradient) {
gradient.setSelected(true);
chart.setPlot(newPlot);
chart.getPlot().setPlotStyle(ChartConstants.STYLE_OUTER);
resetChart(chart);
createCondition4HighLight(chart);
setPlotFillStyle(chart);
}
chart.setStyleGlobal(true);
ChartEditPane pane = ChartDesignEditPane.getInstance();
pane.styleChange(true);
ChartDesignEditPane.getInstance().populate((ChartCollection)chartDesigner.getTarget().getChartCollection());
pane.styleChange(false);
}
public ChartToolBarPane(ChartDesigner designer) {
chartDesigner = designer;
subChartTypesPane = new ColumnPlotPane4ToolBar(designer);//默认柱形图
this.setLayout(new BorderLayout());
this.setBorder(new EmptyBorder(GAP, COM_GAP, GAP, 0));
plotTypeComboBoxPane = new JPanel();
plotTypeComboBoxPane.setBorder(new EmptyBorder(2, 0, 2, 0));
plotTypeComboBoxPane.setLayout(new BorderLayout());
plotTypeComboBoxPane.add(chooseComboBox, BorderLayout.CENTER);
chooseComboBox.addItemListener(itemListener);
//默认选择第一个
chooseComboBox.setSelectedIndex(0);
this.add(plotTypeComboBoxPane, BorderLayout.WEST);
initStylePane();
this.add(stylePane, BorderLayout.EAST);
this.add(subChartTypesPane, BorderLayout.CENTER);
this.centerPane = subChartTypesPane;
topDownShade.addMouseListener(styleListener);
transparent.addMouseListener(styleListener);
plane3D.addMouseListener(styleListener);
gradient.addMouseListener(styleListener);
}
private void initStylePane(){
stylePane = new JPanel() {
public Dimension getPreferredSize() {
Dimension size = super.getPreferredSize();
return new Dimension(size.width, COM_HEIGHT);
}
};
stylePane.setLayout(new FlowLayout(FlowLayout.LEFT, COM_GAP, 0));
stylePane.setBorder(new EmptyBorder(3, 0, 3, 0));
stylePane.add(topDownShade);
stylePane.add(transparent);
stylePane.add(plane3D);
stylePane.add(gradient);
}
/**
* 清除工具栏上面全局风格按钮的选中
*/
public void clearStyleChoose() {
topDownShade.setSelected(false);
transparent.setSelected(false);
plane3D.setSelected(false);
gradient.setSelected(false);
}
private void calMapSubChartTypesPane(int index){
ChartTypeValueCollection type = ChartTypeValueCollection.parse(index);
mapTypePane = PlotToolBarFactory.createToolBar4MapPlot(type,chartDesigner);
}
private void calSubChartTypesPane(int index) {
ChartTypeValueCollection type = ChartTypeValueCollection.parse(index);
subChartTypesPane = PlotToolBarFactory.createToolBar4NormalPlot(type,chartDesigner);
}
private void fireTypeChange() {
if(chooseComboBox.getSelectedIndex() < ChartTypeValueCollection.MAP.toInt()){
subChartTypesPane.fireChange();
}else{
mapTypePane.fireChange();
}
}
//图表区属性清空
private void resetChart(Chart chart) {
chart.setTitle(new Title(chart.getTitle().getTextObject()));
chart.setBorderStyle(Constants.LINE_NONE);
chart.setBorderColor(new Color(150, 150, 150));
chart.setBackground(null);
setPlotFillStyle(chart);
}
//高光渐变的默认属性设置
private void createCondition4HighLight(Chart chart) {
if (chart != null) {
//标题
Title title = new Title(chart.getTitle().getTextObject());
chart.setTitle(title);
title.setTitleVisible(true);
TextAttr textAttr = title.getTextAttr();
if (textAttr == null) {
textAttr = new TextAttr();
title.setTextAttr(textAttr);
}
title.setPosition(Constants.LEFT);
textAttr.setFRFont(FRFont.getInstance("Microsoft YaHei", Font.BOLD, 16f, new Color(51, 51, 51)));
//图例
Legend legend = new Legend();
legend.setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 9f, new Color(138, 140, 139)));
legend.setPosition(Constants.RIGHT_TOP);
chart.getPlot().setLegend(legend);
//分类轴,现在只有柱形图,条形图,面积图
if (chart.getPlot() instanceof CategoryPlot) {
CategoryPlot plot = (CategoryPlot) chart.getPlot();
//分类轴设置
Axis cateAxis = plot.getxAxis();
cateAxis.setAxisStyle(Constants.LINE_THICK);
cateAxis.setAxisColor(new Color(204, 220, 228));
cateAxis.setTickMarkType(Constants.TICK_MARK_INSIDE);
cateAxis.setSecTickMarkType(Constants.TICK_MARK_NONE);
cateAxis.setShowAxisLabel(true);
cateAxis.getTextAttr().setFRFont(FRFont.getInstance("Microsoft YaHei", Font.PLAIN, 10f, new Color(138, 140, 139)));
//值轴
Axis valueAxis = plot.getyAxis();
valueAxis.setAxisStyle(Constants.NONE);
valueAxis.setAxisColor(null);
valueAxis.setTickMarkType(Constants.TICK_MARK_INSIDE);
valueAxis.setSecTickMarkType(Constants.TICK_MARK_NONE);
valueAxis.setShowAxisLabel(true);
valueAxis.getTextAttr().setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 10f, new Color(138, 140, 139)));
//绘图区
plot.setBorderStyle(Constants.LINE_THIN);
plot.setBorderColor(new Color(204, 220, 228));
plot.setBackground(ColorBackground.getInstance(new Color(248, 247, 245)));
plot.getyAxis().setMainGridStyle(Constants.LINE_THIN);
plot.getyAxis().setMainGridColor(new Color(192, 192, 192));
}
}
}
//平面3D的默认属性设置
private void createCondition4Plane3D(Chart chart) {
if (chart != null) {
//标题
Title title = new Title(chart.getTitle().getTextObject());
chart.setTitle(title);
title.setTitleVisible(true);
TextAttr textAttr = title.getTextAttr();
if (textAttr == null) {
textAttr = new TextAttr();
title.setTextAttr(textAttr);
}
title.setPosition(Constants.CENTER);
textAttr.setFRFont(FRFont.getInstance("Microsoft YaHei", Font.PLAIN, 16f, new Color(51, 51, 51)));
//图例
Legend legend = new Legend();
legend.setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 9f, new Color(128, 128, 128)));
legend.setPosition(Constants.TOP);
chart.getPlot().setLegend(legend);
//分类轴,现在只有柱形图,条形图,面积图
if (chart.getPlot() instanceof CategoryPlot) {
CategoryPlot plot = (CategoryPlot) chart.getPlot();
//分类轴设置
Axis cateAxis = plot.getxAxis();
cateAxis.setAxisStyle(Constants.LINE_THICK);
cateAxis.setAxisColor(new Color(57, 57, 57));
cateAxis.setTickMarkType(Constants.TICK_MARK_NONE);
cateAxis.setSecTickMarkType(Constants.TICK_MARK_NONE);
cateAxis.setShowAxisLabel(true);
cateAxis.getTextAttr().setFRFont(FRFont.getInstance("Microsoft YaHei", Font.PLAIN, 10f, new Color(57, 57, 57)));
//值轴设置
Axis valueAxis = plot.getyAxis();
valueAxis.setAxisStyle(Constants.LINE_NONE);
valueAxis.setTickMarkType(Constants.TICK_MARK_NONE);
valueAxis.setSecTickMarkType(Constants.TICK_MARK_NONE);
valueAxis.setShowAxisLabel(false);
//绘图区
plot.getyAxis().setMainGridStyle(Constants.LINE_THIN);
plot.getyAxis().setMainGridColor(new Color(192, 192, 192));
chart.setBorderStyle(Constants.LINE_NONE);
//数据标签
ConditionAttr attrList = plot.getConditionCollection().getDefaultAttr();
DataSeriesCondition attr = attrList.getExisted(AttrContents.class);
if (attr != null) {
attrList.remove(attr);
}
AttrContents attrContents = new AttrContents();
attrContents.setPosition(Constants.OUTSIDE);
attrContents.setSeriesLabel(ChartConstants.VALUE_PARA);
attrContents.setTextAttr(new TextAttr(FRFont.getInstance("SimSun", Font.PLAIN, 9f, new Color(51, 51, 51))));
attrList.addDataSeriesCondition(attrContents);
}
}
}
//透明风格的默认属性设置
private void createCondition4Transparent(Chart chart) {
if (chart != null) {
//标题
Title title = new Title(chart.getTitle().getTextObject());
chart.setTitle(title);
title.setTitleVisible(true);
TextAttr textAttr = title.getTextAttr();
if (textAttr == null) {
textAttr = new TextAttr();
title.setTextAttr(textAttr);
}
title.setPosition(Constants.LEFT);
textAttr.setFRFont(FRFont.getInstance("Microsoft YaHei", Font.BOLD, 16f, new Color(192, 192, 192)));
//图例
Legend legend = new Legend();
legend.setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 9f, new Color(138, 140, 139)));
legend.setPosition(Constants.RIGHT_TOP);
chart.getPlot().setLegend(legend);
Plot plot = chart.getPlot();
//绘图区
chart.setBackground(ColorBackground.getInstance(new Color(51, 51, 51)));
//分类轴,现在只有柱形图,条形图,面积图
if (plot instanceof CategoryPlot) {
//边框
plot.setBorderStyle(Constants.LINE_THIN);
plot.setBorderColor(new Color(65, 65, 65));
//分类轴设置
Axis cateAxis = plot.getxAxis();
cateAxis.setAxisStyle(Constants.LINE_THICK);
cateAxis.setAxisColor(new Color(192, 192, 192));
cateAxis.setTickMarkType(Constants.TICK_MARK_NONE);
cateAxis.setSecTickMarkType(Constants.TICK_MARK_NONE);
cateAxis.setShowAxisLabel(true);
cateAxis.getTextAttr().setFRFont(FRFont.getInstance("Microsoft YaHei", Font.PLAIN, 10f, new Color(150, 150, 150)));
//值轴
Axis valueAxis = plot.getyAxis();
valueAxis.setShowAxisLabel(true);
valueAxis.setAxisStyle(Constants.LINE_NONE);
valueAxis.getTextAttr().setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 10f, new Color(150, 150, 150)));
valueAxis.setMainGridStyle(Constants.LINE_THIN);
valueAxis.setMainGridColor(new Color(63, 62, 62));
}
}
}
//渐变的默认属性设置
private void createCondition4Shade(Chart chart) {
if (chart != null) {
//标题
Title title = new Title(chart.getTitle().getTextObject());
chart.setTitle(title);
title.setTitleVisible(true);
TextAttr textAttr = title.getTextAttr();
if (textAttr == null) {
textAttr = new TextAttr();
title.setTextAttr(textAttr);
}
title.setPosition(Constants.CENTER);
textAttr.setFRFont(FRFont.getInstance("Microsoft YaHei", Font.BOLD, 16f, new Color(0, 51, 102)));
//图例
Legend legend = new Legend();
legend.setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 9f, new Color(128, 128, 128)));
legend.setPosition(Constants.BOTTOM);
chart.getPlot().setLegend(legend);
//分类轴,现在只有柱形图,条形图,面积图
if (chart.getPlot() instanceof CategoryPlot) {
CategoryPlot plot = (CategoryPlot) chart.getPlot();
//分类轴设置
Axis cateAxis = plot.getxAxis();
cateAxis.setAxisStyle(Constants.LINE_THICK);
cateAxis.setAxisColor(new Color(73, 100, 117));
cateAxis.setTickMarkType(Constants.TICK_MARK_NONE);
cateAxis.setSecTickMarkType(Constants.TICK_MARK_NONE);
cateAxis.setShowAxisLabel(true);
cateAxis.getTextAttr().setFRFont(FRFont.getInstance("Microsoft YaHei", Font.PLAIN, 10f, new Color(128, 128, 128)));
//值轴
Axis valueAxis = plot.getyAxis();
valueAxis.setShowAxisLabel(true);
valueAxis.getTextAttr().setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 10f, new Color(128, 128, 128)));
valueAxis.setAxisStyle(Constants.LINE_NONE);
//绘图区
plot.getyAxis().setMainGridStyle(Constants.LINE_THIN);
plot.getyAxis().setMainGridColor(new Color(192, 192, 192));
plot.setHorizontalIntervalBackgroundColor(new Color(243, 243, 243));
}
}
}
private void setPlotFillStyle(Chart chart) {
ChartPreStyleManagerProvider manager = ChartPreStyleServerManager.getProviderInstance();
Plot plot = chart.getPlot();
Object preStyle = null;
String name = "";
if (topDownShade.isSelected()) {
name = Inter.getLocText("FR-Chart-Style_Retro");
preStyle = manager.getPreStyle(name);
} else if (transparent.isSelected()) {
name = Inter.getLocText("FR-Chart-Style_Fresh");
preStyle = manager.getPreStyle(name);
} else if (plane3D.isSelected()) {
name = Inter.getLocText("FR-Chart-Style_Bright");
preStyle = manager.getPreStyle(name);
} else if (gradient.isSelected()) {
name = Inter.getLocText("FR-Chart-Style_Bright");
preStyle = manager.getPreStyle(name);
}else{
preStyle = null;
}
if (preStyle == null) {
plot.getPlotFillStyle().setColorStyle(ChartConstants.COLOR_DEFAULT);
} else {
AttrFillStyle fillStyle = ((ChartPreStyle) preStyle).getAttrFillStyle();
fillStyle.setFillStyleName(name);
plot.setPlotFillStyle(fillStyle);
}
}
public void populate(){
ChartCollection chartCollection = (ChartCollection) chartDesigner.getTarget().getChartCollection();
Chart chart = chartCollection.getSelectedChart();
chooseComboBox.removeItemListener(itemListener);
chooseComboBox.setSelectedIndex(chart.getPlot().getPlotType().toInt());
int chartType =chart.getPlot().getPlotType().toInt();
this.removeAll();
populateStyle();
this.add(plotTypeComboBoxPane, BorderLayout.WEST);
initStylePane();
if(chartType < ChartTypeValueCollection.MAP.toInt()){
calSubChartTypesPane(chartType);
subChartTypesPane.setSelectedIndex(chart.getPlot().getDetailType());
ChartToolBarPane.this.add(subChartTypesPane, BorderLayout.CENTER);
this.add(subChartTypesPane, BorderLayout.CENTER);
centerPane = subChartTypesPane;
this.add(stylePane, BorderLayout.EAST);
}else if(chartType == ChartTypeValueCollection.MAP.toInt()){
calMapSubChartTypesPane(chartType);
mapTypePane.populateMapPane(((MapPlot) chart.getPlot()).getMapName());
ChartToolBarPane.this.add(mapTypePane, BorderLayout.CENTER);
centerPane = mapTypePane;
}else{
calMapSubChartTypesPane(chartType);
mapTypePane.populateMapPane((chart.getPlot()).getPlotName());
ChartToolBarPane.this.add(mapTypePane, BorderLayout.CENTER);
centerPane = mapTypePane;
}
ChartToolBarPane.this.validate();
chooseComboBox.addItemListener(itemListener);
}
private void populateStyle() {
clearStyleChoose();
ChartCollection chartCollection = (ChartCollection) chartDesigner.getTarget().getChartCollection();
Chart chart = chartCollection.getSelectedChart();
int plotStyle = chart.getPlot().getPlotStyle();
switch (plotStyle) {
case ChartConstants.STYLE_SHADE:
topDownShade.setSelected(chart.isStyleGlobal() && true);
break;
case ChartConstants.STYLE_TRANSPARENT:
transparent.setSelected(chart.isStyleGlobal() && true);
break;
case ChartConstants.STYLE_3D:
plane3D.setSelected(chart.isStyleGlobal() && true);
break;
case ChartConstants.STYLE_OUTER:
gradient.setSelected(chart.isStyleGlobal() && true);
break;
default:
clearStyleChoose();
break;
}
lastStyleIndex = plotStyle;
}
}

98
designer_chart/src/com/fr/design/mainframe/DesignerFrame4Chart.java

@ -1,98 +0,0 @@
package com.fr.design.mainframe;
import com.fr.design.ChartEnvManager;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.mainframe.actions.UpdateVersion;
import com.fr.design.mainframe.chart.UpdateOnLinePane;
import com.fr.design.mainframe.toolbar.ToolBarMenuDock;
import com.fr.general.ComparatorUtils;
import com.fr.general.FRLogger;
import com.fr.json.JSONObject;
import com.fr.stable.ProductConstants;
import com.fr.stable.StableUtils;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.ArrayList;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class DesignerFrame4Chart extends DesignerFrame {
/**
* Constructor.
*
* @param ad
*/
public DesignerFrame4Chart(ToolBarMenuDock ad) {
super(ad);
}
protected ArrayList<WindowListener> getFrameListeners(){
ArrayList<WindowListener> listeners = super.getFrameListeners();
listeners.add(0, new WindowAdapter() {
@Override
public void windowOpened(WindowEvent e) {
super.windowOpened(e);
judgeFirstUseWhenStart();
}
});
return listeners;
}
/**
* 退出
*/
public void exit() {
ChartEnvManager.getEnvManager().saveXMLFile();
super.exit();
}
//不需要西侧的文件树面板
protected void laoyoutWestPane(){
}
protected void judgeFirstUseWhenStart(){
boolean isNeed2Check =ChartEnvManager.getEnvManager().isPushUpdateAuto() || ChartEnvManager.getEnvManager().isOverOneMonth();
if(!StableUtils.checkDesignerActive(ChartEnvManager.getEnvManager().getActivationKey())
|| isNeed2Check){
ChartEnvManager.getEnvManager().setActivationKey(ChartEnvManager.ACTIVE_KEY);
checkVersion();
if(ChartEnvManager.getEnvManager().isOverOneMonth()){
ChartEnvManager.getEnvManager().resetCheckDate();
}
}
}
private void checkVersion(){
new UpdateVersion(){
protected void done() {
try {
JSONObject serverVersion = get();
String version = serverVersion.getString(UpdateVersion.VERSION);
if(!ComparatorUtils.equals(ProductConstants.RELEASE_VERSION, version)){
UpdateOnLinePane updateOnLinePane = new UpdateOnLinePane(version);
BasicDialog dg = updateOnLinePane.showWindow4UpdateOnline(DesignerContext.getDesignerFrame());
updateOnLinePane.setParentDialog(dg);
dg.setVisible(true);
}
}catch (Exception e){
FRLogger.getLogger().error(e.getMessage());
}
}
}.execute();
}
}

203
designer_chart/src/com/fr/design/mainframe/GisMapPlotPane4ToolBar.java

@ -1,203 +0,0 @@
package com.fr.design.mainframe;
import com.fr.chart.base.ChartConstants;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.GisMapIndependentChart;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import java.awt.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* Date: 14/12/1
* Time: 下午3:11
*/
public class GisMapPlotPane4ToolBar extends AbstractMapPlotPane4ToolBar {
private static final int BAIDU = 0;
private static final int GOOGLE= 1;
private static final String[] TYPE_NAMES = new String[]{
Inter.getLocText("FR-Chart-Map_Baidu"),
Inter.getLocText("FR-Chart-Map_Google")};
private UITextField keyField = new UITextField(){
public Dimension getPreferredSize() {
return new Dimension(COMBOX_WIDTH, COM_HEIGHT);
}
};
private DocumentListener keyListener = new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
fireKeyChange();
}
@Override
public void removeUpdate(DocumentEvent e) {
fireKeyChange();
}
@Override
public void changedUpdate(DocumentEvent e) {
fireKeyChange();
}
} ;
private void fireKeyChange(){
ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection();
Chart chart =chartCollection.getSelectedChart();
GisMapPlot plot =(GisMapPlot) chart.getPlot();
String key = this.keyField.getText().trim();
if(plot.isGisType() && key != plot.getBaiduKey()){
plot.setBaiduKey(key);
}else if(!plot.isGisType() && key != plot.getGoogleKey()){
plot.setGoogleKey(key);
}
chartDesigner.fireTargetModified();
}
public GisMapPlotPane4ToolBar(final ChartDesigner chartDesigner){
super(chartDesigner);
this.add(getKeyPane());
keyField.getDocument().addDocumentListener(keyListener);
}
private JPanel getKeyPane(){
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {p,f};
double[] rowSize = {p};
Component[][] components = new Component[][]{
new Component[]{new UILabel("key"),keyField},
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
protected void calculateDetailMaps(int mapType){
switch (mapType) {
case BAIDU:
populateDetilMaps(Inter.getLocText("FR-Chart-Map_Baidu"));
break;
case GOOGLE:
populateDetilMaps(Inter.getLocText("FR-Chart-Map_Google"));
break;
default:
populateDetilMaps(Inter.getLocText("FR-Chart-Map_Baidu"));
}
fireMapChange();
}
/**
* 更新地图面板
* @param mapType 地图名字
*/
public void populateMapPane(String mapType){
super.populateMapPane(mapType);
populateDetilMaps(mapTypeComboBox.getSelectedItem().toString());
}
protected void populateDetilMaps(String mapType){
mapTypeComboBox.removeItemListener(mapTypeListener);
ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection();
Chart chart =chartCollection.getSelectedChart();
GisMapPlot plot = (GisMapPlot) chart.getPlot();
keyField.getDocument().removeDocumentListener(keyListener);
if(plot.isGisType()){
keyField.setText(plot.getBaiduKey());
mapTypeComboBox.setSelectedIndex(0);
}else{
keyField.setText(plot.getGoogleKey());
mapTypeComboBox.setSelectedIndex(1);
}
keyField.getDocument().addDocumentListener(keyListener);
mapTypeComboBox.addItemListener(mapTypeListener);
}
private void fireMapChange(){
ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection();
Chart chart =chartCollection.getSelectedChart();
if(chart.getPlot().getPlotStyle() != ChartConstants.STYLE_NONE){
resetChart(chart);
}
Chart[] cs = GisMapIndependentChart.gisChartTypes;
GisMapPlot plot;
if (cs.length > 0) {
try {
plot = (GisMapPlot)cs[0].getPlot().clone();
} catch (Exception e) {
plot = new GisMapPlot();
}
} else {
plot = new GisMapPlot();
}
try {
chart.switchPlot((Plot)plot.clone());
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In GisChart");
chart.switchPlot(new GisMapPlot());
}
plot = (GisMapPlot) chart.getPlot();
boolean index = plot.isGisType();
plot.setGisType(mapTypeComboBox.getSelectedIndex() == 1);
if(index != plot.isGisType()){
if(plot.isGisType()){
this.keyField.setText(plot.getBaiduKey());
}else{
this.keyField.setText(plot.getGoogleKey());
}
}else{
String key = this.keyField.getText().trim();
if(plot.isGisType() && key != plot.getBaiduKey()){
plot.setBaiduKey(key);
}else if(!plot.isGisType() && key != plot.getGoogleKey()){
plot.setGoogleKey(key);
}
}
chartDesigner.fireTargetModified();
}
protected Plot getSelectedClonedPlot() {
Chart[] mapChart = GisMapIndependentChart.gisChartTypes;
GisMapPlot newPlot;
if (mapChart.length > 0) {
try {
newPlot = (GisMapPlot)mapChart[0].getPlot().clone();
} catch (Exception e) {
newPlot = new GisMapPlot();
}
} else {
newPlot = new GisMapPlot();
}
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In GisMapChart");
}
return cloned;
}
public String[] getMapTypes(){
return TYPE_NAMES;
}
}

339
designer_chart/src/com/fr/design/mainframe/MapArrayPane.java

@ -1,339 +0,0 @@
package com.fr.design.mainframe;
import com.fr.chart.base.MapSvgAttr;
import com.fr.chart.base.MapSvgXMLHelper;
import com.fr.design.DesignerEnvManager;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.gui.controlpane.*;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilist.JNameEdList;
import com.fr.design.gui.ilist.ListModelElement;
import com.fr.general.ComparatorUtils;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import com.fr.stable.CoreConstants;
import com.fr.stable.Nameable;
import com.fr.stable.StringUtils;
import com.fr.stable.core.PropertyChangeAdapter;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* Date: 14/12/3
* Time: 上午10:00
*/
public class MapArrayPane extends JListControlPane {
private static final int LEFT_WIDTH = 180;
private static final Color LINE_COLOR = new Color(176, 176, 176);
private static final int TOP_GAP = 5;
private static final String[] TYPE_NAMES = new String[]{
Inter.getLocText("FR-Chart-World_Map"),
Inter.getLocText("FR-Chart-State_Map"),
Inter.getLocText("FR-Chart-Province_Map"),
Inter.getLocText("FR-Chart-Custom_Map")};
private String mapType;
private String mapDetailName;
MapPlotPane4ToolBar toolBar;
UIComboBox mapTypeBox;
private ArrayList<String> editedNames = new ArrayList<String>();
private ItemListener typeListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
MapArrayPane.this.updateBeans();
mapType = mapTypeBox.getSelectedItem().toString();
MapArrayPane.this.populate(MapSvgXMLHelper.getInstance().getAllMapObjects4Cate(mapType));
}
};
private ArrayList<String> removeNames = new ArrayList<String>();
private MapEditPane mapEditPane;
private ChartDesigner chartDesigner;
public MapArrayPane(String mapType, String mapDetailName,ChartDesigner chartDesigner) {
this.mapDetailName = mapDetailName;
this.mapType = mapType;
if (mapTypeBox != null) {
mapTypeBox.setSelectedItem(mapType);
}
this.chartDesigner = chartDesigner;
mapTypeBox.addItemListener(typeListener);
this.setBorder(new EmptyBorder(TOP_GAP, 0, 0, 0));
this.addEditingListner(new PropertyChangeAdapter() {
public void propertyChange() {
dealPropertyChange();
}
});
}
public void setToolBarPane(MapPlotPane4ToolBar pane) {
this.toolBar = pane;
}
protected void doWhenPopulate(BasicBeanPane beanPane) {
mapEditPane = (MapEditPane)beanPane;
mapEditPane.dealWidthMap(mapType);
String editingName = ((MapEditPane)beanPane).getCurrentMapName();
if(!editedNames.contains(editingName)){
editedNames.add(editingName);
}
}
protected JPanel getLeftPane() {
JPanel centerPane = super.getLeftPane();
mapTypeBox = new UIComboBox(TYPE_NAMES);
JPanel leftPane = new JPanel();
leftPane.setLayout(new BorderLayout());
leftPane.setBorder(new EmptyBorder(3, 0, 0, 0));
leftPane.add(mapTypeBox, BorderLayout.NORTH);
leftPane.add(centerPane, BorderLayout.CENTER);
return leftPane;
}
private void dealPropertyChange() {
MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance();
java.util.List nameList =helper.getNamesListWithCateName(mapType);
String[] allListNames = nameableList.getAllNames();
allListNames[nameableList.getSelectedIndex()] = StringUtils.EMPTY;
String tempName = getEditingName();
if (StringUtils.isEmpty(tempName)) {
String[] warning = new String[]{"NOT_NULL_Des", "Please_Rename"};
String[] sign = new String[]{",", "!"};
nameableList.stopEditing();
JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(MapArrayPane.this), Inter.getLocText(warning, sign));
setWarnigText(editingIndex);
return;
}
if (!ComparatorUtils.equals(tempName, selectedName)
&& isNameRepeted(new List[]{nameList, Arrays.asList(allListNames)}, tempName)) {
nameableList.stopEditing();
JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(MapArrayPane.this),
Inter.getLocText(new String[]{"FR-Chart-Map_NameAlreadyExist", "Please_Rename"}, new String[]{",", "!"}));
setWarnigText(editingIndex);
return;
}
String oldname = mapEditPane.getCurrentMapName();
mapEditPane.setCurrentMapName(tempName);
mapEditPane.dealWidthMap(mapType);
if(editedNames.contains(oldname)){
editedNames.remove(oldname);
editedNames.add(tempName);
}
if(helper.getNewMapAttr(oldname) != null){
MapSvgAttr attr = helper.getNewMapAttr(oldname);
attr.renameMap(tempName);
helper.removeNewMapAttr(oldname);
helper.addNewSvgMaps(tempName,attr);
}
this.toolBar.fireTargetModified();
this.saveMapInfo(tempName);
}
protected void doAfterRemove(){
for(String map2Remove : removeNames){
MapSvgXMLHelper.getInstance().removeMapAttr(map2Remove);
MapSvgXMLHelper.getInstance().removeNewMapAttr(map2Remove);
}
update4AllType();
}
protected void doBeforeRemove(){
removeNames.clear();
for(int index : nameableList.getSelectedIndices()){
removeNames.add(nameableList.getNameAt(index));
}
}
//保存修改过的地图信息
private void saveMapInfo(final String mapName) {
SwingWorker worker = new SwingWorker<Integer, Void>() {
@Override
protected Integer doInBackground() throws Exception {
MapSvgAttr attr = MapSvgXMLHelper.getInstance().getMapAttr(mapName);// 只有在编辑地图时才需要储存相关数据 @kuns
if (attr != null) {
attr.writeBack(mapName);
}
return 0;
}
@Override
protected void done() {
FRLogger.getLogger().info(Inter.getLocText("FR-Chart-Map_Saved")); // 地图已经保存.
}
};
worker.execute();
DesignerEnvManager.addWorkers(worker);
}
private void update4AllType() {
MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance();
helper.clearNames4Cate(mapType);
for(String name : nameableList.getAllNames()){
MapSvgAttr attr = helper.getMapAttr(name);
if(attr == null){
continue;
}
helper.addCateNames(attr.getMapType(),attr.getName());
}
}
/**
* 创建菜单
*
* @return 菜单
*/
public NameableCreator[] createNameableCreators() {
return new NameableCreator[]{
new NameableSelfCreator(Inter.getLocText("FR-Chart-Custom_Map"), MapSvgAttr.class, MapEditPane.class) {
public MapSvgAttr createNameable(UnrepeatedNameHelper helper) {
MapSvgAttr attr = new MapSvgAttr();
attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + helper.createUnrepeatedName(Inter.getLocText("FR-Chart-Custom_Map")) + ".svg");
MapSvgXMLHelper.getInstance().addNewSvgMaps(attr.getName(), attr);
update4Edited(attr.getName());
// 返回参数设置面板.
return attr;
}
@Override
public String createTooltip() {
return null;
}
public void saveUpdatedBean(ListModelElement wrapper, Object bean) {
wrapper.wrapper = (Nameable)bean;
}
}
};
}
protected boolean isCreatorNeedIocn() {
return false;
}
protected ShortCut4JControlPane[] createShortcuts() {
return new ShortCut4JControlPane[]{
addItemShortCut(),
removeItemShortCut(),
};
}
protected int getLeftPreferredSize() {
return LEFT_WIDTH;
}
@Override
protected String title4PopupWindow() {
return Inter.getLocText(new String[]{"FR-Chart-Map_Map", "FR-Chart-Data_Edit"});
}
/**
* 更新
*/
public void updateBeans() {
super.update();
this.update4AllType();
this.updateAllEditedAttrMaps();
MapSvgXMLHelper.getInstance().clearTempAttrMaps();
//versionID递增
this.toolBar.fireTargetModified();
this.saveMapInfo(selectedName);
}
/**
* 创建list
* @return 返回list
*/
public JNameEdList createJNameList() {
JNameEdList nameEdList = new JNameEdList(new DefaultListModel()) {
public Rectangle createRect(Rectangle rect, int iconWidth) {
return rect;
}
protected void doAfterLostFocus() {
MapArrayPane.this.updateControlUpdatePane();
}
public void setNameAt(String name, int index) {
super.setNameAt(name,index);
update4Edited(name);
}
};
nameEdList.setCellRenderer(new NameableListCellRenderer());
return nameEdList;
}
protected void update4Edited(String editingName){
}
private void updateAllEditedAttrMaps(){
MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance();
for(String editedName : editedNames){
if(helper.getMapAttr(editedName)!=null){
helper.getMapAttr(editedName).writeBack(editedName);
}else if(helper.getNewMapAttr(editedName)!=null){
helper.getNewMapAttr(editedName).writeBack(editedName);
}
}
}
//根据地图的名字返回地图的图片
private Image getMapImage(String mapName) {
if (MapSvgXMLHelper.getInstance().containsMapName(mapName)) {
MapSvgAttr mapAttr = MapSvgXMLHelper.getInstance().getMapAttr(mapName);
if (mapAttr == null) {
return null;
}
return mapAttr.getMapImage();
}
return null;
}
/*
* Nameable的ListCellRenerer
*/
private class NameableListCellRenderer extends
DefaultListCellRenderer {
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected,
cellHasFocus);
if (value instanceof ListModelElement) {
Nameable wrappee = ((ListModelElement) value).wrapper;
this.setText(((ListModelElement) value).wrapper.getName());
for (NameableCreator creator : MapArrayPane.this.creators()) {
if (creator.menuIcon() != null && creator.acceptObject2Populate(wrappee) != null) {
this.setIcon(creator.menuIcon());
this.setToolTipText(creator.createTooltip());
break;
}
}
}
return this;
}
}
}

210
designer_chart/src/com/fr/design/mainframe/MapPlotPane4ToolBar.java

@ -1,210 +0,0 @@
package com.fr.design.mainframe;
import com.fr.chart.base.MapSvgXMLHelper;
import com.fr.chart.chartattr.*;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.mainframe.chart.ChartDesignEditPane;
import com.fr.general.ComparatorUtils;
import com.fr.general.Inter;
import com.fr.stable.StringUtils;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* Date: 14/12/1
* Time: 上午11:57
*/
public class MapPlotPane4ToolBar extends AbstractMapPlotPane4ToolBar{
private static final int WORLD_MAP = 0;
private static final int STATE_MAP = 1;
private static final int PROVINCE_MAP = 2;
private static final int CUSTOM_MAP = 3;
private static final int BUTTON_WIDTH = 44;
private static final String[] TYPE_NAMES = new String[]{
Inter.getLocText("FR-Chart-World_Map"),
Inter.getLocText("FR-Chart-State_Map"),
Inter.getLocText("FR-Chart-Province_Map"),
Inter.getLocText("FR-Chart-Custom_Map")};
private String lastEditingName =StringUtils.EMPTY;
private UIButton mapEditButton = new UIButton(Inter.getLocText("FR-Chart-Data_Edit")){
public Dimension getPreferredSize() {
return new Dimension(BUTTON_WIDTH, COM_HEIGHT);
}
};
protected UIComboBox detailMaps = new UIComboBox(){
public Dimension getPreferredSize() {
return new Dimension(COMBOX_WIDTH, COM_HEIGHT);
}
};
private ItemListener detailListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
fireMapChange();
}
};
private ActionListener mapEditListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String selectedName =StringUtils.EMPTY;
if(detailMaps.getSelectedItem() != null){
selectedName = detailMaps.getSelectedItem().toString();
}
final MapArrayPane mapArrayPane = new MapArrayPane(mapTypeComboBox.getSelectedItem().toString(),selectedName,chartDesigner){
public void updateBeans() {
super.updateBeans();
if(reCalculateDetailsMaps(mapTypeComboBox.getSelectedItem().toString(),lastEditingName) ||
ComparatorUtils.equals(StringUtils.EMPTY,lastEditingName)){
detailMaps.setSelectedItem(lastEditingName);
ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection();
com.fr.chart.chartattr.Chart chart =chartCollection.getSelectedChart();
if(chart.getPlot().isMapPlot()){
MapPlot mapPlot = (MapPlot) chart.getPlot();
mapPlot.setMapName(lastEditingName);
}
}
}
protected void update4Edited(String editingName){
lastEditingName = editingName;
}
};
BasicDialog mapArrayDialog = mapArrayPane.showWindow4ChartMapArray(DesignerContext.getDesignerFrame(),
new DialogActionAdapter() {
@Override
public void doOk() {
mapArrayPane.updateBeans();
}
});
mapArrayDialog.setModal(true);
mapArrayPane.setToolBarPane(MapPlotPane4ToolBar.this);
mapArrayPane.populate(MapSvgXMLHelper.getInstance().getAllMapObjects4Cate(mapTypeComboBox.getSelectedItem().toString()));
if(detailMaps.getSelectedItem() != null){
mapArrayPane.setSelectedName(detailMaps.getSelectedItem().toString());
}
mapArrayDialog.setVisible(true);
}
};
public MapPlotPane4ToolBar(ChartDesigner chartDesigner){
super(chartDesigner);
this.add(detailMaps);
detailMaps.addItemListener(detailListener);
mapEditButton.addActionListener(mapEditListener);
this.add(mapEditButton);
}
/**
* 更新地图面板
* @param mapType 地图名字
*/
public void populateMapPane(String mapType){
super.populateMapPane(mapType);
populateDetilMaps(mapTypeComboBox.getSelectedItem().toString());
detailMaps.removeItemListener(detailListener);
detailMaps.setSelectedItem(mapType);
detailMaps.addItemListener(detailListener);
}
/**
* 触发地图改变
*/
public void fireMapChange(){
MapPlot plot = new MapPlot();
String selectedName = StringUtils.EMPTY;
if(detailMaps.getSelectedItem() !=null ){
selectedName = detailMaps.getSelectedItem().toString();
}
plot.setMapName(selectedName);// 名字问题
ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection();
Chart chart =chartCollection.getSelectedChart();
chart.setPlot(plot);
ChartDesignEditPane.getInstance().populate(chartCollection);
chartDesigner.fireTargetModified();
}
//默认选中国家地图
protected void calculateDetailMaps(int mapType){
switch (mapType) {
case WORLD_MAP:
populateDetilMaps(Inter.getLocText("FR-Chart-World_Map"));
break;
case STATE_MAP:
populateDetilMaps(Inter.getLocText("FR-Chart-State_Map"));
break;
case PROVINCE_MAP:
populateDetilMaps(Inter.getLocText("FR-Chart-Province_Map"));
break;
case CUSTOM_MAP:
populateDetilMaps(Inter.getLocText("FR-Chart-Custom_Map"));
break;
default:
populateDetilMaps(Inter.getLocText("FR-Chart-State_Map"));
}
fireMapChange();
}
private boolean reCalculateDetailsMaps(String mapType ,String detailMap){
detailMaps.removeItemListener(detailListener);
detailMaps.removeAllItems();
java.util.List list = MapSvgXMLHelper.getInstance().getNamesListWithCateName(mapType);
boolean isContains = false;
for (Object name : list) {
detailMaps.addItem(name);
if(ComparatorUtils.equals(detailMap,name)){
isContains = true;
}
}
detailMaps.addItemListener(detailListener);
return isContains;
}
protected void populateDetilMaps(String mapType){
detailMaps.removeItemListener(detailListener);
detailMaps.removeAllItems();
java.util.List list = MapSvgXMLHelper.getInstance().getNamesListWithCateName(mapType);
for (Object name : list) {
detailMaps.addItem(name);
}
detailMaps.addItemListener(detailListener);
if(detailMaps.getSelectedItem() != null){
lastEditingName = detailMaps.getSelectedItem().toString();
}
}
protected Plot getSelectedClonedPlot() {
MapPlot mapPlot = new MapPlot();
populateDetilMaps(Inter.getLocText("FR-Chart-State_Map"));
if(detailMaps.getSelectedItem()!= null && !StringUtils.isEmpty(detailMaps.getSelectedItem().toString())){
mapPlot.setMapName(detailMaps.getSelectedItem().toString());
}
return mapPlot;
}
public String[] getMapTypes(){
return TYPE_NAMES;
}
}

90
designer_chart/src/com/fr/design/mainframe/PlotToolBarFactory.java

@ -1,90 +0,0 @@
package com.fr.design.mainframe;
import com.fr.chart.base.ChartTypeValueCollection;
import com.fr.design.mainframe.chart.gui.type.*;
import com.fr.general.FRLogger;
import java.lang.reflect.Constructor;
import java.util.HashMap;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* 图表设计器工具栏面板的工厂类
*/
public class PlotToolBarFactory {
private static HashMap<ChartTypeValueCollection,Class<? extends PlotPane4ToolBar>> panes4NormalPlot =
new HashMap<ChartTypeValueCollection, Class<? extends PlotPane4ToolBar>>();
private static HashMap<ChartTypeValueCollection,Class<? extends AbstractMapPlotPane4ToolBar>> panes4MapPlot =
new HashMap<ChartTypeValueCollection, Class<? extends AbstractMapPlotPane4ToolBar>>();
static {
panes4NormalPlot.put(ChartTypeValueCollection.COLUMN, ColumnPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.LINE, LinePlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.BAR, BarPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.PIE, PiePlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.AREA,AreaPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.XYSCATTER,XYSCatterPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.BUBBLE,BubblePlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.RADAR,RadarPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.STOCK,StockPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.METER,MeterPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.RANGE,RangePlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.COMB,CustomPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.GANTT,GanttPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.DONUT,DonutPlotPane4ToolBar.class);
panes4MapPlot.put(ChartTypeValueCollection.MAP,MapPlotPane4ToolBar.class);
panes4MapPlot.put(ChartTypeValueCollection.GIS,GisMapPlotPane4ToolBar.class);
}
private PlotToolBarFactory(){
}
/**
* 为了地图和gis以外的图表类型创建工具栏
* @param type 图表类型
* @param chartDesigner 图表设计器
* @return 工具栏
*/
public static PlotPane4ToolBar createToolBar4NormalPlot(ChartTypeValueCollection type,ChartDesigner chartDesigner){
if(!panes4NormalPlot.containsKey(type)){
return new ColumnPlotPane4ToolBar(chartDesigner);
}
try {
Class<? extends PlotPane4ToolBar> cls = panes4NormalPlot.get(type);
Constructor<? extends PlotPane4ToolBar > constructor = cls.getConstructor(ChartDesigner.class);
return constructor.newInstance(chartDesigner);
}catch (Exception e){
FRLogger.getLogger().error(e.getMessage());
return new ColumnPlotPane4ToolBar(chartDesigner);
}
}
/**
*为地图和gis创建工具栏
* @param type 类型
* @param chartDesigner 图表设计器
* @return 工具栏
*/
public static AbstractMapPlotPane4ToolBar createToolBar4MapPlot(ChartTypeValueCollection type,ChartDesigner chartDesigner){
if(!panes4MapPlot.containsKey(type)){
return new MapPlotPane4ToolBar(chartDesigner);
}
try {
Class<? extends AbstractMapPlotPane4ToolBar> cls = panes4MapPlot.get(type);
Constructor<? extends AbstractMapPlotPane4ToolBar > constructor = cls.getConstructor(ChartDesigner.class);
return constructor.newInstance(chartDesigner);
}catch (Exception e){
FRLogger.getLogger().error(e.getMessage());
return new MapPlotPane4ToolBar(chartDesigner);
}
}
}

91
designer_chart/src/com/fr/design/mainframe/ToolTip4Chart.java

@ -1,91 +0,0 @@
package com.fr.design.mainframe;
import com.fr.base.GraphHelper;
import com.fr.base.background.ColorBackground;
import com.fr.stable.CoreConstants;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Dimension2D;
import java.awt.geom.RoundRectangle2D;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-25
* Time: 下午4:11
*/
public class ToolTip4Chart extends JWindow {
private static ToolTip4Chart instance = new ToolTip4Chart();
private static final int HGAP = 5;
private static final int VGAP = 3;
private static final int FONT_SIZE = 12;
private ToolTipStringPane stringPane;
private Font font = new Font("Dialog", Font.PLAIN, FONT_SIZE);
public ToolTip4Chart() {
stringPane = new ToolTipStringPane();
this.getContentPane().add(stringPane);
}
public static ToolTip4Chart getInstance() {
if (instance == null) {
instance = new ToolTip4Chart();
}
return instance;
}
/**
* 现实提示信息
*
* @param toolTip 提示信息
* @param xAbs 绝对位置x
* @param yAbs 绝对位置Y
*/
public void showToolTip(String toolTip, int xAbs, int yAbs) {
stringPane.text = toolTip.trim();
Dimension2D dim = GraphHelper.stringDimensionWithRotation(toolTip, font, 0, CoreConstants.DEFAULT_FRC);
this.setSize(new Dimension((int) dim.getWidth() + HGAP * 2, (int) dim.getHeight() + VGAP * 2));
stringPane.setPreferredSize(new Dimension((int) dim.getWidth(), (int) dim.getHeight()));
if (!this.isVisible()) {
this.setVisible(true);
if (xAbs + this.getWidth() > Toolkit.getDefaultToolkit().getScreenSize().width) {
xAbs -= this.getWidth();
}
this.setLocation(xAbs, yAbs+HGAP*2);
}
}
/**
* 隐藏弹出框
*/
public void hideToolTip() {
this.setVisible(false);
}
private class ToolTipStringPane extends JPanel {
String text;
public ToolTipStringPane() {
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (!isOpaque()) {
return;
}
g.setFont(font);
Rectangle r = new Rectangle(0, 0, this.getWidth(), this.getHeight());
ColorBackground background = ColorBackground.getInstance(Color.white);
background.paint(g, new RoundRectangle2D.Double(r.getX(), r.getY(), r.getWidth(), r.getHeight(), HGAP, HGAP));
Graphics2D g2d = (Graphics2D) g;
g2d.drawString(text, HGAP, this.getHeight() - HGAP);
}
}
}

170
designer_chart/src/com/fr/design/mainframe/actions/ChartDownLoadWorker.java

@ -1,170 +0,0 @@
package com.fr.design.mainframe.actions;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.file.SaveSomeTemplatePane;
import com.fr.design.mainframe.DesignerContext;
import com.fr.general.ComparatorUtils;
import com.fr.general.FRLogger;
import com.fr.json.JSONObject;
import com.fr.stable.StableUtils;
import com.fr.stable.StringUtils;
import javax.swing.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class ChartDownLoadWorker extends SwingWorker<Void, Double>{
private static final String FILE_PATH = "http://chart.finedevelop.com/update/";
private static final String VERSION = "version";
private static final String TEMP = "_temp";
private static final int BYTE = 153600;
private static final int FILE_BYTE = 1024;
private HashMap<String,String> files = new HashMap<String, String>();
public ChartDownLoadWorker() {
}
private void loadFilesPaths() throws Exception {
files.clear();
final String installHome = StableUtils.getInstallHome();
JSONObject serverVersion = UpdateVersion.getJsonContent();
if(serverVersion == null){
return;
}
Iterator<String> keys = serverVersion.keys();
while (keys.hasNext()){
String jarName = keys.next();
if(!ComparatorUtils.equals(jarName, VERSION)){
String filePath = (String) serverVersion.get(jarName);
String path =installHome + filePath.substring(2);
files.put(jarName,path);
}
}
files.isEmpty();
}
@Override
protected Void doInBackground() throws Exception {
try {
loadFilesPaths();
Set key = files.keySet();
Iterator iterator = key.iterator();
int totalSize = 0;
//先得到所有的长度,方便计算百分比
while (iterator.hasNext()) {
String jarName = (String) iterator.next();
String jarUrl = FILE_PATH + jarName;
URL url = new URL(jarUrl);
URLConnection connection = url.openConnection();
totalSize += connection.getContentLength();
}
int totalBytesRead = 0;
iterator = key.iterator();
while (iterator.hasNext()) {
String jarName = (String) iterator.next();
String jarUrl = FILE_PATH + jarName;
URL url = new URL(jarUrl);
InputStream reader = url.openStream();
String filePath = files.get(jarName);
int point = filePath.lastIndexOf(".");
//先写临时文件,防止更新一半意外中止
String tmpFilePath = filePath.substring(0,point)+TEMP+filePath.substring(point);
FileOutputStream writer = new FileOutputStream(tmpFilePath);
byte[] buffer = new byte[BYTE];
int bytesRead = 0;
while ((bytesRead = reader.read(buffer)) > 0) {
writer.write(buffer, 0, bytesRead);
buffer = new byte[BYTE];
totalBytesRead += bytesRead;
publish(totalBytesRead/(double)totalSize);
}
}
} catch (Exception e) {
throw new Exception("Update Failed !" + e.getMessage());
}
return null;
}
//替换更新下来的临时文件
protected void replaceFiles(){
try {
Set key = files.keySet();
Iterator iterator = key.iterator();
while (iterator.hasNext()) {
String jarName = (String) iterator.next();
String filePath = files.get(jarName);
int point = filePath.lastIndexOf(".");
//先写临时文件,防止更新一半意外中止
String tmpFilePath = filePath.substring(0,point)+TEMP+filePath.substring(point);
FileInputStream inputStream = new FileInputStream(tmpFilePath);
FileOutputStream writer = new FileOutputStream(filePath);
byte[] buffer = new byte[FILE_BYTE];
int bytesRead = 0;
while ((bytesRead = inputStream.read(buffer))>0){
writer.write(buffer,0,bytesRead);
buffer = new byte[FILE_BYTE];
}
writer.flush();
writer.close();
inputStream.close();
}
} catch (Exception e) {
FRLogger.getLogger().error(e.getMessage());
}
}
/**
* 完成时的动作
*/
public void done() {
//检测是否没有保存的模版
SaveSomeTemplatePane saveSomeTempaltePane = new SaveSomeTemplatePane(true);
// 只有一个文件未保存时
if (HistoryTemplateListPane.getInstance().getHistoryCount() == 1) {
int choose = saveSomeTempaltePane.saveLastOneTemplate();
if (choose != JOptionPane.CANCEL_OPTION) {
restartChartDesigner();
}
} else {
if (saveSomeTempaltePane.showSavePane()) {
restartChartDesigner();
}
}
}
private void restartChartDesigner(){
String installHome = StableUtils.getInstallHome();
if(StringUtils.isEmpty(installHome) || ComparatorUtils.equals(".",installHome)){
DesignerContext.getDesignerFrame().exit();
return;
}
try {
String path = installHome + File.separator + "bin" + File.separator + "restart.bat";
ProcessBuilder builder = new ProcessBuilder(path,installHome);
builder.start();
DesignerContext.getDesignerFrame().exit();
}catch (Exception e){
FRLogger.getLogger().error(e.getMessage());
}
}
}

51
designer_chart/src/com/fr/design/mainframe/actions/ChartFeedBackAciton.java

@ -1,51 +0,0 @@
package com.fr.design.mainframe.actions;
import com.fr.design.actions.help.FeedBackAction;
import com.fr.design.actions.help.FeedBackPane;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.DesignerFrame;
import com.fr.general.Inter;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class ChartFeedBackAciton extends FeedBackAction{
/**
* 动作
* @param e 事件
*/
public void actionPerformed(ActionEvent e) {
final DesignerFrame designerFrame = DesignerContext.getDesignerFrame();
ChartFeedBackPane feedBackPane = new ChartFeedBackPane();
BasicDialog basicDialog =feedBackPane.showWindow(designerFrame,false);
feedBackPane.setFeedbackDialog(basicDialog);
basicDialog.setVisible(true);
}
private class ChartFeedBackPane extends FeedBackPane{
protected JPanel getContactPane() {
double f = TableLayout.FILL;
double p = TableLayout.PREFERRED;
Component[][] components = new Component[][]{
new Component[]{new UILabel(Inter.getLocText("email") + ":", SwingConstants.RIGHT), email},
new Component[]{new UILabel(Inter.getLocText("mobile_number") + ":", SwingConstants.RIGHT), phone}
};
double[] rowSize = {p, p, p};
double[] columnSize = {p, p};
int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}};
return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM);
}
}
}

25
designer_chart/src/com/fr/design/mainframe/actions/ChartUpdateAction.java

@ -1,25 +0,0 @@
package com.fr.design.mainframe.actions;
import com.fr.design.actions.UpdateAction;
import java.awt.event.ActionEvent;
/**
* @author : richie
* @since : 8.0
*/
public class ChartUpdateAction extends UpdateAction {
private static final String DOWNLOAD_DESIGNER="";
private static final String DOWNLOAD_CHART="";
private static final String DOWNLOAD_THIRD="";
public ChartUpdateAction() {
}
@Override
public void actionPerformed(ActionEvent e) {
}
}

56
designer_chart/src/com/fr/design/mainframe/actions/ChartWebAction.java

@ -1,56 +0,0 @@
package com.fr.design.mainframe.actions;
import com.fr.base.BaseUtils;
import com.fr.design.actions.UpdateAction;
import com.fr.design.menu.MenuKeySet;
import com.fr.general.Inter;
import com.fr.start.StartServer;
import javax.swing.*;
import java.awt.event.ActionEvent;
/**
* 图表设计器得产品演示
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-27
* Time: 下午9:01
*/
public class ChartWebAction extends UpdateAction {
public ChartWebAction() {
this.setMenuKeySet(getSelfMenuKeySet());
this.setName(getMenuKeySet().getMenuName());
this.setMnemonic(getMenuKeySet().getMnemonic());
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_help/demo.png"));
}
private MenuKeySet getSelfMenuKeySet(){
return new MenuKeySet() {
@Override
public char getMnemonic() {
return 'D';
}
@Override
public String getMenuName() {
return Inter.getLocText("FR-Chart-Product_Demo");
}
@Override
public KeyStroke getKeyStroke() {
return null;
}
};
}
/**
* 动作
* @param e 事件
*/
public void actionPerformed(ActionEvent e) {
StartServer.browserURLWithLocalEnv("http://www.vancharts.com/demo.html");
return;
}
}

35
designer_chart/src/com/fr/design/mainframe/actions/OpenChartAction.java

@ -1,35 +0,0 @@
package com.fr.design.mainframe.actions;
import com.fr.design.actions.file.OpenTemplateAction;
import com.fr.design.mainframe.DesignerContext;
import com.fr.file.FILE;
import com.fr.file.FILEChooserPane;
import com.fr.file.FILEChooserPane4Chart;
import java.awt.event.ActionEvent;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-20
* Time: 下午7:35
*/
public class OpenChartAction extends OpenTemplateAction {
/**
* 动作
* @param evt 事件
*/
public void actionPerformed(ActionEvent evt) {
FILEChooserPane fileChooser = FILEChooserPane4Chart.getInstance(true, true);
if (fileChooser.showOpenDialog(DesignerContext.getDesignerFrame(),".crt")
== FILEChooserPane.OK_OPTION) {
final FILE file = fileChooser.getSelectedFILE();
if (file == null) {//选择的文件不能是 null
return;
}
DesignerContext.getDesignerFrame().openTemplate(file);
}
}
}

74
designer_chart/src/com/fr/design/mainframe/actions/UpdateOnlineAction.java

@ -1,74 +0,0 @@
package com.fr.design.mainframe.actions;
import com.fr.design.ChartEnvManager;
import com.fr.design.actions.UpdateAction;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.chart.UpdateOnLinePane;
import com.fr.design.menu.MenuKeySet;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import com.fr.json.JSONObject;
import com.fr.stable.ProductConstants;
import com.fr.stable.StringUtils;
import javax.swing.*;
import java.awt.event.ActionEvent;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* 图表设计器在线更新
*/
public class UpdateOnlineAction extends UpdateAction {
public UpdateOnlineAction() {
this.setMenuKeySet(getKeySet());
this.setName(getMenuKeySet().getMenuKeySetName() + "...");
this.setMnemonic(getMenuKeySet().getMnemonic());
}
private MenuKeySet getKeySet() {
return new MenuKeySet() {
@Override
public char getMnemonic() {
return 'U';
}
@Override
public String getMenuName() {
return Inter.getLocText("FR-Chart-Help_UpdateOnline");
}
@Override
public KeyStroke getKeyStroke() {
return null;
}
};
}
/**
*动作
* @param e 事件
*/
public void actionPerformed(ActionEvent e) {
new UpdateVersion(){
protected void done() {
try {
ChartEnvManager.getEnvManager().resetCheckDate();
JSONObject serverVersion = get();
String version = serverVersion.getString(UpdateVersion.VERSION);
UpdateOnLinePane updateOnLinePane = new UpdateOnLinePane(StringUtils.isEmpty(version)? ProductConstants.RELEASE_VERSION:version);
BasicDialog dg = updateOnLinePane.showWindow4UpdateOnline(DesignerContext.getDesignerFrame());
updateOnLinePane.setParentDialog(dg);
dg.setVisible(true);
}catch (Exception e){
FRLogger.getLogger().error(e.getMessage());
}
}
}.execute();
}
}

69
designer_chart/src/com/fr/design/mainframe/actions/UpdateVersion.java

@ -1,69 +0,0 @@
package com.fr.design.mainframe.actions;
import com.fr.general.FRLogger;
import com.fr.json.JSONObject;
import javax.swing.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class UpdateVersion extends SwingWorker<JSONObject,Void> {
private static final String VERSION_URL ="http://chart.finedevelop.com/update/update.json";
private static final int TIME_OUT = 300;//5s
public static final String VERSION = "version";
public UpdateVersion(){
}
@Override
protected JSONObject doInBackground() throws Exception {
return getJsonContent();
}
public static JSONObject getJsonContent() throws Exception{
String res = null;
try {
res = readVersionFromServer(TIME_OUT);
} catch (IOException e) {
FRLogger.getLogger().error(e.getMessage());
}
return new JSONObject(res);
}
/**
* 从服务器读取版本
*/
private static String readVersionFromServer(int timeOut) throws IOException {
URL getUrl = new URL(VERSION_URL);
// 根据拼凑的URL,打开连接,URL.openConnection函数会根据URL的类型,
// 返回不同的URLConnection子类的对象,这里URL是一个http,因此实际返回的是HttpURLConnection
HttpURLConnection connection = (HttpURLConnection) getUrl
.openConnection();
connection.setReadTimeout(timeOut);
// 进行连接,但是实际上get request要在下一句的connection.getInputStream()函数中才会真正发到
// 服务器
connection.connect();
// 取得输入流,并使用Reader读取
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf8"));//设置编码,否则中文乱码
String lines;
StringBuffer sb = new StringBuffer();
while ((lines = reader.readLine()) != null) {
sb.append(lines);
}
reader.close();
// 断开连接
connection.disconnect();
return sb.toString();
}
}

55
designer_chart/src/com/fr/design/mainframe/chart/ChartDesignEditPane.java

@ -1,55 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.mainframe.chart.gui.*;
import java.util.ArrayList;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-15
* Time: 下午5:47
*/
public class ChartDesignEditPane extends ChartEditPane {
private static ChartDesignEditPane instance;
private boolean isFromToolBar = false;
public synchronized static ChartEditPane getInstance() {
if (instance == null) {
instance = new ChartDesignEditPane();
}
return instance;
}
public ChartDesignEditPane() {
paneList = new ArrayList<AbstractChartAttrPane>();
dataPane4SupportCell = new ChartDesignerDataPane(listener);
paneList.add(dataPane4SupportCell);
paneList.add(new StylePane4Chart(listener, false));
paneList.add(new ChartDesignerOtherPane());
createTabsPane();
}
protected void dealWithStyleChange(){
if(!isFromToolBar){
HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().styleChange();
}
}
/**
*主要用于图表设计器判断样式改变是否来自工具栏的全局样式按钮
* @param isFromToolBar 是否来自工具栏
*/
public void styleChange(boolean isFromToolBar){
this.isFromToolBar = isFromToolBar;
}
}

238
designer_chart/src/com/fr/design/mainframe/chart/UpdateOnLinePane.java

@ -1,238 +0,0 @@
package com.fr.design.mainframe.chart;
import com.fr.design.ChartEnvManager;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.BasicPane;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.actions.ChartDownLoadWorker;
import com.fr.general.ComparatorUtils;
import com.fr.general.Inter;
import com.fr.stable.ProductConstants;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.text.DecimalFormat;
import java.text.NumberFormat;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* 在线更新面板
*/
public class UpdateOnLinePane extends BasicPane{
private static final int GAP = 40;
private static final int H_GAP = 16;
private static final int SIDE_GAP =30;
private static final int RIGHT_BORDER_GAP = 34;
private static final Color LABEL_COLOR = new Color(114,114,114);
private static final int MESSAGE_FONT_SIZE = 20;
private static final int PUSH_FONT_SIZE = 12;
private static final int PROGRESS_WIDTH = 500;
private static final int PROGRESS_HEIGHT = 14;
private static final NumberFormat NUMBER_FORMAT = new DecimalFormat("##.##");
private static final int PRECENT =100;
private static final Color FOREGROUNG = new Color(23,190,86);
private static final Color BACKGROUND = new Color(210,210,210);
String serverVersion = ProductConstants.RELEASE_VERSION;
UIButton okButton = new UIButton(Inter.getLocText("FR-Chart-Dialog_OK"));
UIButton updateButton = new UIButton(Inter.getLocText("FR-Chart-App_Update"));
UIButton cancleButton = new UIButton(Inter.getLocText("FR-Chart-Dialog_Cancle"));
UICheckBox pushAuto = new UICheckBox(Inter.getLocText("FR-Chart-UpdateMessage_PushAuto"));
private JPanel messagePane;
private JPanel optionsPane;
private BasicDialog parentDialog;
private ChartDownLoadWorker downLoadWorker = null;
private boolean isUpdateCancle = false;
private ActionListener updateListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
final JProgressBar progressBar = init4UpdatingPane();
downLoadWorker = new ChartDownLoadWorker(){
protected void process(java.util.List<Double> v) {
progressBar.setValue((int)(v.get(v.size() - 1) * PRECENT));
}
public void done() {
try {
get();
} catch (Exception e1) {
init4UpdateFaild();
return;
}
if(!isUpdateCancle){
replaceFiles();
dialogExit();
super.done();
}
}
};
downLoadWorker.execute();
}
};
private ActionListener okListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dialogExit();
}
};
private ActionListener cancleListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(downLoadWorker !=null){
isUpdateCancle = true;
downLoadWorker.cancel(true);
}
dialogExit();
}
};
public void setParentDialog(BasicDialog dialog){
this.parentDialog = dialog;
}
public UpdateOnLinePane(String serverVersion){
this.serverVersion = serverVersion;
this.isUpdateCancle = false;
pushAuto.setSelected(ChartEnvManager.getEnvManager().isPushUpdateAuto());
pushAuto.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
ChartEnvManager.getEnvManager().setPushUpdateAuto(pushAuto.isSelected());
}
});
init4PanesLayout();
initListeners();
judge();
}
private void initListeners(){
updateButton.addActionListener(updateListener);
okButton.addActionListener(okListener);
cancleButton.addActionListener(cancleListener);
}
private void init4PanesLayout(){
this.setLayout(new BorderLayout());
this.messagePane = FRGUIPaneFactory.createBorderLayout_L_Pane();
this.optionsPane = new JPanel(new FlowLayout(FlowLayout.RIGHT,H_GAP ,0)) ;
this.optionsPane.setBorder(new EmptyBorder(0, 0, GAP, RIGHT_BORDER_GAP));
this.add(this.messagePane, BorderLayout.CENTER);
this.add(this.optionsPane, BorderLayout.SOUTH);
pushAuto.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, PUSH_FONT_SIZE));
pushAuto.setForeground(LABEL_COLOR);
this.revalidate();
}
//更新失败的提示
private void init4UpdateFaild(){
this.messagePane.removeAll();
UILabel label = new UILabel(Inter.getLocText("FR-Chart-Version_UpdateFail")+"!");
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, MESSAGE_FONT_SIZE));
label.setForeground(LABEL_COLOR);
this.messagePane.add(label,BorderLayout.CENTER);
optionsPane.removeAll();
optionsPane.add(okButton);
this.revalidate();
}
private JProgressBar init4UpdatingPane(){
this.messagePane.removeAll();
JPanel centerPane = new JPanel(new GridLayout(2,1));
UILabel label = new UILabel(Inter.getLocText("FR-Chart-App_UpdateProgress"));
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, MESSAGE_FONT_SIZE));
label.setForeground(LABEL_COLOR);
label.setBorder(new EmptyBorder(PUSH_FONT_SIZE,0,0,0));
centerPane.add(label);
JProgressBar progressBar = new JProgressBar();
progressBar.setMaximum(PRECENT);
progressBar.setMinimum(0);
progressBar.setValue(0);
progressBar.setBorder(new EmptyBorder(MESSAGE_FONT_SIZE,SIDE_GAP,SIDE_GAP*2,SIDE_GAP));
centerPane.add(progressBar);
messagePane.add(centerPane,BorderLayout.CENTER);
optionsPane.removeAll();
optionsPane.add(cancleButton);
this.revalidate();
return progressBar;
}
private void init4VersionSamePane(){
this.messagePane.removeAll();
UILabel label = new UILabel(Inter.getLocText("FR-Chart-Versions_Lasted"));
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, MESSAGE_FONT_SIZE));
label.setForeground(LABEL_COLOR);
this.messagePane.add(label,BorderLayout.CENTER);
optionsPane.removeAll();
optionsPane.add(pushAuto);
optionsPane.add(okButton);
this.revalidate();
}
private void init4VersionDifferentPane(){
this.messagePane.removeAll();
createPaneShowVersions();
optionsPane.removeAll();
optionsPane.add(pushAuto);
optionsPane.add(updateButton);
optionsPane.add(cancleButton);
this.revalidate();
}
private void createPaneShowVersions(){
JPanel centerPane = new JPanel(new GridLayout(2,1));
UILabel localLabel = new UILabel(Inter.getLocText("FR-Chart-Version_Local")+":"+ ProductConstants.RELEASE_VERSION);
localLabel.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, MESSAGE_FONT_SIZE));
localLabel.setForeground(LABEL_COLOR);
localLabel.setBorder(new EmptyBorder(PUSH_FONT_SIZE,0,0,0));
UILabel serverLabel = new UILabel(Inter.getLocText("FR-Chart-Version_Lasted")+":"+serverVersion);
serverLabel.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, MESSAGE_FONT_SIZE));
serverLabel.setForeground(LABEL_COLOR);
serverLabel.setBorder(new EmptyBorder(-MESSAGE_FONT_SIZE - PUSH_FONT_SIZE, 0, 0,0));
localLabel.setHorizontalAlignment(SwingConstants.CENTER);
serverLabel.setHorizontalAlignment(SwingConstants.CENTER);
centerPane.add(localLabel);
centerPane.add(serverLabel);
messagePane.add(centerPane,BorderLayout.CENTER);
}
private void judge(){
if(ComparatorUtils.equals(ProductConstants.RELEASE_VERSION,serverVersion)){
//版本一致,提示已经是最新版本
init4VersionSamePane();
}else{
init4VersionDifferentPane();
}
}
/**
* Dialog exit.
*/
private void dialogExit() {
parentDialog.setVisible(false);
parentDialog.dispose();
}
protected String title4PopupWindow() {
return Inter.getLocText("FR-Chart-Help_UpdateOnline");
}
}

71
designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDesignerDataPane.java

@ -1,71 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartattr.GisMapPlot;
import com.fr.chart.chartattr.MapPlot;
import com.fr.design.chart.report.GisMapDataPane4Chart;
import com.fr.design.chart.report.MapDataPane4Chart;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.mainframe.chart.gui.data.ImportSetChartDataPane;
import com.fr.general.FRLogger;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-15
* Time: 下午1:57
*/
public class ChartDesignerDataPane extends ChartDataPane {
private AttributeChangeListener listener;
public ChartDesignerDataPane(AttributeChangeListener listener) {
super(listener);
this.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
FRLogger.getLogger().info("SD");
}
});
this.listener = listener;
}
@Override
protected JPanel createContentPane() {
contentsPane = new ImportSetChartDataPane(listener,ChartDesignerDataPane.this);
return contentsPane;
}
protected void repeatLayout(ChartCollection collection) {
if(contentsPane != null) {
this.remove(contentsPane);
}
this.setLayout(new BorderLayout(0, 0));
if (collection.getSelectedChart().getPlot() instanceof MapPlot) {
contentsPane = new MapDataPane4Chart(listener,this);
}else if(collection.getSelectedChart().getPlot() instanceof GisMapPlot){
contentsPane = new GisMapDataPane4Chart(listener,this);
} else{
contentsPane = new ImportSetChartDataPane(listener,ChartDesignerDataPane.this);
}
}
/**
* 主要用于图表设计器
* @return
*/
public boolean isNeedPresentPaneWhenFilterData(){
return true;
}
}

48
designer_chart/src/com/fr/design/mainframe/chart/gui/data/ChartDesignDataLoadPane.java

@ -1,48 +0,0 @@
package com.fr.design.mainframe.chart.gui.data;
import com.fr.base.TableData;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.data.tabledata.wrapper.TemplateTableDataWrapper;
import com.fr.design.dialog.BasicPane;
import com.fr.design.mainframe.AbstractChartDataPane4Chart;
/**
* 图表设计器导入 界面
* Created by kunsnat on 14-10-21.
* kunsnat@gmail.com
*/
public abstract class ChartDesignDataLoadPane extends BasicPane {
private AbstractChartDataPane4Chart parentPane;
public ChartDesignDataLoadPane(AbstractChartDataPane4Chart parentPane){
this.parentPane = parentPane;
}
/**
* 加载数据集
*
* @param tableData 数据集
*/
public abstract void populateChartTableData(TableData tableData);
/**
* 根据界面 获取数据集相关.
*
* @return 返回数据集
*/
public abstract TableData getTableData();
protected abstract String getNamePrefix();
//响应属性事件
protected void fireChange() {
parentPane.fireTableDataChange();
}
public TableDataWrapper getTableDataWrapper(){
return new TemplateTableDataWrapper(getTableData());
}
}

124
designer_chart/src/com/fr/design/mainframe/chart/gui/data/EmbbeddDataPane.java

@ -1,124 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.data;
import com.fr.base.BaseUtils;
import com.fr.base.FRContext;
import com.fr.base.TableData;
import com.fr.design.constants.UIConstants;
import com.fr.data.impl.EmbeddedTableData;
import com.fr.design.data.tabledata.tabledatapane.EmbeddedTableDataPane;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.BasicPane;
import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.mainframe.AbstractChartDataPane4Chart;
import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/**
* 图表设计器内置数据集面板
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-16
* Time: 上午12:09
*/
public class EmbbeddDataPane extends ChartDesignDataLoadPane {
private UIButton edit;
private UIButton reviewButton;
private EmbeddedTableData tableData;
public EmbbeddDataPane(AbstractChartDataPane4Chart parentPane) {
super(parentPane);
tableData = new EmbeddedTableData();
initEditButton();
initReviewButton();
this.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 3));
this.add(edit);
this.add(reviewButton);
}
private void initEditButton() {
edit = new UIButton(BaseUtils.readIcon("com/fr/design/images/control/edit.png"));
edit.setBorder(new LineBorder(UIConstants.LINE_COLOR));
edit.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
EmbeddedTableDataPane tableDataPane = new EmbeddedTableDataPane();
tableDataPane.populateBean(tableData);
dgEdit(tableDataPane, getNamePrefix());
}
});
}
private void initReviewButton() {
reviewButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/search.png"));
reviewButton.setBorder(new LineBorder(UIConstants.LINE_COLOR));
reviewButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
//预览图表设计器内置数据集
TableDataWrapper tableDataWrappe = getTableDataWrapper();
if (tableDataWrappe != null) {
try {
tableDataWrappe.previewData();
} catch (Exception e1) {
FRContext.getLogger().error(e1.getMessage(), e1);
}
}
}
});
}
@Override
protected String title4PopupWindow() {
return null;
}
@Override
public TableData getTableData() {
return tableData;
}
/**
* 加载数据集
*
* @param tableData 数据集
*/
public void populateChartTableData(TableData tableData) {
if (tableData instanceof EmbeddedTableData) {
this.tableData =(EmbeddedTableData) tableData;
}
}
protected String getNamePrefix() {
return "Embedded";
}
/**
* 编辑面板
*
* @param uPanel 面板
* @param originalName 原始名字
*/
private void dgEdit(final EmbeddedTableDataPane uPanel, String originalName) {
final BasicPane.NamePane nPanel = uPanel.asNamePane();
nPanel.setObjectName(originalName);
final BasicDialog dg;
dg = nPanel.showLargeWindow(SwingUtilities.getWindowAncestor(EmbbeddDataPane.this), new DialogActionAdapter() {
public void doOk() {
tableData = uPanel.updateBean();
fireChange();
}
});
dg.setVisible(true);
}
}

123
designer_chart/src/com/fr/design/mainframe/chart/gui/data/ExcelDataPane.java

@ -1,123 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.data;
import com.fr.base.BaseUtils;
import com.fr.base.FRContext;
import com.fr.base.TableData;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.constants.UIConstants;
import com.fr.design.data.datapane.preview.PreviewTablePane;
import com.fr.data.impl.ExcelTableData;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.mainframe.AbstractChartDataPane4Chart;
import com.fr.design.mainframe.DesignerContext;
import com.fr.file.FILE;
import com.fr.file.FILEChooserPane;
import com.fr.general.Inter;
import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-15
* Time: 下午11:58
*/
public class ExcelDataPane extends ChartDesignDataLoadPane {
private UITextField path = new UITextField();
private UIButton reviewButton;
private ExcelTableData tableData;
private MouseListener listener = new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
FILEChooserPane fileChooserPane = new FILEChooserPane(true, true);
if (fileChooserPane.showOpenDialog(DesignerContext.getDesignerFrame(), ".xlsx")
== FILEChooserPane.OK_OPTION) {
FILE chooseFILE = fileChooserPane.getSelectedFILE();
if (chooseFILE != null && chooseFILE.exists()) {
path.setText(chooseFILE.getPath());
} else {
JOptionPane.showConfirmDialog(ExcelDataPane.this, Inter.getLocText("FR-Template-Path_chooseRightPath"),
Inter.getLocText("FR-App-All_Warning"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE);
path.setText("");
}
tableData.setFilePath(path.getText().toString());
tableData.setFromEnv(chooseFILE.isEnvFile());
tableData.setNeedColumnName(true);
fireChange();
}
}
};
public ExcelDataPane(AbstractChartDataPane4Chart parentPane, JComponent pathChooseButton) {
super(parentPane);
initReviewButton();
tableData = new ExcelTableData();
tableData.setFilePath(path.getText().toString());
tableData.setNeedColumnName(true);
path.setEditable(false);
pathChooseButton.addMouseListener(listener);
this.setLayout(new BorderLayout(0, 0));
JPanel pane = new JPanel(new BorderLayout(LayoutConstants.HGAP_LARGE, 0));
pane.add(path, BorderLayout.CENTER);
pane.add(reviewButton, BorderLayout.EAST);
this.add(pane, BorderLayout.CENTER);
}
@Override
protected String title4PopupWindow() {
return null;
}
private void initReviewButton() {
reviewButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/search.png"));
reviewButton.setBorder(new LineBorder(UIConstants.LINE_COLOR));
reviewButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//预览本地excel
try {
PreviewTablePane.previewTableData(getTableData());
} catch (Exception e1) {
FRContext.getLogger().error(e1.getMessage(), e1);
}
}
});
}
@Override
public TableData getTableData() {
return tableData;
}
@Override
protected String getNamePrefix() {
return null;
}
/**
* 加载数据集
*
* @param tableData 数据集
*/
public void populateChartTableData(TableData tableData) {
if (tableData instanceof ExcelTableData) {
path.setText(((ExcelTableData) tableData).getFilePath());
this.tableData = (ExcelTableData)tableData;
this.tableData.setNeedColumnName(true);
}
fireChange();
}
}

117
designer_chart/src/com/fr/design/mainframe/chart/gui/data/ImportSetChartDataPane.java

@ -1,117 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.data;
import com.fr.base.TableData;
import com.fr.base.chart.chartdata.TopDefinitionProvider;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartattr.Plot;
import com.fr.chart.chartdata.TableDataDefinition;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.mainframe.AbstractChartDataPane4Chart;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane;
import com.fr.design.mainframe.chart.gui.data.table.CategoryPlotMoreCateTableDataContentPane;
import com.fr.design.mainframe.chart.gui.data.table.Factory4TableDataContentPane;
import javax.swing.*;
/**
* 数据导入数据设置面板
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-15
* Time: 下午2:35
*/
public class ImportSetChartDataPane extends AbstractChartDataPane4Chart {
private AbstractTableDataContentPane dataContentPane;
public ImportSetChartDataPane(final AttributeChangeListener listener, ChartDataPane parent) {
super(listener,parent);
}
/**
* 更新界面 数据内容
*/
public void populate(ChartCollection collection) {
dataContentPane = getContentPane(collection.getSelectedChart().getPlot());
dataContentPane.setNeedSummaryCaculateMethod(false);
dataContentPane.redoLayoutPane();
if (collection != null && collection.getSelectedChart() != null) {
Chart chart = collection.getSelectedChart();
TopDefinitionProvider definition = chart.getFilterDefinition();
if (definition instanceof TableDataDefinition) {
TableData tableData = ((TableDataDefinition) definition).getTableData();
if(tableData != null){
populateChoosePane(tableData);
fireTableDataChange();
}
if (dataContentPane != null) {
dataContentPane.populateBean(collection);
}
}
}
this.remove(leftContentPane);
this.initContentPane();
this.validate();
dataSource.addItemListener(dsListener);
initAllListeners();
initSelfListener(dataContentPane);
this.addAttributeChangeListener(attributeChangeListener);
}
protected JPanel getDataContentPane(){
return dataContentPane;
}
@Override
public void update(ChartCollection collection) {
if (collection != null && collection.getSelectedChart() != null) {
if (dataContentPane != null) {
dataContentPane.updateBean(collection);
}
TableDataDefinition topDefinition =(TableDataDefinition)collection.getSelectedChart().getFilterDefinition();
if(topDefinition !=null){
topDefinition.setTableData(choosePane.getTableData());
}
}
}
private AbstractTableDataContentPane getContentPane(Plot plot) {
if (plot == null || plot.isSupportMoreCate()) {
return new CategoryPlotMoreCateTableDataContentPane(parentPane){
public boolean isNeedSummaryCaculateMethod(){
return false;
}
};
} else{
return Factory4TableDataContentPane.createTableDataContenetPaneWithPlotType(plot, parentPane);
}
}
/**
* 数据集数据改变
*/
public void fireTableDataChange() {
if (dataContentPane != null) {
dataContentPane.onSelectTableData(choosePane.getTableDataWrapper());
}
}
/**
* 清空数据集的设置
*/
public void clearTableDataSetting(){
if(dataContentPane != null){
dataContentPane.clearAllBoxList();
}
}
}

101
designer_chart/src/com/fr/design/mainframe/chart/gui/data/JSONDataPane.java

@ -1,101 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.data;
import com.fr.base.BaseUtils;
import com.fr.base.FRContext;
import com.fr.base.TableData;
import com.fr.chart.chartdata.JSONTableData;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.constants.UIConstants;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.mainframe.AbstractChartDataPane4Chart;
import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-15
* Time: 下午6:45
*/
public class JSONDataPane extends ChartDesignDataLoadPane {
private UITextField url = new UITextField();
private UIButton reviewButton;
private JSONTableData tableData;
public JSONDataPane(AbstractChartDataPane4Chart parentPane) {
super(parentPane);
initReviewButton();
url.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
if(e.getKeyChar() == KeyEvent.VK_ENTER){
tableData.setFilePath(url.getText());
fireChange();
}
}
});
this.setLayout(new BorderLayout(0, 0));
JPanel pane = new JPanel(new BorderLayout(LayoutConstants.HGAP_LARGE, 0));
pane.add(url, BorderLayout.CENTER);
pane.add(reviewButton, BorderLayout.EAST);
this.add(pane, BorderLayout.CENTER);
tableData = new JSONTableData(url.getText());
}
@Override
protected String title4PopupWindow() {
return null;
}
private void initReviewButton() {
reviewButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/search.png"));
reviewButton.setBorder(new LineBorder(UIConstants.LINE_COLOR));
reviewButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
tableData.setFilePath(url.getText());
fireChange();
//预览JSON数据
TableDataWrapper tableDataWrappe = getTableDataWrapper();
if (tableDataWrappe != null) {
try {
tableDataWrappe.previewData();
} catch (Exception e1) {
FRContext.getLogger().error(e1.getMessage(), e1);
}
}
}
});
}
@Override
public TableData getTableData() {
return tableData;
}
@Override
protected String getNamePrefix() {
return null;
}
/**
* 加载数据集
* @param tableData 数据集
*/
public void populateChartTableData(TableData tableData) {
if(tableData instanceof JSONTableData) {
url.setText(((JSONTableData) tableData).getFilePath());
this.tableData = (JSONTableData)tableData;
}
}
}

69
designer_chart/src/com/fr/design/mainframe/chart/gui/type/AreaPlotPane4ToolBar.java

@ -1,69 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.AreaIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-16
* Time: 下午5:55
*/
public class AreaPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int STACK_AREA_CHART = 0;
private static final int PERCENT_AREA_LINE_CHART = 1;
private static final int STACK_3D_AREA_CHART = 2;
private static final int PERCENT_3D_AREA_LINE_CHART = 3;
public AreaPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/area/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
String area = Inter.getLocText("FR-Chart-Type_Area");
String stack = Inter.getLocText("FR-Chart-Type_Stacked");
String percent = Inter.getLocText("FR-Chart-Use_Percent");
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), STACK_AREA_CHART, stack + area,this);
pane.setSelected(true);
demoList.add(pane);
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), PERCENT_AREA_LINE_CHART, percent + stack + area,this));
String td = Inter.getLocText("FR-Chart-Chart_3D");
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), STACK_3D_AREA_CHART, td + stack + area,this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), PERCENT_3D_AREA_LINE_CHART, td + percent + stack + area,this));
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = AreaIndependentChart.areaChartTypes;
Plot newPlot =barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In AreaChart");
}
return cloned;
}
}

72
designer_chart/src/com/fr/design/mainframe/chart/gui/type/BarPlotPane4ToolBar.java

@ -1,72 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.BarIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-16
* Time: 下午5:44
*/
public class BarPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int COLOMN_CHART = 0;
private static final int STACK_COLOMN_CHART = 1;
private static final int PERCENT_STACK_COLOMN_CHART = 2;
private static final int THREE_D_COLOMN_CHART = 3;
private static final int THREE_D_COLOMN_HORIZON_DRAW_CHART = 4;
private static final int THREE_D_STACK_COLOMN_CHART = 5;
private static final int THREE_D_PERCENT_STACK_COLOMN_CHART = 6;
public BarPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/bar/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), COLOMN_CHART, Inter.getLocText("FR-Chart-Type_Bar"),this);
pane.setSelected(true);
demoList.add(pane);
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), STACK_COLOMN_CHART, Inter.getLocText(new String[]{"FR-Chart-Type_Stacked","FR-Chart-Type_Bar"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), PERCENT_STACK_COLOMN_CHART, Inter.getLocText(new String[]{"FR-Chart-Use_Percent","FR-Chart-Type_Stacked","FR-Chart-Type_Bar"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_COLOMN_CHART, Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Bar"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_COLOMN_HORIZON_DRAW_CHART, Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Bar","FR-Chart-Direction_Horizontal"},new String[]{"","(",")"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_STACK_COLOMN_CHART,
Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Stacked","FR-Chart-Type_Bar"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_PERCENT_STACK_COLOMN_CHART,
Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Use_Percent","FR-Chart-Type_Stacked","FR-Chart-Type_Bar"}),this));
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = BarIndependentChart.barChartTypes;
BarPlot newPlot = (BarPlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In BarChart");
}
return cloned;
}
}

72
designer_chart/src/com/fr/design/mainframe/chart/gui/type/BubblePlotPane4ToolBar.java

@ -1,72 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.base.FRContext;
import com.fr.chart.base.TextAttr;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.BubbleIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午1:59
*/
public class BubblePlotPane4ToolBar extends PlotPane4ToolBar {
private static final int BUBBLE_CHART = 0;
public BubblePlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/bubble/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), BUBBLE_CHART, Inter.getLocText("FR-Chart-Chart_BubbleChart"),this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = BubbleIndependentChart.bubbleChartTypes;
BubblePlot newPlot = (BubblePlot) barChart[this.getSelectedIndex()].getPlot();
setChartFontAttr(newPlot);
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In BubbleChart");
}
return cloned;
}
/**
* 设置一些几本的属性
* @param plot 绘图区对象
*/
public static void setChartFontAttr(BubblePlot plot) {
if (plot.getxAxis() != null) {
TextAttr categoryTextAttr = new TextAttr();
categoryTextAttr.setFRFont(FRContext.getDefaultValues().getFRFont());
plot.getxAxis().setTextAttr(categoryTextAttr);
}
if (plot.getyAxis() != null) {
TextAttr valueTextAttr = new TextAttr();
valueTextAttr.setFRFont(FRContext.getDefaultValues().getFRFont());
plot.getyAxis().setTextAttr(valueTextAttr);
}
}
}

138
designer_chart/src/com/fr/design/mainframe/chart/gui/type/ChartDesignerImagePane.java

@ -1,138 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.type;
import com.fr.base.BaseUtils;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
/**
* 图表设计器工具栏上的图表类型选择用的单个小图面板
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-16
* Time: 下午4:24
*/
public class ChartDesignerImagePane extends JPanel implements MouseListener{
private static final int SIZE = 28;
private static final String NOMAL = "normal";
private static final String OVER = "over";
private static final String PRESS = "normal";
private String iconPath;
private int chartType;
private String state = NOMAL;//状态,按下、悬浮、正常
private Icon mode;
private boolean isSelected;
private PlotPane4ToolBar parent;
private ArrayList<ChangeListener> changeListeners = new ArrayList<ChangeListener>();
public ChartDesignerImagePane(String iconPath, int chartType, String tipName,PlotPane4ToolBar parent) {
this.iconPath = iconPath;
this.chartType = chartType;
this.isSelected = false;
addMouseListener(this);
this.setToolTipText(tipName);
this.parent = parent;
}
public Dimension getPreferredSize() {
return new Dimension(SIZE, SIZE);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
mode = BaseUtils.readIcon(iconPath + chartType + "_" + state + ".png");
if(this.isSelected){
Icon border =BaseUtils.readIcon("com/fr/design/images/toolbar/border.png");
border.paintIcon(this,g,0,0);
}
mode.paintIcon(this, g, 3, 3);
}
public void setSelected(boolean isSelected) {
this.isSelected = isSelected;
this.state = isSelected ? PRESS : NOMAL;
}
/**
* 鼠标点击
* @param e 事件
*/
public void mouseClicked(MouseEvent e) {
}
/**
* 鼠标按下
* @param e 事件
*/
public void mousePressed(MouseEvent e) {
parent.clearChoose();
if(parent.getSelectedIndex() != this.chartType){
parent.setSelectedIndex(this.chartType);
this.fireStateChange();
}
this.isSelected = true;
state = PRESS;
this.repaint();
}
/**
* 鼠标释放
* @param e 事件
*/
public void mouseReleased(MouseEvent e) {
}
/**
* 鼠标点击
* @param e 进入
*/
public void mouseEntered(MouseEvent e) {
if (this.isSelected) {
state = PRESS;
} else {
state = OVER;
}
this.repaint();
}
/**
* 鼠标点击
* @param e 离开
*/
public void mouseExited(MouseEvent e) {
if (this.isSelected) {
state = PRESS;
} else {
state = NOMAL;
}
this.repaint();
}
private void fireStateChange() {
for (int i = 0; i < changeListeners.size(); i++) {
changeListeners.get(i).stateChanged(new ChangeEvent(this));
}
}
/**
* 注册事件监听
* @param listener 监听
*/
public void registeChangeListener(ChangeListener listener){
changeListeners.add(listener);
}
}

73
designer_chart/src/com/fr/design/mainframe/chart/gui/type/ColumnPlotPane4ToolBar.java

@ -1,73 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.ColumnIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* 柱形图工具栏小图系列
* Created by IntelliJ IDEA.
* Author : DAISY
* Version: 6.5.6
* Date: 14-10-16
* Time: 下午5:21
*/
public class ColumnPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int COLOMN_CHART = 0;
private static final int STACK_COLOMN_CHART = 1;
private static final int PERCENT_STACK_COLOMN_CHART = 2;
private static final int THREE_D_COLOMN_CHART = 3;
private static final int THREE_D_COLOMN_HORIZON_DRAW_CHART = 4;
private static final int THREE_D_STACK_COLOMN_CHART = 5;
private static final int THREE_D_PERCENT_STACK_COLOMN_CHART = 6;
public ColumnPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/column/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), COLOMN_CHART, Inter.getLocText("FR-Chart-Type_Column"),this);
pane.setSelected(true);
demoList.add(pane);
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), STACK_COLOMN_CHART, Inter.getLocText(new String[]{"FR-Chart-Type_Stacked","FR-Chart-Type_Column"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), PERCENT_STACK_COLOMN_CHART,
Inter.getLocText(new String[]{"FR-Chart-Use_Percent","FR-Chart-Type_Stacked","FR-Chart-Type_Column"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_COLOMN_CHART, Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Column"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_COLOMN_HORIZON_DRAW_CHART, Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Column","FR-Chart-Direction_Horizontal"},new String[]{"","(",")"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_STACK_COLOMN_CHART,
Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Stacked","FR-Chart-Type_Column"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_PERCENT_STACK_COLOMN_CHART,
Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Use_Percent","FR-Chart-Type_Stacked","FR-Chart-Type_Column"}),this));
return demoList;
}
protected Plot getSelectedClonedPlot(){
Chart[] barChart = ColumnIndependentChart.columnChartTypes;
BarPlot newPlot = (BarPlot)barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot)newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In ColumnChart");
}
return cloned;
}
}

54
designer_chart/src/com/fr/design/mainframe/chart/gui/type/CustomPlotPane4ToolBar.java

@ -1,54 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.CustomIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午1:39
*/
public class CustomPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int CUSTOM_NO_SHEET = 0;
public CustomPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/custom/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), CUSTOM_NO_SHEET, Inter.getLocText("ChartF-Comb_Chart"),this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = CustomIndependentChart.combChartTypes;
CustomPlot newPlot = (CustomPlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In CustomChart");
}
return cloned;
}
}

54
designer_chart/src/com/fr/design/mainframe/chart/gui/type/DonutPlotPane4ToolBar.java

@ -1,54 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.DonutIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午2:18
*/
public class DonutPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int DONUT_CHART = 0; //2d圆环图
private static final int THREE_D_DONUT_CHART = 1; //3D圆环图
public DonutPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/donut/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), DONUT_CHART, Inter.getLocText("FR-Chart-Type_Donut"),this);
pane.setSelected(true);
demoList.add(pane);
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_DONUT_CHART, Inter.getLocText(new String[]{"FR-Chart-Chart_3D", "FR-Chart-Type_Donut"}),this));
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = DonutIndependentChart.donutChartTypes;
DonutPlot newPlot = (DonutPlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In DonutChart");
}
return cloned;
}
}

52
designer_chart/src/com/fr/design/mainframe/chart/gui/type/GanttPlotPane4ToolBar.java

@ -1,52 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.GanttIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : DAISY
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午2:16
*/
public class GanttPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int GANTT = 0;
public GanttPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/gantt/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), GANTT, Inter.getLocText("FR-Chart-Type_Gantt"),this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = GanttIndependentChart.ganttChartTypes;
GanttPlot newPlot = (GanttPlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In GanttChart");
}
return cloned;
}
}

57
designer_chart/src/com/fr/design/mainframe/chart/gui/type/LinePlotPane4ToolBar.java

@ -1,57 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.LineIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : DAISY
* Version: 6.5.6
* Date: 14-10-16
* Time: 下午5:37
*/
public class LinePlotPane4ToolBar extends PlotPane4ToolBar {
private static final int LINE_CHART = 0;
public LinePlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/line/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), LINE_CHART, Inter.getLocText("I-LineStyle_Line"), this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = LineIndependentChart.lineChartTypes;
LinePlot newPlot = (LinePlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In LineChart");
}
return cloned;
}
}

69
designer_chart/src/com/fr/design/mainframe/chart/gui/type/MeterPlotPane4ToolBar.java

@ -1,69 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.base.FRContext;
import com.fr.chart.base.TextAttr;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.MeterIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午2:08
*/
public class MeterPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int METER = 0;
private static final int BLUE_METER = 1;
private static final int SIMPLE_METER = 2;
public MeterPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/meter/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), METER, Inter.getLocText("FR-Chart-Type_Meter"),this);
pane.setSelected(true);
demoList.add(pane);
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), BLUE_METER, Inter.getLocText("FR-Chart-Type_Meter")+1,this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), SIMPLE_METER, Inter.getLocText("FR-Chart-Type_Meter")+2,this));
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = MeterIndependentChart.meterChartTypes;
MeterPlot newPlot = (MeterPlot) barChart[this.getSelectedIndex()].getPlot();
setChartFontAttr4MeterStyle(newPlot);
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In MeterChart");
}
return cloned;
}
/**
* 设置一些几本的属性
* @param plot 绘图区对象
*/
public static void setChartFontAttr4MeterStyle(MeterPlot plot) {
if(plot.getMeterStyle() != null){
plot.getMeterStyle().setTitleTextAttr(new TextAttr(FRContext.getDefaultValues().getFRFont()));
}
}
}

58
designer_chart/src/com/fr/design/mainframe/chart/gui/type/PiePlotPane4ToolBar.java

@ -1,58 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.PieIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-16
* Time: 下午5:52
*/
public class PiePlotPane4ToolBar extends PlotPane4ToolBar {
private static final int PIE_CHART = 0;
private static final int THREE_D_PIE_CHART = 1;
public PiePlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/pie/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), PIE_CHART, Inter.getLocText("I-PieStyle_Normal"),this);
pane.setSelected(true);
demoList.add(pane);
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_PIE_CHART,
Inter.getLocText(new String[]{"FR-Chart-Chart_3D", "I-PieStyle_Normal"}),this));
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = PieIndependentChart.pieChartTypes;
PiePlot newPlot = (PiePlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In PieChart");
}
return cloned;
}
}

134
designer_chart/src/com/fr/design/mainframe/chart/gui/type/PlotPane4ToolBar.java

@ -1,134 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.type;
import com.fr.base.FRContext;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartattr.Plot;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.design.mainframe.chart.ChartDesignEditPane;
import com.fr.general.ComparatorUtils;
import com.fr.js.NameJavaScriptGroup;
import com.fr.stable.Constants;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.util.List;
/**
* 图表设计器 工具栏面板
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-16
* Time: 下午5:17
*/
public abstract class PlotPane4ToolBar extends JPanel{
private static final int COM_GAP = 14;
protected List<ChartDesignerImagePane> typeDemo;
protected abstract String getTypeIconPath();
protected abstract List<ChartDesignerImagePane> initDemoList();
private int selectedIndex = 0;//默认选中第一个
private ChartDesigner chartDesigner;
private ChangeListener changeListener = new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
fireChange();
}
};
public PlotPane4ToolBar(ChartDesigner designer){
chartDesigner = designer;
typeDemo = initDemoList();
this.setLayout(new FlowLayout(FlowLayout.LEFT, COM_GAP, 0));
for(int i = 0; i < typeDemo.size(); i++) {
ChartDesignerImagePane tmp = typeDemo.get(i);
tmp.registeChangeListener(changeListener);
this.add(tmp);
}
this.setSelectedIndex(0);
}
/**
* 清除选中
*/
public void clearChoose(){
if(typeDemo == null){
return;
}
for(int i = 0; i < typeDemo.size(); i++) {
typeDemo.get(i).setSelected(false);
this.repaint();
}
}
public void setSelectedIndex(int selectedIndex){
clearChoose();
this.selectedIndex = selectedIndex;
typeDemo.get(selectedIndex).setSelected(true);
}
public int getSelectedIndex(){
return this.selectedIndex;
}
//子类覆盖
protected Plot getSelectedClonedPlot(){
return null;
}
/**
* 切换图表类型
*/
public void fireChange(){
ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection();
Chart chart =chartCollection.getSelectedChart();
chart.switchPlot(getSelectedClonedPlot());
resetChart(chart);
chartDesigner.clearToolBarStyleChoose();
chartDesigner.fireTargetModified();
ChartDesignEditPane.getInstance().populateSelectedTabPane();
}
protected void resetChart(Chart chart){
chart.setBorderStyle(Constants.LINE_NONE);
chart.setBorderColor(new Color(150, 150, 150));
chart.setBackground(null);
}
public Plot setSelectedClonedPlotWithCondition(Plot oldPlot){
Plot newPlot = getSelectedClonedPlot();
if(oldPlot != null && ComparatorUtils.equals(newPlot.getClass(), oldPlot.getClass())){
if(oldPlot.getHotHyperLink() != null){
NameJavaScriptGroup hotHyper = oldPlot.getHotHyperLink();
try {
newPlot.setHotHyperLink((NameJavaScriptGroup)hotHyper.clone());
} catch (CloneNotSupportedException e) {
FRContext.getLogger().error("Error in Hyperlink, Please Check it.", e);
}
}
newPlot.setConditionCollection(oldPlot.getConditionCollection());
newPlot.setSeriesDragEnable(oldPlot.isSeriesDragEnable());
if(newPlot.isSupportZoomCategoryAxis() && newPlot.getxAxis() != null) {
newPlot.getxAxis().setZoom(oldPlot.getxAxis().isZoom());
}
if(newPlot.isSupportTooltipInInteractivePane()) {
newPlot.setHotTooltipStyle(oldPlot.getHotTooltipStyle());
}
if(newPlot.isSupportAutoRefresh()) {
newPlot.setAutoRefreshPerSecond(oldPlot.getAutoRefreshPerSecond());
}
}
return newPlot;
}
}

51
designer_chart/src/com/fr/design/mainframe/chart/gui/type/RadarPlotPane4ToolBar.java

@ -1,51 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.RadarIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午2:02
*/
public class RadarPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int RADAR = 0;
public RadarPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/radar/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), RADAR, Inter.getLocText("FR-Chart-Type_Radar"),this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = RadarIndependentChart.radarChartTypes;
RadarPlot newPlot = (RadarPlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In RadarChart");
}
return cloned;
}
}

53
designer_chart/src/com/fr/design/mainframe/chart/gui/type/RangePlotPane4ToolBar.java

@ -1,53 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.RangeIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午2:13
*/
public class RangePlotPane4ToolBar extends PlotPane4ToolBar {
private static final int RANGE = 0;
public RangePlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/range/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), RANGE, Inter.getLocText("ChartF-Range_Chart"),this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = RangeIndependentChart.rangeChartTypes;
RangePlot newPlot = (RangePlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In RangeChart");
}
return cloned;
}
}

52
designer_chart/src/com/fr/design/mainframe/chart/gui/type/StockPlotPane4ToolBar.java

@ -1,52 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.StockIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午2:04
*/
public class StockPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int STOCK = 0;
public StockPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/stock/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), STOCK, Inter.getLocText("FR-Chart-Type_Stock"),this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = StockIndependentChart.stockChartTypes;
StockPlot newPlot = (StockPlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In StockChart");
}
return cloned;
}
}

45
designer_chart/src/com/fr/design/mainframe/chart/gui/type/UserDefinedChartTypePane.java

@ -1,45 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.Chart;
/**
* Created by eason on 15/4/23.
*/
public abstract class UserDefinedChartTypePane extends AbstractChartTypePane{
protected String[] getTypeLayoutPath() {
return new String[0];
}
protected String[] getTypeLayoutTipName(){
return new String[0];
}
protected String[] getTypeIconPath(){
return new String[]{"/com/fr/design/images/chart/default.png"};
}
protected String[] getTypeTipName() {
return new String[]{title4PopupWindow()};
}
public void updateBean(Chart chart) {
}
public void populateBean(Chart chart){
typeDemo.get(0).isPressing = true;
checkDemosBackground();
}
/**
* 弹出界面的标题
* @return 标题
*/
public String title4PopupWindow(){
return "";
}
}

72
designer_chart/src/com/fr/design/mainframe/chart/gui/type/XYSCatterPlotPane4ToolBar.java

@ -1,72 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.base.FRContext;
import com.fr.chart.base.TextAttr;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.XYScatterIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午1:54
*/
public class XYSCatterPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int XYSCATTER_CHART = 0;
public XYSCatterPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/xyscatter/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), XYSCATTER_CHART, Inter.getLocText("FR-Chart-Type_XYScatter"),this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = XYScatterIndependentChart.XYScatterChartTypes;
XYPlot newPlot = (XYPlot) barChart[this.getSelectedIndex()].getPlot();
setChartFontAttr(newPlot);
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In XYScatterChart");
}
return cloned;
}
/**
* 设置一些几本的属性
* @param plot 绘图区对象
*/
public static void setChartFontAttr(XYPlot plot) {
if (plot.getxAxis() != null) {
TextAttr categoryTextAttr = new TextAttr();
categoryTextAttr.setFRFont(FRContext.getDefaultValues().getFRFont());
plot.getxAxis().setTextAttr(categoryTextAttr);
}
if (plot.getyAxis() != null) {
TextAttr valueTextAttr = new TextAttr();
valueTextAttr.setFRFont(FRContext.getDefaultValues().getFRFont());
plot.getyAxis().setTextAttr(valueTextAttr);
}
}
}
Loading…
Cancel
Save