kerry
8 years ago
104 changed files with 1101 additions and 7462 deletions
File diff suppressed because one or more lines are too long
@ -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()); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,103 @@
|
||||
package com.fr.design.chart.fun.impl; |
||||
|
||||
import com.fr.chart.chartattr.Plot; |
||||
import com.fr.design.beans.BasicBeanPane; |
||||
import com.fr.design.chart.fun.IndependentChartUIProvider; |
||||
import com.fr.design.condition.ConditionAttributesPane; |
||||
import com.fr.design.gui.frpane.AttributeChangeListener; |
||||
import com.fr.design.mainframe.chart.AbstractChartAttrPane; |
||||
import com.fr.design.mainframe.chart.ChartEditPane; |
||||
import com.fr.design.mainframe.chart.ChartsEditPane; |
||||
import com.fr.design.mainframe.chart.gui.ChartDataPane; |
||||
import com.fr.design.mainframe.chart.gui.ChartStylePane; |
||||
import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane; |
||||
import com.fr.design.mainframe.chart.gui.data.report.CategoryPlotReportDataContentPane; |
||||
import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane; |
||||
import com.fr.design.mainframe.chart.gui.data.table.CategoryPlotTableDataContentPane; |
||||
import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane; |
||||
import com.fr.design.mainframe.chart.gui.type.PiePlotPane; |
||||
import com.fr.general.ComparatorUtils; |
||||
import com.fr.stable.fun.impl.AbstractProvider; |
||||
import com.fr.stable.fun.mark.API; |
||||
|
||||
/** |
||||
* Created by mengao on 2017/4/24. |
||||
* 用户使用第三方图表需要继承的面板抽象类 |
||||
*/ |
||||
|
||||
@API(level = IndependentChartUIProvider.CURRENT_API_LEVEL) |
||||
public abstract class AbstractIndependentChartsUI extends AbstractProvider implements IndependentChartUIProvider { |
||||
|
||||
public String mark4Provider() { |
||||
return getClass().getName(); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public AbstractChartTypePane getPlotTypePane() { |
||||
return new PiePlotPane(); |
||||
} |
||||
|
||||
@Override |
||||
public ChartDataPane getChartDataPane(AttributeChangeListener listener) { |
||||
return new ChartDataPane(listener); |
||||
} |
||||
|
||||
@Override |
||||
public AbstractTableDataContentPane getTableDataSourcePane(Plot plot, ChartDataPane parent) { |
||||
return new CategoryPlotTableDataContentPane(parent); |
||||
} |
||||
|
||||
@Override |
||||
public AbstractReportDataContentPane getReportDataSourcePane(Plot plot, ChartDataPane parent) { |
||||
return new CategoryPlotReportDataContentPane(parent); |
||||
} |
||||
|
||||
public BasicBeanPane<Plot> getPlotSeriesPane(ChartStylePane parent, Plot plot){ |
||||
return null; |
||||
} |
||||
|
||||
public BasicBeanPane<Plot> getPlotSeriesPane(){ |
||||
return null; |
||||
} |
||||
|
||||
public boolean equals(Object obj) { |
||||
return obj != null && ComparatorUtils.equals(obj.getClass(), this.getClass()); |
||||
} |
||||
|
||||
public ConditionAttributesPane getPlotConditionPane(Plot plot){ |
||||
return null; |
||||
} |
||||
|
||||
@Override |
||||
public AbstractChartAttrPane[] getAttrPaneArray(AttributeChangeListener listener){ |
||||
return new AbstractChartAttrPane[]{}; |
||||
} |
||||
|
||||
@Override |
||||
public boolean isUseDefaultPane(){ |
||||
return false; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public String getIconPath() { |
||||
return "com/fr/design/images/form/toolbar/ChartF-Column.png"; |
||||
} |
||||
|
||||
@Override |
||||
|
||||
/** |
||||
* plot面板的标题 |
||||
* 插件兼容 |
||||
*/ |
||||
public String getPlotTypeTitle4PopupWindow(){ |
||||
return getPlotTypePane().title4PopupWindow(); |
||||
} |
||||
|
||||
@Override |
||||
public ChartEditPane getChartEditPane(String plotID) { |
||||
return new ChartsEditPane(); |
||||
} |
||||
|
||||
} |
@ -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()); |
||||
} |
||||
} |
@ -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(); |
||||
} |
||||
|
||||
} |
@ -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(); |
||||
} |
||||
|
||||
} |
@ -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()); |
||||
} |
||||
|
||||
} |
||||
|
||||
} |
@ -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); |
||||
} |
||||
} |
@ -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(); |
||||
} |
||||
} |
@ -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; |
||||
} |
||||
|
||||
} |
@ -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; |
||||
} |
||||
} |
@ -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() { |
||||
|
||||
} |
||||
} |
@ -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(); |
||||
} |
||||
} |
@ -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); |
||||
} |
||||
} |
||||
|
||||
} |
||||
|
||||
} |
@ -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(){ |
||||
} |
||||
} |
@ -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; |
||||
} |
||||
|
||||
} |
@ -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; |
||||
} |
||||
|
||||
|
||||
} |
@ -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(); |
||||
} |
||||
|
||||
|
||||
|
||||
} |
@ -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; |
||||
} |
||||
|
||||
|
||||
} |
@ -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; |
||||
} |
||||
} |
||||
} |
@ -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; |
||||
} |
||||
|
||||
} |
@ -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); |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
} |
@ -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); |
||||
} |
||||
|
||||
} |
||||
|
||||
} |
@ -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()); |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
} |
@ -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); |
||||
} |
||||
} |
||||
} |
@ -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) { |
||||
|
||||
} |
||||
} |
@ -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.browerURLWithLocalEnv("http://www.vancharts.com/demo.html"); |
||||
return; |
||||
} |
||||
} |
@ -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); |
||||
} |
||||
} |
||||
} |
@ -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(); |
||||
} |
||||
|
||||
} |
@ -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(); |
||||
} |
||||
} |
@ -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; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,51 @@
|
||||
package com.fr.design.mainframe.chart; |
||||
|
||||
import com.fr.chart.chartattr.ChartCollection; |
||||
import com.fr.chart.chartattr.Charts; |
||||
import com.fr.general.Inter; |
||||
import com.fr.stable.StableUtils; |
||||
|
||||
import javax.swing.*; |
||||
|
||||
/** |
||||
* Created by mengao on 2017/5/16. |
||||
*/ |
||||
public abstract class ChartsConfigPane <T extends Charts> extends AbstractChartAttrPane { |
||||
|
||||
public final static String CHART_STYLE_TITLE = Inter.getLocText("Chart-Style_Name"); |
||||
|
||||
public abstract Class<? extends Charts> accptType(); |
||||
|
||||
@Override |
||||
public void populate(ChartCollection collection) { |
||||
if (StableUtils.classInstanceOf(collection.getSelectedChart().getClass(),accptType())) { |
||||
populate(collection, (T)collection.getSelectedChart()); |
||||
} |
||||
} |
||||
|
||||
protected abstract void populate(ChartCollection collection, T selectedChart); |
||||
|
||||
@Override |
||||
public void update(ChartCollection collection) { |
||||
if (StableUtils.classInstanceOf(collection.getSelectedChart().getClass(),accptType())) { |
||||
update(collection, (T)collection.getSelectedChart()); |
||||
} |
||||
} |
||||
|
||||
protected abstract void update(ChartCollection collection, T selectedChart); |
||||
|
||||
@Override |
||||
protected JPanel createContentPane() { |
||||
return new JPanel(); |
||||
} |
||||
|
||||
@Override |
||||
public String getIconPath() { |
||||
return "com/fr/design/images/chart/ChartStyle.png"; |
||||
} |
||||
|
||||
@Override |
||||
public String title4PopupWindow() { |
||||
return CHART_STYLE_TITLE; |
||||
} |
||||
} |
@ -0,0 +1,54 @@
|
||||
package com.fr.design.mainframe.chart; |
||||
|
||||
import com.fr.chart.chartattr.Chart; |
||||
import com.fr.design.ChartTypeInterfaceManager; |
||||
import com.fr.design.mainframe.chart.gui.ChartDataPane; |
||||
|
||||
import java.awt.*; |
||||
import java.util.ArrayList; |
||||
|
||||
/** |
||||
* Created by mengao on 2017/5/3. |
||||
*/ |
||||
public class ChartsEditPane extends ChartEditPane { |
||||
|
||||
protected ChartsConfigPane chartsConfigPane; |
||||
|
||||
public ChartsEditPane() { |
||||
this.setLayout(new BorderLayout()); |
||||
paneList = new ArrayList<AbstractChartAttrPane>(); |
||||
|
||||
dataPane4SupportCell = new ChartDataPane(listener); |
||||
dataPane4SupportCell.setSupportCellData(true); |
||||
|
||||
paneList.add(dataPane4SupportCell); |
||||
|
||||
createTabsPane(); |
||||
} |
||||
|
||||
/** |
||||
* 重新构造面板 |
||||
* @param currentChart 图表 |
||||
*/ |
||||
public void reLayout(Chart currentChart) { |
||||
if (currentChart != null) { |
||||
this.removeAll(); |
||||
this.setLayout(new BorderLayout()); |
||||
paneList = new ArrayList<AbstractChartAttrPane>(); |
||||
|
||||
String plotID = ""; |
||||
if (currentChart.getPlot() != null) { |
||||
plotID = currentChart.getPlot().getPlotID(); |
||||
} |
||||
|
||||
dataPane4SupportCell = createChartDataPane(plotID); |
||||
chartsConfigPane = ChartTypeInterfaceManager.getInstance().getChartConfigPane(plotID); |
||||
paneList.add(dataPane4SupportCell); |
||||
paneList.add(chartsConfigPane); |
||||
|
||||
createTabsPane(); |
||||
} |
||||
|
||||
} |
||||
|
||||
} |
@ -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"); |
||||
} |
||||
|
||||
} |
@ -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; |
||||
} |
||||
} |
@ -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()); |
||||
} |
||||
} |
@ -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); |
||||
} |
||||
} |
@ -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(); |
||||
} |
||||
} |
@ -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(); |
||||
} |
||||
} |
||||
|
||||
} |
@ -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; |
||||
} |
||||
} |
||||
} |
@ -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; |
||||
} |
||||
} |
@ -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; |
||||
} |
||||
} |
@ -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); |
||||
} |
||||
} |
||||
} |
@ -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); |
||||
} |
||||
|
||||
} |
@ -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; |
||||
} |
||||
} |
@ -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; |
||||
} |
||||
|
||||
|
||||
} |
@ -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; |
||||
} |
||||
} |
@ -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; |
||||
} |
||||
} |
@ -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; |
||||
} |
||||
} |
@ -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())); |
||||
} |
||||
} |
||||
} |
@ -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; |
||||
} |
||||
} |
@ -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; |
||||
} |
||||
} |
@ -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; |
||||
} |
||||
} |
@ -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; |
||||
} |
||||
} |
@ -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; |
||||
} |
||||
} |
@ -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 ""; |
||||
} |
||||
|
||||
|
||||
} |
@ -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); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,28 @@
|
||||
package com.fr.design.designer.creator; |
||||
|
||||
import com.fr.form.ui.ErrorMarker; |
||||
import com.fr.form.ui.Widget; |
||||
import com.fr.stable.StringUtils; |
||||
|
||||
import java.awt.*; |
||||
|
||||
/** |
||||
* Created by richie on 2017/6/28. |
||||
*/ |
||||
public class ErrorCreator extends NullCreator { |
||||
|
||||
public ErrorCreator(Widget widget, Dimension initSize) { |
||||
super(widget, initSize); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
protected String showText() { |
||||
ErrorMarker marker = (ErrorMarker)toData(); |
||||
String text = marker.getWidgetValue().getDisplayValue(); |
||||
if (StringUtils.isEmpty(text)) { |
||||
return super.showText(); |
||||
} |
||||
return text; |
||||
} |
||||
} |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue