neil
8 years ago
53 changed files with 0 additions and 6790 deletions
@ -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()); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -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.browserURLWithLocalEnv("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; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -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); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
Loading…
Reference in new issue