shine
5 years ago
37 changed files with 2903 additions and 18 deletions
@ -0,0 +1,52 @@ |
|||||||
|
package com.fr.van.chart.drillmap.designer.data; |
||||||
|
|
||||||
|
import com.fr.chart.chartattr.ChartCollection; |
||||||
|
import com.fr.design.gui.frpane.AttributeChangeListener; |
||||||
|
import com.fr.design.mainframe.chart.gui.ChartDataPane; |
||||||
|
import com.fr.design.mainframe.chart.gui.data.DataContentsPane; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by Mitisky on 16/6/20. |
||||||
|
*/ |
||||||
|
public class VanChartDrillMapContentsPane extends DataContentsPane { |
||||||
|
|
||||||
|
private VanChartMapLayerAndDataTabPane layerAndDataTabPane; |
||||||
|
|
||||||
|
private AttributeChangeListener listener; |
||||||
|
private ChartDataPane parent; |
||||||
|
|
||||||
|
public VanChartDrillMapContentsPane(AttributeChangeListener listener, ChartDataPane parent) { |
||||||
|
this.listener = listener; |
||||||
|
this.parent = parent; |
||||||
|
initAll(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 设置是否关联单元格数据. |
||||||
|
* |
||||||
|
* @param supportCellData |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public void setSupportCellData(boolean supportCellData) { |
||||||
|
layerAndDataTabPane.setSupportCellData(supportCellData); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void populate(ChartCollection collection) { |
||||||
|
layerAndDataTabPane.populateBean(collection); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void update(ChartCollection collection) { |
||||||
|
layerAndDataTabPane.updateBean(collection); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected JPanel createContentPane() { |
||||||
|
layerAndDataTabPane = new VanChartMapLayerAndDataTabPane(this.listener, this.parent); |
||||||
|
return layerAndDataTabPane; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,39 @@ |
|||||||
|
package com.fr.van.chart.drillmap.designer.data; |
||||||
|
|
||||||
|
import com.fr.chart.chartattr.ChartCollection; |
||||||
|
import com.fr.design.gui.frpane.AttributeChangeListener; |
||||||
|
import com.fr.design.mainframe.chart.gui.ChartDataPane; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by Mitisky on 16/6/20. |
||||||
|
*/ |
||||||
|
public class VanChartDrillMapDataPane extends ChartDataPane { |
||||||
|
|
||||||
|
public VanChartDrillMapDataPane(AttributeChangeListener listener) { |
||||||
|
super(listener); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected JPanel createContentPane() { |
||||||
|
contentsPane = new VanChartDrillMapContentsPane(listener, VanChartDrillMapDataPane.this); |
||||||
|
return contentsPane; |
||||||
|
} |
||||||
|
|
||||||
|
//编辑内置数据集会stateChange,会调用这里
|
||||||
|
@Override |
||||||
|
protected void repeatLayout(ChartCollection collection) { |
||||||
|
if (contentsPane != null) { |
||||||
|
this.remove(contentsPane); |
||||||
|
} |
||||||
|
this.setLayout(new BorderLayout(0, 0)); |
||||||
|
|
||||||
|
contentsPane = new VanChartDrillMapContentsPane(listener, VanChartDrillMapDataPane.this); |
||||||
|
contentsPane.setSupportCellData(isSupportCellData()); |
||||||
|
|
||||||
|
this.add(contentsPane, BorderLayout.CENTER); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,130 @@ |
|||||||
|
package com.fr.van.chart.drillmap.designer.data; |
||||||
|
|
||||||
|
import com.fr.chart.chartattr.ChartCollection; |
||||||
|
import com.fr.design.dialog.BasicPane; |
||||||
|
import com.fr.design.dialog.MultiTabPane; |
||||||
|
import com.fr.design.gui.frpane.AttributeChangeListener; |
||||||
|
import com.fr.design.mainframe.chart.gui.ChartDataPane; |
||||||
|
import com.fr.general.ComparatorUtils; |
||||||
|
import com.fr.van.chart.drillmap.designer.data.comp.DrillMapDataPane; |
||||||
|
import com.fr.van.chart.drillmap.designer.data.comp.DrillMapLayerPane; |
||||||
|
import com.fr.van.chart.map.designer.data.MapDataPaneHelper; |
||||||
|
|
||||||
|
import java.awt.CardLayout; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by Mitisky on 16/6/20. |
||||||
|
* 钻取层级和数据界面切换的界面 |
||||||
|
*/ |
||||||
|
public class VanChartMapLayerAndDataTabPane extends MultiTabPane<ChartCollection> { |
||||||
|
|
||||||
|
private DrillMapLayerPane layerPane; |
||||||
|
private DrillMapDataPane dataPane; |
||||||
|
|
||||||
|
private ChartCollection chartCollection; |
||||||
|
|
||||||
|
public VanChartMapLayerAndDataTabPane(AttributeChangeListener listener, ChartDataPane parent) { |
||||||
|
cardLayout = new CardLayout(); |
||||||
|
layerPane = new DrillMapLayerPane(); |
||||||
|
dataPane = new DrillMapDataPane(listener, parent); |
||||||
|
paneList = initPaneList(); |
||||||
|
initComponents(); |
||||||
|
} |
||||||
|
|
||||||
|
private void initComponents() { |
||||||
|
super.relayoutWhenListChange(); |
||||||
|
} |
||||||
|
|
||||||
|
protected void tabChanged() { |
||||||
|
if (getSelectedIndex() == 0) { |
||||||
|
return; |
||||||
|
} |
||||||
|
if (chartCollection == null) { |
||||||
|
return; |
||||||
|
} |
||||||
|
if (!ComparatorUtils.equals(MapDataPaneHelper.getDrillMapLayerMapTypeList(chartCollection), dataPane.getCurrentMapTypeList())) { |
||||||
|
dataPane.populateBean(chartCollection); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 当List中的界面变化时, 重新布局 |
||||||
|
*/ |
||||||
|
public void relayoutWhenListChange() { |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected List<BasicPane> initPaneList() { |
||||||
|
List<BasicPane> paneList = new ArrayList<BasicPane>(); |
||||||
|
|
||||||
|
if (layerPane != null) { |
||||||
|
paneList.add(layerPane); |
||||||
|
} |
||||||
|
if (dataPane != null) { |
||||||
|
paneList.add(dataPane); |
||||||
|
} |
||||||
|
|
||||||
|
return paneList; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void populateBean(ChartCollection ob) { |
||||||
|
chartCollection = ob; |
||||||
|
layerPane.populateBean(ob); |
||||||
|
dataPane.populateBean(ob); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Update. |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public ChartCollection updateBean() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void updateBean(ChartCollection ob) { |
||||||
|
layerPane.updateBean(ob); |
||||||
|
dataPane.updateBean(ob); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 设置是否关联单元格数据. |
||||||
|
* |
||||||
|
* @param supportCellData |
||||||
|
*/ |
||||||
|
public void setSupportCellData(boolean supportCellData) { |
||||||
|
dataPane.setSupportCellData(supportCellData); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 是否是指定类型 |
||||||
|
* |
||||||
|
* @param ob 对象 |
||||||
|
* @return 是否是指定类型 |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public boolean accept(Object ob) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* title应该是一个属性,不只是对话框的标题时用到,与其他组件结合时,也会用得到 |
||||||
|
* |
||||||
|
* @return 绥化狂标题 |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public String title4PopupWindow() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 重置 |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public void reset() { |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,116 @@ |
|||||||
|
package com.fr.van.chart.drillmap.designer.data.comp; |
||||||
|
|
||||||
|
import com.fr.chart.chartattr.Chart; |
||||||
|
import com.fr.chart.chartattr.ChartCollection; |
||||||
|
import com.fr.design.beans.BasicBeanPane; |
||||||
|
import com.fr.design.beans.FurtherBasicBeanPane; |
||||||
|
import com.fr.design.gui.frpane.AttributeChangeListener; |
||||||
|
import com.fr.design.gui.frpane.UIComboBoxPane; |
||||||
|
import com.fr.design.mainframe.chart.gui.ChartDataPane; |
||||||
|
import com.fr.plugin.chart.drillmap.data.DrillMapDefinition; |
||||||
|
import com.fr.plugin.chart.type.MapType; |
||||||
|
import com.fr.van.chart.map.designer.data.MapDataPaneHelper; |
||||||
|
|
||||||
|
import java.awt.BorderLayout; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by Mitisky on 16/6/20. |
||||||
|
* 钻取地图数据配置界面中 和钻取层级平级的数据界面 |
||||||
|
*/ |
||||||
|
public class DrillMapDataPane extends BasicBeanPane<ChartCollection> { |
||||||
|
private UIComboBoxPane<ChartCollection> dataDefinitionType;//数据定义方式:底层数据汇总/各层级分别指定
|
||||||
|
|
||||||
|
private SingleLayerDataDefinitionPane bottomDataDefinitionPane;//底层数据汇总方式定义钻取地图数据
|
||||||
|
private EachLayerDataDefinitionPane eachLayerDataDefinitionPane;//各层级分别指定
|
||||||
|
|
||||||
|
private ChartDataPane parent; |
||||||
|
|
||||||
|
public DrillMapDataPane(final AttributeChangeListener listener, final ChartDataPane parent) { |
||||||
|
this.parent = parent; |
||||||
|
bottomDataDefinitionPane = new SingleLayerDataDefinitionPane(listener, parent); |
||||||
|
eachLayerDataDefinitionPane = new EachLayerDataDefinitionPane(listener, parent); |
||||||
|
|
||||||
|
dataDefinitionType = new UIComboBoxPane<ChartCollection>() { |
||||||
|
@Override |
||||||
|
protected List<FurtherBasicBeanPane<? extends ChartCollection>> initPaneList() { |
||||||
|
|
||||||
|
List<FurtherBasicBeanPane<? extends ChartCollection>> paneList = new ArrayList<FurtherBasicBeanPane<? extends ChartCollection>>(); |
||||||
|
paneList.add(bottomDataDefinitionPane); |
||||||
|
paneList.add(eachLayerDataDefinitionPane); |
||||||
|
return paneList; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected String title4PopupWindow() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
this.setLayout(new BorderLayout()); |
||||||
|
this.add(dataDefinitionType, BorderLayout.CENTER); |
||||||
|
} |
||||||
|
|
||||||
|
public List<MapType> getCurrentMapTypeList() { |
||||||
|
return eachLayerDataDefinitionPane.getCurrentMapTypeList(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 设置是否关联单元格数据. |
||||||
|
* |
||||||
|
* @param supportCellData |
||||||
|
*/ |
||||||
|
public void setSupportCellData(boolean supportCellData) { |
||||||
|
bottomDataDefinitionPane.setSupportCellData(supportCellData); |
||||||
|
eachLayerDataDefinitionPane.setSupportCellData(supportCellData); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Populate. |
||||||
|
* |
||||||
|
* @param ob |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public void populateBean(ChartCollection ob) { |
||||||
|
|
||||||
|
dataDefinitionType.setSelectedIndex(MapDataPaneHelper.isFromBottomData(ob) ? 0 : 1); |
||||||
|
|
||||||
|
ChartCollection bottomDataChartCollection = MapDataPaneHelper.getBottomDataDrillMapChartCollection(ob); |
||||||
|
bottomDataDefinitionPane.populateBean(bottomDataChartCollection); |
||||||
|
eachLayerDataDefinitionPane.populateBean(ob); |
||||||
|
|
||||||
|
parent.initAllListeners(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Update. |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public ChartCollection updateBean() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void updateBean(ChartCollection ob) { |
||||||
|
DrillMapDefinition drillMapDefinition = MapDataPaneHelper.getDrillMapDefinition(ob); |
||||||
|
if (drillMapDefinition == null) { |
||||||
|
drillMapDefinition = new DrillMapDefinition(); |
||||||
|
ob.getSelectedChart().setFilterDefinition(drillMapDefinition); |
||||||
|
} |
||||||
|
if (dataDefinitionType.getSelectedIndex() == 0) { |
||||||
|
drillMapDefinition.setFromBottomData(true); |
||||||
|
ChartCollection temp = new ChartCollection(new Chart()); |
||||||
|
bottomDataDefinitionPane.updateBean(temp); |
||||||
|
drillMapDefinition.setBottomDataDefinition(temp.getSelectedChart().getFilterDefinition()); |
||||||
|
} else { |
||||||
|
drillMapDefinition.setFromBottomData(false); |
||||||
|
eachLayerDataDefinitionPane.updateBean(ob); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected String title4PopupWindow() { |
||||||
|
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Use_Data"); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,203 @@ |
|||||||
|
package com.fr.van.chart.drillmap.designer.data.comp; |
||||||
|
|
||||||
|
import com.fr.chart.chartattr.ChartCollection; |
||||||
|
import com.fr.design.dialog.BasicScrollPane; |
||||||
|
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.general.ComparatorUtils; |
||||||
|
|
||||||
|
import com.fr.plugin.chart.drillmap.DrillMapHelper; |
||||||
|
import com.fr.plugin.chart.drillmap.VanChartDrillMapPlot; |
||||||
|
import com.fr.plugin.chart.map.server.CompatibleGeoJSONTreeHelper; |
||||||
|
import com.fr.plugin.chart.type.MapType; |
||||||
|
import com.fr.plugin.chart.type.ZoomLevel; |
||||||
|
import com.fr.van.chart.designer.TableLayout4VanChartHelper; |
||||||
|
import com.fr.van.chart.map.designer.type.VanChartMapSourceChoosePane; |
||||||
|
|
||||||
|
import javax.swing.BorderFactory; |
||||||
|
import javax.swing.JPanel; |
||||||
|
import javax.swing.tree.DefaultMutableTreeNode; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
import java.awt.Component; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.HashMap; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by Mitisky on 16/6/20. |
||||||
|
* 钻取地图数据配置界面--钻取层级界面 |
||||||
|
*/ |
||||||
|
public class DrillMapLayerPane extends BasicScrollPane<ChartCollection> { |
||||||
|
private static final String[] CUSTOM_MAP_TYPES = new String[]{MapType.AREA.getLocaleString(), MapType.POINT.getLocaleString()}; |
||||||
|
private static final String[] AREA_MAP_TYPES = new String[]{MapType.AREA.getLocaleString()}; |
||||||
|
private static final String[] POINT_MAP_TYPES = new String[]{MapType.POINT.getLocaleString()}; |
||||||
|
|
||||||
|
private static final java.util.Map<MapType, String[]> TEMP = new HashMap<MapType, String[]>(); |
||||||
|
|
||||||
|
static { |
||||||
|
TEMP.put(MapType.AREA, AREA_MAP_TYPES); |
||||||
|
TEMP.put(MapType.POINT, POINT_MAP_TYPES); |
||||||
|
TEMP.put(MapType.CUSTOM, CUSTOM_MAP_TYPES); |
||||||
|
} |
||||||
|
|
||||||
|
private MapDataTree mapDataTree; |
||||||
|
private Component[][] detailComps; |
||||||
|
|
||||||
|
private int depth; |
||||||
|
private MapType oldMapType; |
||||||
|
private String oldGeoUrl; |
||||||
|
|
||||||
|
@Override |
||||||
|
protected void layoutContentPane() { |
||||||
|
leftcontentPane = createContentPane(); |
||||||
|
leftcontentPane.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); |
||||||
|
this.add(leftcontentPane); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected JPanel createContentPane() { |
||||||
|
|
||||||
|
if (mapDataTree == null) { |
||||||
|
mapDataTree = new MapDataTree(CompatibleGeoJSONTreeHelper.getRootNodeWithoutPara(oldGeoUrl)); |
||||||
|
mapDataTree.setRootVisible(true); |
||||||
|
} |
||||||
|
|
||||||
|
JPanel mapDataTreePanel = new JPanel(new BorderLayout()); |
||||||
|
mapDataTreePanel.add(mapDataTree); |
||||||
|
|
||||||
|
double p = TableLayout.PREFERRED; |
||||||
|
double f = TableLayout.FILL; |
||||||
|
double[] columnSize = {f}; |
||||||
|
double[] rowSize = {p, p}; |
||||||
|
Component[][] components = new Component[][]{ |
||||||
|
new Component[]{createTitlePane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Layer_Tree"), mapDataTreePanel)}, |
||||||
|
new Component[]{createTitlePane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Layer_Detail"), createLayerDetailPane())} |
||||||
|
}; |
||||||
|
|
||||||
|
JPanel contentPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); |
||||||
|
JPanel panel = new JPanel(new BorderLayout()); |
||||||
|
panel.add(contentPane, BorderLayout.CENTER); |
||||||
|
return panel; |
||||||
|
} |
||||||
|
|
||||||
|
private JPanel createTitlePane (String title, JPanel panel) { |
||||||
|
JPanel jPanel = TableLayout4VanChartHelper.createExpandablePaneWithTitle(title, panel); |
||||||
|
panel.setBorder(BorderFactory.createEmptyBorder(10,5,0,0)); |
||||||
|
jPanel.setBorder(BorderFactory.createEmptyBorder(0,5,0,0)); |
||||||
|
return jPanel; |
||||||
|
} |
||||||
|
|
||||||
|
private JPanel createLayerDetailPane() { |
||||||
|
double p = TableLayout.PREFERRED; |
||||||
|
double f = TableLayout.FILL; |
||||||
|
double[] columnSize = {f, p, p}; |
||||||
|
double[] rowSize = new double[depth + 1]; |
||||||
|
detailComps = new Component[depth + 1][3]; |
||||||
|
rowSize[0] = p; |
||||||
|
detailComps[0] = new Component[]{ |
||||||
|
new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Descriptor")), |
||||||
|
new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Zoom_Layer")), |
||||||
|
new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Layer_Map_Type")) |
||||||
|
}; |
||||||
|
for (int i = 0; i < depth; i++) { |
||||||
|
rowSize[i + 1] = p; |
||||||
|
int d = i + 1; |
||||||
|
UILabel label = new UILabel(String.format("%s%d%s", com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Index_Article"), d, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Index_Layer"))); |
||||||
|
UIComboBox level = new UIComboBox(VanChartMapSourceChoosePane.ZOOM_LEVELS); |
||||||
|
level.setEnabled(i != 0); |
||||||
|
UIComboBox type = new UIComboBox(TEMP.get(oldMapType)); |
||||||
|
detailComps[i + 1] = new Component[]{label, level, type}; |
||||||
|
} |
||||||
|
|
||||||
|
return TableLayoutHelper.createGapTableLayoutPane(detailComps, rowSize, columnSize, 10, 6); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Populate. |
||||||
|
* |
||||||
|
* @param ob |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public void populateBean(ChartCollection ob) { |
||||||
|
VanChartDrillMapPlot drillMapPlot = DrillMapHelper.getDrillMapPlot(ob); |
||||||
|
|
||||||
|
if (drillMapPlot != null) { |
||||||
|
java.util.List<ZoomLevel> levelList = drillMapPlot.getLayerLevelList(); |
||||||
|
java.util.List<MapType> mapTypeList = drillMapPlot.getLayerMapTypeList(); |
||||||
|
|
||||||
|
if (detailComps == null || drillMapPlot.getMapType() != oldMapType || !ComparatorUtils.equals(drillMapPlot.getGeoUrl(), oldGeoUrl)) { |
||||||
|
oldMapType = drillMapPlot.getMapType(); |
||||||
|
oldGeoUrl = drillMapPlot.getGeoUrl(); |
||||||
|
|
||||||
|
DefaultMutableTreeNode root = CompatibleGeoJSONTreeHelper.getNodeByJSONPath(oldGeoUrl); |
||||||
|
if (root != null) { |
||||||
|
mapDataTree.changeRootNode(root); |
||||||
|
depth = root.getDepth() + 1;//根节点也算一层
|
||||||
|
} |
||||||
|
|
||||||
|
this.remove(leftcontentPane); |
||||||
|
layoutContentPane(); |
||||||
|
} |
||||||
|
|
||||||
|
//根据层级初始属性,一切以json那边读到的层级为准
|
||||||
|
int levelSize = levelList.size(); |
||||||
|
for (int i = levelSize; i < depth; i++) { |
||||||
|
levelList.add(ZoomLevel.AUTO); |
||||||
|
} |
||||||
|
MapType mapType = drillMapPlot.getMapType() == MapType.POINT ? MapType.POINT : MapType.AREA; |
||||||
|
int typeSize = mapTypeList.size(); |
||||||
|
for (int j = typeSize; j < depth; j++) { |
||||||
|
mapTypeList.add(mapType); |
||||||
|
} |
||||||
|
|
||||||
|
for (int i = 0; i < depth; i++) { |
||||||
|
Component[] components = detailComps[i + 1]; |
||||||
|
if (components != null) { |
||||||
|
UIComboBox level = (UIComboBox) components[1]; |
||||||
|
UIComboBox type = (UIComboBox) components[2]; |
||||||
|
if (level != null) { |
||||||
|
level.setSelectedItem(levelList.get(i)); |
||||||
|
} |
||||||
|
if (type != null) { |
||||||
|
type.setSelectedItem(mapTypeList.get(i).getLocaleString()); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Update. |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public ChartCollection updateBean() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void updateBean(ChartCollection ob) { |
||||||
|
VanChartDrillMapPlot drillMapPlot = DrillMapHelper.getDrillMapPlot(ob); |
||||||
|
if (drillMapPlot != null && detailComps != null) { |
||||||
|
java.util.List<ZoomLevel> levelList = new ArrayList<ZoomLevel>(); |
||||||
|
java.util.List<MapType> mapTypeList = new ArrayList<MapType>(); |
||||||
|
for (Component[] com : detailComps) { |
||||||
|
if (com[1] instanceof UIComboBox && com[2] instanceof UIComboBox) { |
||||||
|
UIComboBox level = (UIComboBox) com[1]; |
||||||
|
UIComboBox type = (UIComboBox) com[2]; |
||||||
|
levelList.add((ZoomLevel) level.getSelectedItem()); |
||||||
|
if (type.getSelectedItem() != null) { |
||||||
|
mapTypeList.add(MapType.parseLocale(type.getSelectedItem().toString())); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
drillMapPlot.setLayerLevelList(levelList); |
||||||
|
drillMapPlot.setLayerMapTypeList(mapTypeList); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected String title4PopupWindow() { |
||||||
|
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Map_Drill_Level"); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,170 @@ |
|||||||
|
package com.fr.van.chart.drillmap.designer.data.comp; |
||||||
|
|
||||||
|
import com.fr.base.chart.chartdata.TopDefinitionProvider; |
||||||
|
import com.fr.chart.chartattr.Chart; |
||||||
|
import com.fr.chart.chartattr.ChartCollection; |
||||||
|
import com.fr.design.dialog.BasicPane; |
||||||
|
import com.fr.design.dialog.MultiTabPane; |
||||||
|
import com.fr.design.gui.frpane.AttributeChangeListener; |
||||||
|
import com.fr.design.mainframe.chart.gui.ChartDataPane; |
||||||
|
import com.fr.general.ComparatorUtils; |
||||||
|
import com.fr.plugin.chart.drillmap.DrillMapHelper; |
||||||
|
import com.fr.plugin.chart.drillmap.VanChartDrillMapPlot; |
||||||
|
import com.fr.plugin.chart.drillmap.data.DrillMapDefinition; |
||||||
|
import com.fr.plugin.chart.map.server.CompatibleGeoJSONTreeHelper; |
||||||
|
import com.fr.plugin.chart.type.MapType; |
||||||
|
import com.fr.van.chart.map.designer.data.MapDataPaneHelper; |
||||||
|
|
||||||
|
import javax.swing.tree.DefaultMutableTreeNode; |
||||||
|
import java.awt.CardLayout; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by Mitisky on 16/6/20. |
||||||
|
* 各层级分别指定的界面 |
||||||
|
*/ |
||||||
|
public class EachLayerDataDefinitionPane extends MultiTabPane<ChartCollection> { |
||||||
|
private AttributeChangeListener listener; |
||||||
|
private ChartDataPane parent; |
||||||
|
private int depth; |
||||||
|
private String oldGeoUrl; |
||||||
|
private List<MapType> oldMapList; |
||||||
|
|
||||||
|
public EachLayerDataDefinitionPane(AttributeChangeListener listener, ChartDataPane parent) { |
||||||
|
this.listener = listener; |
||||||
|
this.parent = parent; |
||||||
|
cardLayout = new CardLayout(); |
||||||
|
} |
||||||
|
|
||||||
|
private void initComponents() { |
||||||
|
super.relayoutWhenListChange(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 当List中的界面变化时, 重新布局 |
||||||
|
*/ |
||||||
|
public void relayoutWhenListChange() { |
||||||
|
} |
||||||
|
|
||||||
|
public List<MapType> getCurrentMapTypeList() { |
||||||
|
return oldMapList; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected List<BasicPane> initPaneList() { |
||||||
|
List<BasicPane> paneList = new ArrayList<BasicPane>(); |
||||||
|
|
||||||
|
for (int i = 1; i < depth + 1; i++) { |
||||||
|
String tile = String.format("%s%d%s", com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Index_Article"), i, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Index_Layer")); |
||||||
|
|
||||||
|
SingleLayerDataDefinitionPane pane = new SingleLayerDataDefinitionPane(tile, this.listener, this.parent); |
||||||
|
pane.setSupportCellData(parent.isSupportCellData()); |
||||||
|
paneList.add(pane); |
||||||
|
} |
||||||
|
|
||||||
|
return paneList; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void populateBean(ChartCollection ob) { |
||||||
|
VanChartDrillMapPlot drillMapPlot = DrillMapHelper.getDrillMapPlot(ob); |
||||||
|
if (drillMapPlot == null) { |
||||||
|
return; |
||||||
|
} |
||||||
|
if (!ComparatorUtils.equals(oldGeoUrl, drillMapPlot.getGeoUrl())) { |
||||||
|
oldGeoUrl = drillMapPlot.getGeoUrl(); |
||||||
|
DefaultMutableTreeNode root = CompatibleGeoJSONTreeHelper.getNodeByJSONPath(oldGeoUrl); |
||||||
|
if (root == null) { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
depth = root.getDepth() + 1;//根节点也算一层
|
||||||
|
paneList = initPaneList(); |
||||||
|
this.removeAll(); |
||||||
|
initComponents(); |
||||||
|
} |
||||||
|
|
||||||
|
oldMapList = drillMapPlot.getLayerMapTypeList(); |
||||||
|
populatePaneList(ob); |
||||||
|
} |
||||||
|
|
||||||
|
private void populatePaneList(ChartCollection chartCollection) { |
||||||
|
for (int i = 0, len = paneList.size(); i < len; i++) { |
||||||
|
BasicPane basicPane = paneList.get(i); |
||||||
|
MapType mapType = oldMapList.get(i); |
||||||
|
if (basicPane instanceof SingleLayerDataDefinitionPane) { |
||||||
|
ChartCollection clone = MapDataPaneHelper.getLayerChartCollection(chartCollection, i, mapType); |
||||||
|
((SingleLayerDataDefinitionPane) basicPane).populateBean(clone); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Update. |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public ChartCollection updateBean() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void updateBean(ChartCollection ob) { |
||||||
|
DrillMapDefinition drillMapDefinition = MapDataPaneHelper.getDrillMapDefinition(ob); |
||||||
|
List<TopDefinitionProvider> eachLayerDataDefinitionList = new ArrayList<TopDefinitionProvider>(); |
||||||
|
for (BasicPane basicPane : paneList) { |
||||||
|
if (basicPane instanceof SingleLayerDataDefinitionPane) { |
||||||
|
ChartCollection temp = new ChartCollection(new Chart()); |
||||||
|
((SingleLayerDataDefinitionPane) basicPane).updateBean(temp); |
||||||
|
eachLayerDataDefinitionList.add(temp.getSelectedChart().getFilterDefinition()); |
||||||
|
} |
||||||
|
} |
||||||
|
drillMapDefinition.setEachLayerDataDefinitionList(eachLayerDataDefinitionList); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 是否是指定类型 |
||||||
|
* |
||||||
|
* @param ob 对象 |
||||||
|
* @return 是否是指定类型 |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public boolean accept(Object ob) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* title应该是一个属性,不只是对话框的标题时用到,与其他组件结合时,也会用得到 |
||||||
|
* |
||||||
|
* @return 绥化狂标题 |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public String title4PopupWindow() { |
||||||
|
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Each_Layer_Data_Special"); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 重置 |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public void reset() { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 设置是否关联单元格数据. |
||||||
|
* |
||||||
|
* @param supportCellData |
||||||
|
*/ |
||||||
|
public void setSupportCellData(boolean supportCellData) { |
||||||
|
if (paneList == null) { |
||||||
|
return; |
||||||
|
} |
||||||
|
for (BasicPane basicPane : paneList) { |
||||||
|
if (basicPane instanceof SingleLayerDataDefinitionPane) { |
||||||
|
((SingleLayerDataDefinitionPane) basicPane).setSupportCellData(supportCellData); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,93 @@ |
|||||||
|
package com.fr.van.chart.drillmap.designer.data.comp; |
||||||
|
|
||||||
|
import com.fr.chart.chartattr.ChartCollection; |
||||||
|
import com.fr.design.beans.FurtherBasicBeanPane; |
||||||
|
import com.fr.design.gui.frpane.AttributeChangeListener; |
||||||
|
import com.fr.design.mainframe.chart.gui.ChartDataPane; |
||||||
|
import com.fr.design.mainframe.chart.gui.data.NormalChartDataPane; |
||||||
|
|
||||||
|
import java.awt.BorderLayout; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by Mitisky on 16/6/21. |
||||||
|
* 各层级分别指定中 单层区域地图数据配置 以及 底层数据汇总方式的界面 |
||||||
|
*/ |
||||||
|
public class SingleLayerDataDefinitionPane extends FurtherBasicBeanPane<ChartCollection> { |
||||||
|
private String title; |
||||||
|
private NormalChartDataPane normalChartDataPane; |
||||||
|
|
||||||
|
//底层数据汇总
|
||||||
|
public SingleLayerDataDefinitionPane(AttributeChangeListener listener, ChartDataPane parent) { |
||||||
|
this(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Bottom_Data_Sum"), listener, parent); |
||||||
|
} |
||||||
|
|
||||||
|
public SingleLayerDataDefinitionPane(String title, AttributeChangeListener listener, ChartDataPane parent) { |
||||||
|
this.title = title; |
||||||
|
normalChartDataPane = new NormalChartDataPane(listener, parent); |
||||||
|
|
||||||
|
this.setLayout(new BorderLayout()); |
||||||
|
this.add(normalChartDataPane, BorderLayout.CENTER); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 设置是否关联单元格数据. |
||||||
|
* |
||||||
|
* @param supportCellData |
||||||
|
*/ |
||||||
|
public void setSupportCellData(boolean supportCellData) { |
||||||
|
normalChartDataPane.setSupportCellData(supportCellData); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 是否是指定类型 |
||||||
|
* |
||||||
|
* @param ob 对象 |
||||||
|
* @return 是否是指定类型 |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public boolean accept(Object ob) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* title应该是一个属性,不只是对话框的标题时用到,与其他组件结合时,也会用得到 |
||||||
|
* |
||||||
|
* @return 绥化狂标题 |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public String title4PopupWindow() { |
||||||
|
return title; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 重置 |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public void reset() { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Populate. |
||||||
|
* |
||||||
|
* @param ob |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public void populateBean(ChartCollection ob) { |
||||||
|
normalChartDataPane.populate(ob); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void updateBean(ChartCollection ob) { |
||||||
|
normalChartDataPane.update(ob); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Update. |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public ChartCollection updateBean() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,84 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data; |
||||||
|
|
||||||
|
import com.fr.chart.chartattr.ChartCollection; |
||||||
|
import com.fr.design.gui.frpane.AttributeChangeListener; |
||||||
|
import com.fr.design.mainframe.chart.gui.ChartDataPane; |
||||||
|
import com.fr.design.mainframe.chart.gui.data.DataContentsPane; |
||||||
|
import com.fr.design.mainframe.chart.gui.data.NormalChartDataPane; |
||||||
|
import com.fr.van.chart.map.designer.VanMapAreaPointAndLineGroupPane; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by Mitisky on 16/5/17. |
||||||
|
*/ |
||||||
|
public class CustomMapChartDataContentsPane extends DataContentsPane { |
||||||
|
private NormalChartDataPane areaMapChartDataPane; |
||||||
|
private NormalChartDataPane pointMapChartDataPane; |
||||||
|
private NormalChartDataPane lineMapChartDataPane; |
||||||
|
|
||||||
|
private AttributeChangeListener listener; |
||||||
|
private ChartDataPane parent; |
||||||
|
|
||||||
|
public CustomMapChartDataContentsPane(AttributeChangeListener listener, ChartDataPane parent) { |
||||||
|
this.listener = listener; |
||||||
|
this.parent = parent; |
||||||
|
initAll(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setSupportCellData(boolean supportCellData) { |
||||||
|
areaMapChartDataPane.setSupportCellData(supportCellData); |
||||||
|
pointMapChartDataPane.setSupportCellData(supportCellData); |
||||||
|
lineMapChartDataPane.setSupportCellData(supportCellData); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void populate(ChartCollection collection) { |
||||||
|
populateAreaMap(collection); |
||||||
|
populatePointMap(collection); |
||||||
|
populateLineMap(collection); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void update(ChartCollection collection) { |
||||||
|
updatePointMap(collection); |
||||||
|
updateAreaMap(collection); |
||||||
|
updateLineMap(collection); |
||||||
|
} |
||||||
|
|
||||||
|
public void populatePointMap(ChartCollection collection) { |
||||||
|
pointMapChartDataPane.populate(collection); |
||||||
|
} |
||||||
|
|
||||||
|
public void populateLineMap(ChartCollection collection) { |
||||||
|
lineMapChartDataPane.populate(collection); |
||||||
|
} |
||||||
|
|
||||||
|
public void updatePointMap(ChartCollection collection) { |
||||||
|
pointMapChartDataPane.update(collection); |
||||||
|
} |
||||||
|
|
||||||
|
public void populateAreaMap(ChartCollection collection) { |
||||||
|
areaMapChartDataPane.populate(collection); |
||||||
|
} |
||||||
|
|
||||||
|
public void updateAreaMap(ChartCollection collection) { |
||||||
|
areaMapChartDataPane.update(collection); |
||||||
|
} |
||||||
|
|
||||||
|
public void updateLineMap(ChartCollection collection) { |
||||||
|
lineMapChartDataPane.update(collection); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected JPanel createContentPane() { |
||||||
|
areaMapChartDataPane = new NormalChartDataPane(listener, parent); |
||||||
|
pointMapChartDataPane = new NormalChartDataPane(listener, parent); |
||||||
|
lineMapChartDataPane = new NormalChartDataPane(listener, parent); |
||||||
|
|
||||||
|
return new VanMapAreaPointAndLineGroupPane(areaMapChartDataPane, pointMapChartDataPane, lineMapChartDataPane); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,177 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data; |
||||||
|
|
||||||
|
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.log.FineLoggerFactory; |
||||||
|
import com.fr.plugin.chart.drillmap.VanChartDrillMapPlot; |
||||||
|
import com.fr.plugin.chart.drillmap.data.DrillMapDefinition; |
||||||
|
import com.fr.plugin.chart.map.VanChartMapPlot; |
||||||
|
import com.fr.plugin.chart.map.data.VanMapDefinition; |
||||||
|
import com.fr.plugin.chart.type.MapType; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by shine on 2017/8/8. |
||||||
|
*/ |
||||||
|
public class MapDataPaneHelper { |
||||||
|
public static ChartCollection getPointMapChartCollection(ChartCollection chartCollection) { |
||||||
|
try { |
||||||
|
ChartCollection cloneCollection = (ChartCollection) chartCollection.clone(); |
||||||
|
Chart chart = cloneCollection.getSelectedChart(); |
||||||
|
|
||||||
|
TopDefinitionProvider definition = chart.getFilterDefinition(); |
||||||
|
if (definition != null && definition instanceof VanMapDefinition) { |
||||||
|
chart.setFilterDefinition(((VanMapDefinition) definition).getPointDefinition()); |
||||||
|
} |
||||||
|
|
||||||
|
Plot plot = chart.getPlot(); |
||||||
|
if (plot != null && plot instanceof VanChartMapPlot) { |
||||||
|
((VanChartMapPlot) plot).setMapType(MapType.POINT); |
||||||
|
} |
||||||
|
return cloneCollection; |
||||||
|
} catch (Exception e) { |
||||||
|
FineLoggerFactory.getLogger().error(e.getMessage(), e); |
||||||
|
return chartCollection; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public static ChartCollection getLineMapChartCollection(ChartCollection chartCollection) { |
||||||
|
try { |
||||||
|
ChartCollection cloneCollection = (ChartCollection) chartCollection.clone(); |
||||||
|
Chart chart = cloneCollection.getSelectedChart(); |
||||||
|
|
||||||
|
TopDefinitionProvider definition = chart.getFilterDefinition(); |
||||||
|
if (definition != null && definition instanceof VanMapDefinition) { |
||||||
|
chart.setFilterDefinition(((VanMapDefinition) definition).getLineDefinition()); |
||||||
|
} |
||||||
|
|
||||||
|
Plot plot = chart.getPlot(); |
||||||
|
if (plot != null && plot instanceof VanChartMapPlot) { |
||||||
|
((VanChartMapPlot) plot).setMapType(MapType.LINE); |
||||||
|
} |
||||||
|
return cloneCollection; |
||||||
|
} catch (Exception e) { |
||||||
|
FineLoggerFactory.getLogger().error(e.getMessage(), e); |
||||||
|
return chartCollection; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static ChartCollection getAreaMapChartCollection(ChartCollection chartCollection) { |
||||||
|
try { |
||||||
|
ChartCollection cloneCollection = (ChartCollection) chartCollection.clone(); |
||||||
|
Chart chart = cloneCollection.getSelectedChart(); |
||||||
|
|
||||||
|
TopDefinitionProvider definition = chart.getFilterDefinition(); |
||||||
|
if (definition != null && definition instanceof VanMapDefinition) { |
||||||
|
chart.setFilterDefinition(((VanMapDefinition) definition).getAreaDefinition()); |
||||||
|
} |
||||||
|
|
||||||
|
Plot plot = chart.getPlot(); |
||||||
|
if (plot != null && plot instanceof VanChartMapPlot) { |
||||||
|
((VanChartMapPlot) plot).setMapType(MapType.AREA); |
||||||
|
} |
||||||
|
return cloneCollection; |
||||||
|
} catch (Exception e) { |
||||||
|
FineLoggerFactory.getLogger().error(e.getMessage(), e); |
||||||
|
return chartCollection; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public static ChartCollection getBottomDataDrillMapChartCollection(ChartCollection chartCollection) { |
||||||
|
try { |
||||||
|
ChartCollection cloneCollection = (ChartCollection) chartCollection.clone(); |
||||||
|
Chart chart = cloneCollection.getSelectedChart(); |
||||||
|
|
||||||
|
TopDefinitionProvider definition = chart.getFilterDefinition(); |
||||||
|
if (definition != null && definition instanceof DrillMapDefinition) { |
||||||
|
chart.setFilterDefinition(((DrillMapDefinition) definition).getBottomDataDefinition()); |
||||||
|
} |
||||||
|
|
||||||
|
Plot plot = chart.getPlot(); |
||||||
|
if (plot != null && plot instanceof VanChartDrillMapPlot) { |
||||||
|
List<MapType> list = ((VanChartDrillMapPlot) plot).getLayerMapTypeList(); |
||||||
|
MapType mapType = (list != null && list.size() > 0) ? list.get(list.size() - 1) : MapType.AREA; |
||||||
|
((VanChartMapPlot) plot).setMapType(mapType); |
||||||
|
} |
||||||
|
return cloneCollection; |
||||||
|
} catch (Exception e) { |
||||||
|
FineLoggerFactory.getLogger().error(e.getMessage(), e); |
||||||
|
return chartCollection; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public static ChartCollection getLayerChartCollection(ChartCollection chartCollection, int level, MapType mapType) { |
||||||
|
if (mapType == null) { |
||||||
|
mapType = MapType.AREA; |
||||||
|
} |
||||||
|
try { |
||||||
|
ChartCollection cloneCollection = (ChartCollection) chartCollection.clone(); |
||||||
|
Chart chart = cloneCollection.getSelectedChart(); |
||||||
|
|
||||||
|
TopDefinitionProvider definition = chart.getFilterDefinition(); |
||||||
|
if (definition != null && definition instanceof DrillMapDefinition) { |
||||||
|
List<TopDefinitionProvider> list = ((DrillMapDefinition) definition).getEachLayerDataDefinitionList(); |
||||||
|
if (list.size() > level) { |
||||||
|
chart.setFilterDefinition(list.get(level)); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
Plot plot = chart.getPlot(); |
||||||
|
if (plot != null && plot instanceof VanChartMapPlot) { |
||||||
|
((VanChartMapPlot) plot).setMapType(mapType); |
||||||
|
} |
||||||
|
return cloneCollection; |
||||||
|
} catch (Exception e) { |
||||||
|
FineLoggerFactory.getLogger().error(e.getMessage(), e); |
||||||
|
return chartCollection; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static boolean isFromBottomData(ChartCollection chartCollection) { |
||||||
|
DrillMapDefinition drillMapDefinition = getDrillMapDefinition(chartCollection); |
||||||
|
return drillMapDefinition == null || drillMapDefinition.isFromBottomData(); |
||||||
|
} |
||||||
|
|
||||||
|
public static DrillMapDefinition getDrillMapDefinition(ChartCollection chartCollection) { |
||||||
|
if (chartCollection != null) { |
||||||
|
Chart chart = chartCollection.getSelectedChart(); |
||||||
|
if (chart != null) { |
||||||
|
TopDefinitionProvider definitionProvider = chart.getFilterDefinition(); |
||||||
|
if (definitionProvider instanceof DrillMapDefinition) { |
||||||
|
return (DrillMapDefinition) definitionProvider; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
public static List<MapType> getDrillMapLayerMapTypeList(ChartCollection chartCollection) { |
||||||
|
if (chartCollection != null) { |
||||||
|
Chart chart = chartCollection.getSelectedChart(); |
||||||
|
if (chart != null) { |
||||||
|
Plot plot = chart.getPlot(); |
||||||
|
if (plot instanceof VanChartDrillMapPlot) { |
||||||
|
return ((VanChartDrillMapPlot) plot).getLayerMapTypeList(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
public static MapType getPlotMapType(ChartCollection chartCollection) { |
||||||
|
Plot plot = chartCollection.getSelectedChart().getPlot(); |
||||||
|
return getPlotMapType(plot); |
||||||
|
} |
||||||
|
|
||||||
|
public static MapType getPlotMapType(Plot plot) { |
||||||
|
if (plot != null && plot instanceof VanChartMapPlot) { |
||||||
|
return ((VanChartMapPlot) plot).getMapType(); |
||||||
|
} |
||||||
|
return MapType.AREA; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,121 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data; |
||||||
|
|
||||||
|
import com.fr.chart.chartattr.ChartCollection; |
||||||
|
import com.fr.design.gui.frpane.AttributeChangeListener; |
||||||
|
import com.fr.design.mainframe.chart.gui.ChartDataPane; |
||||||
|
import com.fr.design.mainframe.chart.gui.data.NormalChartDataPane; |
||||||
|
import com.fr.plugin.chart.map.data.VanMapDefinition; |
||||||
|
import com.fr.plugin.chart.type.MapType; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by Mitisky on 16/5/16. |
||||||
|
*/ |
||||||
|
public class VanChartMapDataPane extends ChartDataPane { |
||||||
|
MapType mapType = MapType.AREA; |
||||||
|
|
||||||
|
public VanChartMapDataPane(AttributeChangeListener listener) { |
||||||
|
super(listener); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected JPanel createContentPane() { |
||||||
|
contentsPane = new NormalChartDataPane(listener, VanChartMapDataPane.this); |
||||||
|
return contentsPane; |
||||||
|
} |
||||||
|
|
||||||
|
protected void repeatLayout(ChartCollection collection) { |
||||||
|
if (contentsPane != null) { |
||||||
|
this.remove(contentsPane); |
||||||
|
} |
||||||
|
this.setLayout(new BorderLayout(0, 0)); |
||||||
|
|
||||||
|
switch (mapType) { |
||||||
|
case CUSTOM: |
||||||
|
contentsPane = new CustomMapChartDataContentsPane(listener, VanChartMapDataPane.this); |
||||||
|
break; |
||||||
|
default: |
||||||
|
contentsPane = new NormalChartDataPane(listener, VanChartMapDataPane.this); |
||||||
|
break; |
||||||
|
} |
||||||
|
|
||||||
|
contentsPane.setSupportCellData(isSupportCellData()); |
||||||
|
|
||||||
|
this.add(contentsPane, BorderLayout.CENTER); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 更新界面 数据内容 |
||||||
|
*/ |
||||||
|
public void populate(ChartCollection collection) { |
||||||
|
mapType = MapDataPaneHelper.getPlotMapType(collection); |
||||||
|
|
||||||
|
repeatLayout(collection); |
||||||
|
|
||||||
|
switch (mapType) { |
||||||
|
case AREA: |
||||||
|
ChartCollection areaClone = MapDataPaneHelper.getAreaMapChartCollection(collection); |
||||||
|
contentsPane.populate(areaClone); |
||||||
|
break; |
||||||
|
case POINT: |
||||||
|
ChartCollection pointClone = MapDataPaneHelper.getPointMapChartCollection(collection); |
||||||
|
contentsPane.populate(pointClone); |
||||||
|
break; |
||||||
|
case LINE: |
||||||
|
ChartCollection lineClone = MapDataPaneHelper.getLineMapChartCollection(collection); |
||||||
|
contentsPane.populate(lineClone); |
||||||
|
break; |
||||||
|
case CUSTOM: |
||||||
|
ChartCollection areaClone1 = MapDataPaneHelper.getAreaMapChartCollection(collection); |
||||||
|
ChartCollection pointClone1 = MapDataPaneHelper.getPointMapChartCollection(collection); |
||||||
|
ChartCollection lineClone1 = MapDataPaneHelper.getLineMapChartCollection(collection); |
||||||
|
((CustomMapChartDataContentsPane) contentsPane).populateAreaMap(areaClone1); |
||||||
|
((CustomMapChartDataContentsPane) contentsPane).populatePointMap(pointClone1); |
||||||
|
((CustomMapChartDataContentsPane) contentsPane).populateLineMap(lineClone1); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 保存 数据界面内容 |
||||||
|
*/ |
||||||
|
public void update(ChartCollection collection) { |
||||||
|
if (contentsPane != null) { |
||||||
|
VanMapDefinition vanMapDefinition = new VanMapDefinition(); |
||||||
|
|
||||||
|
ChartCollection pointClone = MapDataPaneHelper.getPointMapChartCollection(collection); |
||||||
|
ChartCollection areaClone = MapDataPaneHelper.getAreaMapChartCollection(collection); |
||||||
|
ChartCollection lineClone = MapDataPaneHelper.getLineMapChartCollection(collection); |
||||||
|
|
||||||
|
switch (mapType) { |
||||||
|
case AREA: |
||||||
|
contentsPane.update(areaClone); |
||||||
|
pointClone.getSelectedChart().setFilterDefinition(null); |
||||||
|
lineClone.getSelectedChart().setFilterDefinition(null); |
||||||
|
break; |
||||||
|
case POINT: |
||||||
|
contentsPane.update(pointClone); |
||||||
|
areaClone.getSelectedChart().setFilterDefinition(null); |
||||||
|
lineClone.getSelectedChart().setFilterDefinition(null); |
||||||
|
break; |
||||||
|
case LINE: |
||||||
|
contentsPane.update(lineClone); |
||||||
|
areaClone.getSelectedChart().setFilterDefinition(null); |
||||||
|
pointClone.getSelectedChart().setFilterDefinition(null); |
||||||
|
break; |
||||||
|
case CUSTOM: |
||||||
|
((CustomMapChartDataContentsPane) contentsPane).updateAreaMap(areaClone); |
||||||
|
((CustomMapChartDataContentsPane) contentsPane).updatePointMap(pointClone); |
||||||
|
((CustomMapChartDataContentsPane) contentsPane).updateLineMap(lineClone); |
||||||
|
break; |
||||||
|
} |
||||||
|
vanMapDefinition.setAreaDefinition(areaClone.getSelectedChart().getFilterDefinition()); |
||||||
|
vanMapDefinition.setPointDefinition(pointClone.getSelectedChart().getFilterDefinition()); |
||||||
|
vanMapDefinition.setLineDefinition(lineClone.getSelectedChart().getFilterDefinition()); |
||||||
|
|
||||||
|
collection.getSelectedChart().setFilterDefinition(vanMapDefinition); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,34 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.component; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by hufan on 2016/12/23. |
||||||
|
*/ |
||||||
|
public class LongitudeLatitudeAndArea { |
||||||
|
private Object longitude; |
||||||
|
private Object latitude; |
||||||
|
private Object area; |
||||||
|
|
||||||
|
public Object getLongitude() { |
||||||
|
return longitude; |
||||||
|
} |
||||||
|
|
||||||
|
public void setLongitude(Object longitude) { |
||||||
|
this.longitude = longitude; |
||||||
|
} |
||||||
|
|
||||||
|
public Object getLatitude() { |
||||||
|
return latitude; |
||||||
|
} |
||||||
|
|
||||||
|
public void setLatitude(Object latitude) { |
||||||
|
this.latitude = latitude; |
||||||
|
} |
||||||
|
|
||||||
|
public Object getArea() { |
||||||
|
return area; |
||||||
|
} |
||||||
|
|
||||||
|
public void setArea(Object area) { |
||||||
|
this.area = area; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.component; |
||||||
|
|
||||||
|
import com.fr.chart.chartdata.MoreNameCDDefinition; |
||||||
|
import com.fr.design.mainframe.chart.gui.data.table.SeriesNameUseFieldNamePane; |
||||||
|
import com.fr.plugin.chart.map.data.VanMapMoreNameCDDefinition; |
||||||
|
|
||||||
|
import java.awt.Component; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by Mitisky on 16/5/17. |
||||||
|
*/ |
||||||
|
public class SeriesNameUseFieldNamePaneWithOutFilter extends SeriesNameUseFieldNamePane { |
||||||
|
|
||||||
|
@Override |
||||||
|
protected Component[][] getUseComponent() { |
||||||
|
return getUseComponentWithOutFilter(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected MoreNameCDDefinition createMoreNameCDDefinition() { |
||||||
|
return new VanMapMoreNameCDDefinition(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,29 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.component; |
||||||
|
|
||||||
|
import com.fr.chart.chartdata.OneValueCDDefinition; |
||||||
|
import com.fr.design.gui.ilable.UILabel; |
||||||
|
import com.fr.design.mainframe.chart.gui.data.table.SeriesNameUseFieldValuePane; |
||||||
|
import com.fr.plugin.chart.map.data.VanMapOneValueCDDefinition; |
||||||
|
|
||||||
|
import java.awt.Component; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by Mitisky on 16/5/16. |
||||||
|
*/ |
||||||
|
public class SeriesNameUseFieldValuePaneWithOutFilter extends SeriesNameUseFieldValuePane { |
||||||
|
|
||||||
|
@Override |
||||||
|
protected Component[][] getUseComponent(UILabel Label1, UILabel Label2, UILabel Label3) { |
||||||
|
return getUseComponentWithOutFilter(Label1, Label2, Label3); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected Component[][] getUseComponentWithOutSummary(UILabel Label1, UILabel Label2, UILabel Label3) { |
||||||
|
return getUseComponentWithOutFilterAndSummary(Label1, Label2, Label3); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected OneValueCDDefinition createOneValueCDDefinition() { |
||||||
|
return new VanMapOneValueCDDefinition(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,40 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.component; |
||||||
|
|
||||||
|
import com.fr.chart.chartattr.Plot; |
||||||
|
import com.fr.design.mainframe.chart.gui.ChartDataPane; |
||||||
|
import com.fr.design.mainframe.chart.gui.data.table.SeriesNameUseFieldNamePane; |
||||||
|
import com.fr.design.mainframe.chart.gui.data.table.SeriesNameUseFieldValuePane; |
||||||
|
import com.fr.design.mainframe.chart.gui.data.table.SeriesTypeUseComboxPane; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by Mitisky on 16/5/16. |
||||||
|
*/ |
||||||
|
public class SeriesTypeUseComboxPaneWithOutFilter extends SeriesTypeUseComboxPane { |
||||||
|
|
||||||
|
public SeriesTypeUseComboxPaneWithOutFilter(ChartDataPane parent, Plot initplot) { |
||||||
|
super(parent, initplot); |
||||||
|
} |
||||||
|
|
||||||
|
protected void initLayout() { |
||||||
|
super.initLayout(); |
||||||
|
this.add(new JPanel(), BorderLayout.SOUTH); |
||||||
|
} |
||||||
|
|
||||||
|
protected void initComponents() { |
||||||
|
super.initComponents(); |
||||||
|
this.setSelectedIndex(1); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected SeriesNameUseFieldValuePane createValuePane() { |
||||||
|
return new SeriesNameUseFieldValuePaneWithOutFilter(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected SeriesNameUseFieldNamePane createNamePane() { |
||||||
|
return new SeriesNameUseFieldNamePaneWithOutFilter(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,14 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.component.report; |
||||||
|
|
||||||
|
import com.fr.plugin.chart.map.data.VanMapReportDefinition; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by hufan on 2016/12/21. |
||||||
|
*/ |
||||||
|
public abstract class AbstractLongLatAreaPane extends JPanel { |
||||||
|
public abstract void populate(VanMapReportDefinition vanMapReportDefinition); |
||||||
|
|
||||||
|
public abstract void update(VanMapReportDefinition vanMapReportDefinition); |
||||||
|
} |
@ -0,0 +1,64 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.component.report; |
||||||
|
|
||||||
|
import com.fr.chart.chartattr.ChartCollection; |
||||||
|
import com.fr.design.formula.TinyFormulaPane; |
||||||
|
import com.fr.design.gui.ilable.BoldFontTextLabel; |
||||||
|
import com.fr.design.layout.TableLayout; |
||||||
|
import com.fr.design.layout.TableLayoutHelper; |
||||||
|
import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane; |
||||||
|
import com.fr.van.chart.map.designer.data.component.LongitudeLatitudeAndArea; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
import java.awt.Component; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by hufan on 2016/12/21. |
||||||
|
*/ |
||||||
|
public class AreaPane extends AbstractReportDataContentPane { |
||||||
|
protected TinyFormulaPane areaName; |
||||||
|
|
||||||
|
public AreaPane() { |
||||||
|
JPanel panel = createContentPane(); |
||||||
|
this.setLayout(new BorderLayout()); |
||||||
|
this.add(panel, BorderLayout.CENTER); |
||||||
|
} |
||||||
|
|
||||||
|
protected JPanel createContentPane() { |
||||||
|
areaName = new TinyFormulaPane(); |
||||||
|
double p = TableLayout.PREFERRED; |
||||||
|
double f = TableLayout.FILL; |
||||||
|
double[] columnSize = {f, COMPONENT_WIDTH}; |
||||||
|
double[] rowSize = {p}; |
||||||
|
Component[][] components = getComponent(); |
||||||
|
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); |
||||||
|
} |
||||||
|
|
||||||
|
protected Component[][] getComponent() { |
||||||
|
return new Component[][]{ |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Area_Name")), areaName} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected String[] columnNames() { |
||||||
|
return new String[0]; |
||||||
|
} |
||||||
|
|
||||||
|
public void populate(LongitudeLatitudeAndArea longLatArea) { |
||||||
|
if (longLatArea.getArea() != null) { |
||||||
|
areaName.getUITextField().setText(longLatArea.getArea().toString()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public LongitudeLatitudeAndArea update() { |
||||||
|
LongitudeLatitudeAndArea longLatArea = new LongitudeLatitudeAndArea(); |
||||||
|
longLatArea.setArea(canBeFormula(areaName.getUITextField().getText())); |
||||||
|
return longLatArea; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void populateBean(ChartCollection ob) { |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,71 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.component.report; |
||||||
|
|
||||||
|
import com.fr.design.gui.ilable.BoldFontTextLabel; |
||||||
|
import com.fr.plugin.chart.map.data.VanMapReportDefinition; |
||||||
|
import com.fr.van.chart.map.designer.data.component.LongitudeLatitudeAndArea; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
import java.awt.Component; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by hufan on 2016/12/22. |
||||||
|
*/ |
||||||
|
public class LineMapAreaPane extends PointMapAreaPane { |
||||||
|
private static final int V_GAP = 10; |
||||||
|
protected AreaPane endAreaPane; |
||||||
|
|
||||||
|
protected JPanel createContentPane() { |
||||||
|
initAreaPane(); |
||||||
|
initEndAreaPane(); |
||||||
|
|
||||||
|
JPanel content = new JPanel(new BorderLayout(0, V_GAP)); |
||||||
|
content.add(areaPane, BorderLayout.NORTH); |
||||||
|
content.add(endAreaPane, BorderLayout.CENTER); |
||||||
|
return content; |
||||||
|
} |
||||||
|
|
||||||
|
protected void initEndAreaPane() { |
||||||
|
endAreaPane = new AreaPane() { |
||||||
|
protected Component[][] getComponent() { |
||||||
|
return new Component[][]{ |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_End_Area_Name")), areaName} |
||||||
|
}; |
||||||
|
} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected void initAreaPane() { |
||||||
|
areaPane = new AreaPane() { |
||||||
|
protected Component[][] getComponent() { |
||||||
|
return new Component[][]{ |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Start_Area_Name")), areaName} |
||||||
|
}; |
||||||
|
} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void populate(VanMapReportDefinition vanMapReportDefinition) { |
||||||
|
super.populate(vanMapReportDefinition); |
||||||
|
|
||||||
|
LongitudeLatitudeAndArea endLongLatArea = new LongitudeLatitudeAndArea(); |
||||||
|
endLongLatArea.setArea(vanMapReportDefinition.getEndAreaName()); |
||||||
|
endLongLatArea.setLongitude(vanMapReportDefinition.getEndLongitude()); |
||||||
|
endLongLatArea.setLatitude(vanMapReportDefinition.getEndLatitude()); |
||||||
|
|
||||||
|
endAreaPane.populate(endLongLatArea); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void update(VanMapReportDefinition vanMapReportDefinition) { |
||||||
|
super.update(vanMapReportDefinition); |
||||||
|
|
||||||
|
LongitudeLatitudeAndArea endLongLatArea = endAreaPane.update(); |
||||||
|
vanMapReportDefinition.setEndAreaName(endLongLatArea.getArea() == null ? null : endLongLatArea.getArea().toString()); |
||||||
|
vanMapReportDefinition.setEndLongitude(endLongLatArea.getLongitude() == null ? null : endLongLatArea.getLongitude().toString()); |
||||||
|
vanMapReportDefinition.setEndLatitude(endLongLatArea.getLatitude() == null ? null : endLongLatArea.getLatitude().toString()); |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,36 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.component.report; |
||||||
|
|
||||||
|
|
||||||
|
import com.fr.design.gui.ilable.BoldFontTextLabel; |
||||||
|
|
||||||
|
import java.awt.Component; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by hufan on 2016/12/22. |
||||||
|
*/ |
||||||
|
public class LineMapLongLatAreaPane extends LineMapAreaPane { |
||||||
|
|
||||||
|
protected void initEndAreaPane() { |
||||||
|
endAreaPane = new LongLatAreaPane() { |
||||||
|
protected Component[][] getComponent() { |
||||||
|
return new Component[][]{ |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_End_Longitude")), longitude}, |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_End_Latitude")), latitude}, |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_End_Area_Name")), areaName} |
||||||
|
}; |
||||||
|
} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
protected void initAreaPane() { |
||||||
|
areaPane = new LongLatAreaPane() { |
||||||
|
protected Component[][] getComponent() { |
||||||
|
return new Component[][]{ |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Start_Longitude")), longitude}, |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Start_Latitude")), latitude}, |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Start_Area_Name")), areaName} |
||||||
|
}; |
||||||
|
} |
||||||
|
}; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,77 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.component.report; |
||||||
|
|
||||||
|
import com.fr.chart.chartattr.ChartCollection; |
||||||
|
import com.fr.design.formula.TinyFormulaPane; |
||||||
|
import com.fr.design.gui.ilable.BoldFontTextLabel; |
||||||
|
import com.fr.design.layout.TableLayout; |
||||||
|
import com.fr.design.layout.TableLayoutHelper; |
||||||
|
import com.fr.van.chart.map.designer.data.component.LongitudeLatitudeAndArea; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
import java.awt.Component; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by hufan on 2016/12/21. |
||||||
|
*/ |
||||||
|
public class LongLatAreaPane extends AreaPane { |
||||||
|
protected TinyFormulaPane longitude; |
||||||
|
protected TinyFormulaPane latitude; |
||||||
|
|
||||||
|
public LongLatAreaPane() { |
||||||
|
JPanel panel = createContentPane(); |
||||||
|
this.setLayout(new BorderLayout()); |
||||||
|
this.add(panel, BorderLayout.CENTER); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected JPanel createContentPane() { |
||||||
|
areaName = new TinyFormulaPane(); |
||||||
|
longitude = new TinyFormulaPane(); |
||||||
|
latitude = new TinyFormulaPane(); |
||||||
|
double p = TableLayout.PREFERRED; |
||||||
|
double f = TableLayout.FILL; |
||||||
|
double[] columnSize = {f, COMPONENT_WIDTH}; |
||||||
|
double[] rowSize = {p, p, p}; |
||||||
|
Component[][] components = getComponent(); |
||||||
|
return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 12, 6); |
||||||
|
} |
||||||
|
|
||||||
|
protected Component[][] getComponent() { |
||||||
|
return new Component[][]{ |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Longitude")), longitude}, |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Latitude")), latitude}, |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Area_Name")), areaName} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void populateBean(ChartCollection ob) { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected String[] columnNames() { |
||||||
|
return new String[0]; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void populate(LongitudeLatitudeAndArea longLatArea) { |
||||||
|
super.populate(longLatArea); |
||||||
|
if (longLatArea.getLongitude() != null) { |
||||||
|
longitude.getUITextField().setText(longLatArea.getLongitude().toString()); |
||||||
|
} |
||||||
|
if (longLatArea.getLatitude() != null) { |
||||||
|
latitude.getUITextField().setText(longLatArea.getLatitude().toString()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public LongitudeLatitudeAndArea update() { |
||||||
|
LongitudeLatitudeAndArea longLatArea = super.update(); |
||||||
|
longLatArea.setLongitude(canBeFormula(longitude.getUITextField().getText())); |
||||||
|
longLatArea.setLatitude(canBeFormula(latitude.getUITextField().getText())); |
||||||
|
return longLatArea; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,48 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.component.report; |
||||||
|
|
||||||
|
import com.fr.plugin.chart.map.data.VanMapReportDefinition; |
||||||
|
import com.fr.van.chart.map.designer.data.component.LongitudeLatitudeAndArea; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by hufan on 2016/12/23. |
||||||
|
*/ |
||||||
|
public class PointMapAreaPane extends AbstractLongLatAreaPane { |
||||||
|
protected AreaPane areaPane; |
||||||
|
|
||||||
|
public PointMapAreaPane() { |
||||||
|
JPanel contentPane = createContentPane(); |
||||||
|
this.setLayout(new BorderLayout()); |
||||||
|
this.add(contentPane, BorderLayout.CENTER); |
||||||
|
} |
||||||
|
|
||||||
|
protected JPanel createContentPane() { |
||||||
|
initAreaPane(); |
||||||
|
JPanel content = new JPanel(new BorderLayout()); |
||||||
|
content.add(areaPane, BorderLayout.CENTER); |
||||||
|
return content; |
||||||
|
} |
||||||
|
|
||||||
|
protected void initAreaPane() { |
||||||
|
areaPane = new AreaPane(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void populate(VanMapReportDefinition vanMapReportDefinition) { |
||||||
|
LongitudeLatitudeAndArea longLatArea = new LongitudeLatitudeAndArea(); |
||||||
|
longLatArea.setArea(vanMapReportDefinition.getCategoryName()); |
||||||
|
longLatArea.setLongitude(vanMapReportDefinition.getLongitude()); |
||||||
|
longLatArea.setLatitude(vanMapReportDefinition.getLatitude()); |
||||||
|
areaPane.populate(longLatArea); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void update(VanMapReportDefinition vanMapReportDefinition) { |
||||||
|
LongitudeLatitudeAndArea longLatArea = areaPane.update(); |
||||||
|
vanMapReportDefinition.setCategoryName(longLatArea.getArea() == null ? null : longLatArea.getArea().toString()); |
||||||
|
vanMapReportDefinition.setLongitude(longLatArea.getLongitude() == null ? null : longLatArea.getLongitude().toString()); |
||||||
|
vanMapReportDefinition.setLatitude(longLatArea.getLatitude() == null ? null : longLatArea.getLatitude().toString()); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,14 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.component.report; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by hufan on 2016/12/23. |
||||||
|
*/ |
||||||
|
public class PointMapLongLatAreaPane extends PointMapAreaPane { |
||||||
|
public PointMapLongLatAreaPane() { |
||||||
|
super(); |
||||||
|
} |
||||||
|
|
||||||
|
protected void initAreaPane() { |
||||||
|
areaPane = new LongLatAreaPane(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,26 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.component.table; |
||||||
|
|
||||||
|
import com.fr.plugin.chart.map.data.VanMapTableDefinitionProvider; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by hufan on 2016/12/21. |
||||||
|
*/ |
||||||
|
public abstract class AbstractLongLatAreaPane extends JPanel { |
||||||
|
|
||||||
|
public abstract boolean isSelectedItem(); |
||||||
|
|
||||||
|
public abstract void populate(VanMapTableDefinitionProvider mapTableDefinitionProvider); |
||||||
|
|
||||||
|
public abstract void update(VanMapTableDefinitionProvider mapTableDefinitionProvider); |
||||||
|
|
||||||
|
public abstract void refreshBoxListWithSelectTableData(List list); |
||||||
|
|
||||||
|
public abstract void checkBoxUse(boolean hasUse); |
||||||
|
|
||||||
|
public abstract void clearAllBoxList(); |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,104 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.component.table; |
||||||
|
|
||||||
|
import com.fr.chart.chartattr.ChartCollection; |
||||||
|
import com.fr.design.gui.icombobox.UIComboBox; |
||||||
|
import com.fr.design.gui.ilable.BoldFontTextLabel; |
||||||
|
import com.fr.design.layout.TableLayout; |
||||||
|
import com.fr.design.layout.TableLayoutHelper; |
||||||
|
import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane; |
||||||
|
import com.fr.van.chart.map.designer.data.component.LongitudeLatitudeAndArea; |
||||||
|
import com.fr.van.chart.map.designer.data.contentpane.table.VanPointMapPlotTableDataContentPane; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
import java.awt.Component; |
||||||
|
import java.awt.event.ItemEvent; |
||||||
|
import java.awt.event.ItemListener; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by hufan on 2016/12/21. |
||||||
|
*/ |
||||||
|
public class AreaPane extends AbstractTableDataContentPane { |
||||||
|
protected VanPointMapPlotTableDataContentPane.LongLatAreaTableComboPane listener; |
||||||
|
protected UIComboBox areaNameCom; |
||||||
|
|
||||||
|
public AreaPane(VanPointMapPlotTableDataContentPane.LongLatAreaTableComboPane parentPane) { |
||||||
|
this.listener = parentPane; |
||||||
|
this.setLayout(new BorderLayout()); |
||||||
|
JPanel panel = createAreaNamePane(); |
||||||
|
this.add(panel, BorderLayout.CENTER); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void updateBean(ChartCollection ob) { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
public void checkBoxUse(boolean hasUse) { |
||||||
|
areaNameCom.setEnabled(hasUse); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
protected JPanel createAreaNamePane() { |
||||||
|
initAreaNameCom(); |
||||||
|
double p = TableLayout.PREFERRED; |
||||||
|
double f = TableLayout.FILL; |
||||||
|
double[] columnSize = {f, COMPONENT_WIDTH}; |
||||||
|
double[] rowSize = {p}; |
||||||
|
Component[][] components = getComponent(); |
||||||
|
return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 12, 6); |
||||||
|
} |
||||||
|
|
||||||
|
protected Component[][] getComponent() { |
||||||
|
return new Component[][]{ |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Area_Name")), areaNameCom} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
protected void initAreaNameCom() { |
||||||
|
|
||||||
|
areaNameCom = new UIComboBox(); |
||||||
|
|
||||||
|
areaNameCom.addItemListener(new ItemListener() { |
||||||
|
public void itemStateChanged(ItemEvent e) { |
||||||
|
listener.fireCheckSeriesUse(areaNameCom.getSelectedItem() != null); |
||||||
|
makeToolTipUse(areaNameCom); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
protected void makeToolTipUse(UIComboBox comBox) { |
||||||
|
if (comBox.getSelectedItem() != null) { |
||||||
|
comBox.setToolTipText(comBox.getSelectedItem().toString()); |
||||||
|
} else { |
||||||
|
comBox.setToolTipText(null); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void refreshBoxListWithSelectTableData(List list) { |
||||||
|
refreshBoxItems(areaNameCom, list); |
||||||
|
} |
||||||
|
|
||||||
|
public boolean isSelectedItem() { |
||||||
|
return areaNameCom.getSelectedItem() != null; |
||||||
|
} |
||||||
|
|
||||||
|
public void populate(LongitudeLatitudeAndArea longLatArea) { |
||||||
|
if (longLatArea.getArea() != null) { |
||||||
|
areaNameCom.setSelectedItem(longLatArea.getArea()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public LongitudeLatitudeAndArea update() { |
||||||
|
LongitudeLatitudeAndArea longLatArea = new LongitudeLatitudeAndArea(); |
||||||
|
longLatArea.setArea(areaNameCom.getSelectedItem()); |
||||||
|
return longLatArea; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void clearAllBoxList() { |
||||||
|
clearBoxItems(areaNameCom); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,100 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.component.table; |
||||||
|
|
||||||
|
import com.fr.design.gui.ilable.BoldFontTextLabel; |
||||||
|
import com.fr.plugin.chart.map.data.VanMapTableDefinitionProvider; |
||||||
|
import com.fr.van.chart.map.designer.data.component.LongitudeLatitudeAndArea; |
||||||
|
import com.fr.van.chart.map.designer.data.contentpane.table.VanPointMapPlotTableDataContentPane; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
import java.awt.Component; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Created by hufan on 2016/12/21. |
||||||
|
*/ |
||||||
|
public class LineMapAreaPane extends PointMapAreaPane { |
||||||
|
private static final int V_GAP = 10; |
||||||
|
protected AreaPane endAreaPane; |
||||||
|
|
||||||
|
public LineMapAreaPane(VanPointMapPlotTableDataContentPane.LongLatAreaTableComboPane parentPane) { |
||||||
|
super(parentPane); |
||||||
|
} |
||||||
|
|
||||||
|
protected JPanel createContentPane(VanPointMapPlotTableDataContentPane.LongLatAreaTableComboPane parentPane) { |
||||||
|
initAreaPane(parentPane); |
||||||
|
initEndAreaPane(parentPane); |
||||||
|
|
||||||
|
JPanel content = new JPanel(new BorderLayout(0, V_GAP)); |
||||||
|
content.add(areaPane, BorderLayout.NORTH); |
||||||
|
content.add(endAreaPane, BorderLayout.CENTER); |
||||||
|
return content; |
||||||
|
} |
||||||
|
|
||||||
|
protected void initAreaPane(VanPointMapPlotTableDataContentPane.LongLatAreaTableComboPane parentPane) { |
||||||
|
areaPane = new AreaPane(parentPane) { |
||||||
|
protected Component[][] getComponent() { |
||||||
|
return new Component[][]{ |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Start_Area_Name")), areaNameCom} |
||||||
|
}; |
||||||
|
} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
protected void initEndAreaPane(VanPointMapPlotTableDataContentPane.LongLatAreaTableComboPane parentPane) { |
||||||
|
endAreaPane = new AreaPane(parentPane) { |
||||||
|
protected Component[][] getComponent() { |
||||||
|
return new Component[][]{ |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_End_Area_Name")), areaNameCom} |
||||||
|
}; |
||||||
|
} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void refreshBoxListWithSelectTableData(List list) { |
||||||
|
super.refreshBoxListWithSelectTableData(list); |
||||||
|
endAreaPane.refreshBoxListWithSelectTableData(list); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isSelectedItem() { |
||||||
|
return super.isSelectedItem() |
||||||
|
&& endAreaPane.isSelectedItem(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void populate(VanMapTableDefinitionProvider mapTableDefinitionProvider) { |
||||||
|
super.populate(mapTableDefinitionProvider); |
||||||
|
|
||||||
|
LongitudeLatitudeAndArea endLongLatArea = new LongitudeLatitudeAndArea(); |
||||||
|
endLongLatArea.setArea(mapTableDefinitionProvider.getEndAreaName()); |
||||||
|
endLongLatArea.setLongitude(mapTableDefinitionProvider.getEndLongitude()); |
||||||
|
endLongLatArea.setLatitude(mapTableDefinitionProvider.getEndLatitude()); |
||||||
|
|
||||||
|
endAreaPane.populate(endLongLatArea); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void update(VanMapTableDefinitionProvider mapTableDefinitionProvider) { |
||||||
|
super.update(mapTableDefinitionProvider); |
||||||
|
|
||||||
|
LongitudeLatitudeAndArea endLongLatArea = endAreaPane.update(); |
||||||
|
mapTableDefinitionProvider.setEndAreaName(endLongLatArea.getArea() == null ? null : endLongLatArea.getArea().toString()); |
||||||
|
mapTableDefinitionProvider.setEndLongitude(endLongLatArea.getLongitude() == null ? null : endLongLatArea.getLongitude().toString()); |
||||||
|
mapTableDefinitionProvider.setEndLatitude(endLongLatArea.getLatitude() == null ? null : endLongLatArea.getLatitude().toString()); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void checkBoxUse(boolean hasUse) { |
||||||
|
super.checkBoxUse(hasUse); |
||||||
|
endAreaPane.checkBoxUse(hasUse); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void clearAllBoxList() { |
||||||
|
super.clearAllBoxList(); |
||||||
|
endAreaPane.clearAllBoxList(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,41 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.component.table; |
||||||
|
|
||||||
|
|
||||||
|
import com.fr.design.gui.ilable.BoldFontTextLabel; |
||||||
|
import com.fr.van.chart.map.designer.data.contentpane.table.VanPointMapPlotTableDataContentPane; |
||||||
|
|
||||||
|
import java.awt.Component; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by hufan on 2016/12/21. |
||||||
|
*/ |
||||||
|
public class LineMapLongLatAreaPane extends LineMapAreaPane { |
||||||
|
|
||||||
|
public LineMapLongLatAreaPane(VanPointMapPlotTableDataContentPane.LongLatAreaTableComboPane parentPane) { |
||||||
|
super(parentPane); |
||||||
|
} |
||||||
|
|
||||||
|
protected void initEndAreaPane(VanPointMapPlotTableDataContentPane.LongLatAreaTableComboPane parentPane) { |
||||||
|
endAreaPane = new LongLatAreaPane(parentPane) { |
||||||
|
protected Component[][] getComponent() { |
||||||
|
return new Component[][]{ |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_End_Longitude")), longitudeCom}, |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_End_Latitude")), latitudeCom}, |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_End_Area_Name")), areaNameCom} |
||||||
|
}; |
||||||
|
} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
protected void initAreaPane(VanPointMapPlotTableDataContentPane.LongLatAreaTableComboPane parentPane) { |
||||||
|
areaPane = new LongLatAreaPane(parentPane) { |
||||||
|
protected Component[][] getComponent() { |
||||||
|
return new Component[][]{ |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Start_Longitude")), longitudeCom}, |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Start_Latitude")), latitudeCom}, |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Start_Area_Name")), areaNameCom} |
||||||
|
}; |
||||||
|
} |
||||||
|
}; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,122 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.component.table; |
||||||
|
|
||||||
|
import com.fr.design.gui.icombobox.UIComboBox; |
||||||
|
import com.fr.design.gui.ilable.BoldFontTextLabel; |
||||||
|
import com.fr.design.layout.TableLayout; |
||||||
|
import com.fr.design.layout.TableLayoutHelper; |
||||||
|
import com.fr.van.chart.map.designer.data.component.LongitudeLatitudeAndArea; |
||||||
|
import com.fr.van.chart.map.designer.data.contentpane.table.VanPointMapPlotTableDataContentPane; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
import java.awt.Component; |
||||||
|
import java.awt.event.ItemEvent; |
||||||
|
import java.awt.event.ItemListener; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by hufan on 2016/12/21. |
||||||
|
*/ |
||||||
|
public class LongLatAreaPane extends AreaPane { |
||||||
|
protected UIComboBox longitudeCom; |
||||||
|
protected UIComboBox latitudeCom; |
||||||
|
|
||||||
|
public LongLatAreaPane(VanPointMapPlotTableDataContentPane.LongLatAreaTableComboPane parentPane) { |
||||||
|
super(parentPane); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected JPanel createAreaNamePane() { |
||||||
|
initAreaNameCom(); |
||||||
|
initLongitudeCom(); |
||||||
|
initLatitudeCom(); |
||||||
|
|
||||||
|
double p = TableLayout.PREFERRED; |
||||||
|
double f = TableLayout.FILL; |
||||||
|
double[] columnSize = {f, COMPONENT_WIDTH}; |
||||||
|
double[] rowSize = {p, p, p}; |
||||||
|
Component[][] components = getComponent(); |
||||||
|
|
||||||
|
return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 12, 6); |
||||||
|
} |
||||||
|
|
||||||
|
protected Component[][] getComponent() { |
||||||
|
return new Component[][]{ |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Longitude")), longitudeCom}, |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Latitude")), latitudeCom}, |
||||||
|
new Component[]{new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Area_Name")), areaNameCom} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
public void refreshBoxListWithSelectTableData(List list) { |
||||||
|
super.refreshBoxListWithSelectTableData(list); |
||||||
|
refreshBoxItems(longitudeCom, list); |
||||||
|
refreshBoxItems(latitudeCom, list); |
||||||
|
} |
||||||
|
|
||||||
|
protected void initLatitudeCom() { |
||||||
|
|
||||||
|
latitudeCom = new UIComboBox(); |
||||||
|
|
||||||
|
latitudeCom.addItemListener(new ItemListener() { |
||||||
|
public void itemStateChanged(ItemEvent e) { |
||||||
|
listener.fireCheckSeriesUse(latitudeCom.getSelectedItem() != null); |
||||||
|
makeToolTipUse(latitudeCom); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void populate(LongitudeLatitudeAndArea longLatArea) { |
||||||
|
super.populate(longLatArea); |
||||||
|
if (longLatArea.getLongitude() != null) { |
||||||
|
longitudeCom.setSelectedItem(longLatArea.getLongitude()); |
||||||
|
} |
||||||
|
if (longLatArea.getLatitude() != null) { |
||||||
|
latitudeCom.setSelectedItem(longLatArea.getLatitude()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public LongitudeLatitudeAndArea update() { |
||||||
|
LongitudeLatitudeAndArea longitudeLatitudeAndArea = super.update(); |
||||||
|
longitudeLatitudeAndArea.setLatitude(latitudeCom.getSelectedItem()); |
||||||
|
longitudeLatitudeAndArea.setLongitude(longitudeCom.getSelectedItem()); |
||||||
|
return longitudeLatitudeAndArea; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void checkBoxUse(boolean hasUse) { |
||||||
|
super.checkBoxUse(hasUse); |
||||||
|
longitudeCom.setEnabled(hasUse); |
||||||
|
latitudeCom.setEnabled(hasUse); |
||||||
|
} |
||||||
|
|
||||||
|
public void clearAllBoxList() { |
||||||
|
super.clearAllBoxList(); |
||||||
|
clearBoxItems(longitudeCom); |
||||||
|
clearBoxItems(latitudeCom); |
||||||
|
} |
||||||
|
|
||||||
|
protected void initLongitudeCom() { |
||||||
|
|
||||||
|
longitudeCom = new UIComboBox(); |
||||||
|
|
||||||
|
longitudeCom.addItemListener(new ItemListener() { |
||||||
|
public void itemStateChanged(ItemEvent e) { |
||||||
|
listener.fireCheckSeriesUse(longitudeCom.getSelectedItem() != null); |
||||||
|
makeToolTipUse(longitudeCom); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected String title4PopupWindow() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean isSelectedItem() { |
||||||
|
return super.isSelectedItem() |
||||||
|
&& longitudeCom.getSelectedItem() != null |
||||||
|
&& latitudeCom.getSelectedItem() != null; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,69 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.component.table; |
||||||
|
|
||||||
|
import com.fr.plugin.chart.map.data.VanMapTableDefinitionProvider; |
||||||
|
import com.fr.van.chart.map.designer.data.component.LongitudeLatitudeAndArea; |
||||||
|
import com.fr.van.chart.map.designer.data.contentpane.table.VanPointMapPlotTableDataContentPane; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by hufan on 2016/12/23. |
||||||
|
*/ |
||||||
|
public class PointMapAreaPane extends AbstractLongLatAreaPane { |
||||||
|
protected AreaPane areaPane; |
||||||
|
|
||||||
|
public PointMapAreaPane(VanPointMapPlotTableDataContentPane.LongLatAreaTableComboPane parentPane) { |
||||||
|
JPanel contentPane = createContentPane(parentPane); |
||||||
|
this.setLayout(new BorderLayout()); |
||||||
|
this.add(contentPane, BorderLayout.CENTER); |
||||||
|
} |
||||||
|
|
||||||
|
protected JPanel createContentPane(VanPointMapPlotTableDataContentPane.LongLatAreaTableComboPane parentPane) { |
||||||
|
initAreaPane(parentPane); |
||||||
|
JPanel content = new JPanel(new BorderLayout()); |
||||||
|
content.add(areaPane, BorderLayout.CENTER); |
||||||
|
return content; |
||||||
|
} |
||||||
|
|
||||||
|
protected void initAreaPane(VanPointMapPlotTableDataContentPane.LongLatAreaTableComboPane parentPane) { |
||||||
|
areaPane = new AreaPane(parentPane); |
||||||
|
} |
||||||
|
|
||||||
|
public void refreshBoxListWithSelectTableData(List list) { |
||||||
|
areaPane.refreshBoxListWithSelectTableData(list); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void checkBoxUse(boolean hasUse) { |
||||||
|
areaPane.checkBoxUse(hasUse); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void clearAllBoxList() { |
||||||
|
areaPane.clearAllBoxList(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isSelectedItem() { |
||||||
|
return areaPane.isSelectedItem(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void populate(VanMapTableDefinitionProvider mapTableDefinitionProvider) { |
||||||
|
LongitudeLatitudeAndArea longLatArea = new LongitudeLatitudeAndArea(); |
||||||
|
longLatArea.setArea(mapTableDefinitionProvider.getCategoryName()); |
||||||
|
longLatArea.setLongitude(mapTableDefinitionProvider.getLongitude()); |
||||||
|
longLatArea.setLatitude(mapTableDefinitionProvider.getLatitude()); |
||||||
|
areaPane.populate(longLatArea); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void update(VanMapTableDefinitionProvider mapTableDefinitionProvider) { |
||||||
|
LongitudeLatitudeAndArea longLatArea = areaPane.update(); |
||||||
|
mapTableDefinitionProvider.setCategoryName(longLatArea.getArea() == null ? null : longLatArea.getArea().toString()); |
||||||
|
mapTableDefinitionProvider.setLongitude(longLatArea.getLongitude() == null ? null : longLatArea.getLongitude().toString()); |
||||||
|
mapTableDefinitionProvider.setLatitude(longLatArea.getLatitude() == null ? null : longLatArea.getLatitude().toString()); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,18 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.component.table; |
||||||
|
|
||||||
|
import com.fr.van.chart.map.designer.data.contentpane.table.VanPointMapPlotTableDataContentPane; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Created by hufan on 2016/12/23. |
||||||
|
*/ |
||||||
|
public class PointMapLongLatAreaPane extends PointMapAreaPane { |
||||||
|
|
||||||
|
public PointMapLongLatAreaPane(VanPointMapPlotTableDataContentPane.LongLatAreaTableComboPane parentPane) { |
||||||
|
super(parentPane); |
||||||
|
} |
||||||
|
|
||||||
|
protected void initAreaPane(VanPointMapPlotTableDataContentPane.LongLatAreaTableComboPane parentPane) { |
||||||
|
areaPane = new LongLatAreaPane(parentPane); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,110 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.contentpane.report; |
||||||
|
|
||||||
|
import com.fr.base.chart.chartdata.TopDefinitionProvider; |
||||||
|
import com.fr.chart.chartattr.ChartCollection; |
||||||
|
import com.fr.chart.chartdata.SeriesDefinition; |
||||||
|
import com.fr.design.formula.TinyFormulaPane; |
||||||
|
import com.fr.design.gui.ilable.UILabel; |
||||||
|
import com.fr.design.mainframe.chart.gui.ChartDataPane; |
||||||
|
import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane; |
||||||
|
import com.fr.plugin.chart.map.data.VanMapReportDefinition; |
||||||
|
|
||||||
|
import javax.swing.BorderFactory; |
||||||
|
import javax.swing.JPanel; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
import java.awt.Dimension; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by Mitisky on 16/5/16. |
||||||
|
*/ |
||||||
|
public class VanAreaMapPlotReportDataContentPane extends AbstractReportDataContentPane { |
||||||
|
protected TinyFormulaPane areaName; |
||||||
|
|
||||||
|
public VanAreaMapPlotReportDataContentPane(ChartDataPane parent) { |
||||||
|
initEveryPane(); |
||||||
|
initAreaName(); |
||||||
|
JPanel panel = getContent(); |
||||||
|
panel.setBorder(BorderFactory.createEmptyBorder(0, 24, 0, 15)); |
||||||
|
this.add(panel, "0,0,2,0"); |
||||||
|
} |
||||||
|
|
||||||
|
protected void initAreaName() { |
||||||
|
areaName = new TinyFormulaPane() { |
||||||
|
@Override |
||||||
|
protected void initLayout() { |
||||||
|
this.setLayout(new BorderLayout(4, 0)); |
||||||
|
|
||||||
|
UILabel label = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Area_Name")); |
||||||
|
label.setPreferredSize(new Dimension(75, 20)); |
||||||
|
this.add(label, BorderLayout.WEST); |
||||||
|
|
||||||
|
formulaTextField.setPreferredSize(new Dimension(100, 20)); |
||||||
|
this.add(formulaTextField, BorderLayout.CENTER); |
||||||
|
this.add(formulaTextFieldButton, BorderLayout.EAST); |
||||||
|
} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
protected JPanel getContent() { |
||||||
|
return getFormulaPane(); |
||||||
|
} |
||||||
|
|
||||||
|
protected JPanel getFormulaPane() { |
||||||
|
return areaName; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected String[] columnNames() { |
||||||
|
return new String[]{ |
||||||
|
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Series_Name"), |
||||||
|
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Series_Value") |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
public void populateBean(ChartCollection collection) { |
||||||
|
TopDefinitionProvider topDefinitionProvider = collection.getSelectedChart().getFilterDefinition(); |
||||||
|
if (topDefinitionProvider instanceof VanMapReportDefinition) { |
||||||
|
|
||||||
|
VanMapReportDefinition mapReportDefinition = (VanMapReportDefinition) topDefinitionProvider; |
||||||
|
|
||||||
|
populateDefinition(mapReportDefinition); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
protected void populateDefinition(VanMapReportDefinition mapReportDefinition) { |
||||||
|
if (mapReportDefinition.getCategoryName() != null) { |
||||||
|
areaName.getUITextField().setText(mapReportDefinition.getCategoryName().toString()); |
||||||
|
} |
||||||
|
if (mapReportDefinition.getSeriesSize() > 0) { |
||||||
|
seriesPane.populateBean(mapReportDefinition.getEntryList()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public void updateBean(ChartCollection collection) { |
||||||
|
collection.getSelectedChart().setFilterDefinition(new VanMapReportDefinition()); |
||||||
|
|
||||||
|
TopDefinitionProvider topDefinitionProvider = collection.getSelectedChart().getFilterDefinition(); |
||||||
|
if (topDefinitionProvider instanceof VanMapReportDefinition) { |
||||||
|
|
||||||
|
VanMapReportDefinition mapReportDefinition = (VanMapReportDefinition) topDefinitionProvider; |
||||||
|
|
||||||
|
updateDefinition(mapReportDefinition); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
protected void updateDefinition(VanMapReportDefinition mapReportDefinition) { |
||||||
|
mapReportDefinition.setCategoryName(canBeFormula(areaName.getUITextField().getText())); |
||||||
|
mapReportDefinition.setLatitude(null); |
||||||
|
mapReportDefinition.setLongitude(null); |
||||||
|
|
||||||
|
List<Object[]> list = seriesPane.updateBean(); |
||||||
|
for (Object[] o : list) { |
||||||
|
SeriesDefinition sd = new SeriesDefinition(); |
||||||
|
|
||||||
|
sd.setSeriesName(canBeFormula(o[0])); |
||||||
|
sd.setValue(canBeFormula(o[1])); |
||||||
|
mapReportDefinition.addSeriesValue(sd); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,24 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.contentpane.report; |
||||||
|
|
||||||
|
import com.fr.design.mainframe.chart.gui.ChartDataPane; |
||||||
|
import com.fr.van.chart.map.designer.data.component.report.AbstractLongLatAreaPane; |
||||||
|
import com.fr.van.chart.map.designer.data.component.report.LineMapAreaPane; |
||||||
|
import com.fr.van.chart.map.designer.data.component.report.LineMapLongLatAreaPane; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by hufan on 2016/12/15. |
||||||
|
*/ |
||||||
|
public class VanLineMapPlotReportDataContentPane extends VanPointMapPlotReportDataContentPane { |
||||||
|
|
||||||
|
public VanLineMapPlotReportDataContentPane(ChartDataPane parent) { |
||||||
|
super(parent); |
||||||
|
} |
||||||
|
|
||||||
|
protected AbstractLongLatAreaPane getAreaPane() { |
||||||
|
return new LineMapAreaPane(); |
||||||
|
} |
||||||
|
|
||||||
|
protected AbstractLongLatAreaPane getLongLatAreaPane() { |
||||||
|
return new LineMapLongLatAreaPane(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,170 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.contentpane.report; |
||||||
|
|
||||||
|
import com.fr.design.beans.BasicBeanPane; |
||||||
|
import com.fr.design.gui.ibutton.UIButtonGroup; |
||||||
|
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.plugin.chart.map.data.VanMapReportDefinition; |
||||||
|
import com.fr.van.chart.map.designer.data.component.report.AbstractLongLatAreaPane; |
||||||
|
import com.fr.van.chart.map.designer.data.component.report.PointMapAreaPane; |
||||||
|
import com.fr.van.chart.map.designer.data.component.report.PointMapLongLatAreaPane; |
||||||
|
|
||||||
|
import javax.swing.BorderFactory; |
||||||
|
import javax.swing.JPanel; |
||||||
|
import javax.swing.event.ChangeEvent; |
||||||
|
import javax.swing.event.ChangeListener; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
import java.awt.CardLayout; |
||||||
|
import java.awt.Component; |
||||||
|
import java.awt.Dimension; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by Mitisky on 16/5/17. |
||||||
|
*/ |
||||||
|
public class VanPointMapPlotReportDataContentPane extends VanAreaMapPlotReportDataContentPane { |
||||||
|
private LongLatReportFormulaPane longLatReportFormulaPane; |
||||||
|
|
||||||
|
public VanPointMapPlotReportDataContentPane(ChartDataPane parent) { |
||||||
|
super(parent); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected JPanel getContent() { |
||||||
|
longLatReportFormulaPane = new LongLatReportFormulaPane(); |
||||||
|
JPanel content = new JPanel(new BorderLayout(0, 4)); |
||||||
|
content.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 0)); |
||||||
|
content.add(longLatReportFormulaPane, BorderLayout.CENTER); |
||||||
|
return content; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected void populateDefinition(VanMapReportDefinition mapReportDefinition) { |
||||||
|
super.populateDefinition(mapReportDefinition); |
||||||
|
longLatReportFormulaPane.populateBean(mapReportDefinition); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected void updateDefinition(VanMapReportDefinition mapReportDefinition) { |
||||||
|
super.updateDefinition(mapReportDefinition); |
||||||
|
longLatReportFormulaPane.updateBean(mapReportDefinition); |
||||||
|
} |
||||||
|
|
||||||
|
//================================public class===================================
|
||||||
|
|
||||||
|
public class LongLatReportFormulaPane extends BasicBeanPane<VanMapReportDefinition> { |
||||||
|
|
||||||
|
double p = TableLayout.PREFERRED; |
||||||
|
double f = TableLayout.FILL; |
||||||
|
|
||||||
|
private UIButtonGroup<Integer> locationType; |
||||||
|
|
||||||
|
private JPanel centerPane; |
||||||
|
private AbstractLongLatAreaPane areaPane; |
||||||
|
private AbstractLongLatAreaPane longLatAreaPane; |
||||||
|
|
||||||
|
public LongLatReportFormulaPane() { |
||||||
|
this.setLayout(new BorderLayout(0, 5)); |
||||||
|
centerPane = new JPanel(new CardLayout()) { |
||||||
|
@Override |
||||||
|
public Dimension getPreferredSize() { |
||||||
|
if (locationType.getSelectedIndex() == 0) { |
||||||
|
return areaPane.getPreferredSize(); |
||||||
|
} else { |
||||||
|
return longLatAreaPane.getPreferredSize(); |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
locationType = new UIButtonGroup<Integer>(new String[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Location_With_Area_Name"), |
||||||
|
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Location_With_LongAndLat")}); |
||||||
|
locationType.addChangeListener(new ChangeListener() { |
||||||
|
@Override |
||||||
|
public void stateChanged(ChangeEvent e) { |
||||||
|
checkCenterPane(); |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
longLatAreaPane = getLongLatAreaPane(); |
||||||
|
areaPane = getAreaPane(); |
||||||
|
|
||||||
|
centerPane.add(areaPane, "area"); |
||||||
|
centerPane.add(longLatAreaPane, "longLat"); |
||||||
|
|
||||||
|
locationType.setSelectedIndex(0); |
||||||
|
|
||||||
|
double[] columnSize = {p, f}; |
||||||
|
double[] rowSize = {p}; |
||||||
|
|
||||||
|
Component[][] components = new Component[][]{ |
||||||
|
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Geographic")), locationType}, |
||||||
|
}; |
||||||
|
|
||||||
|
JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 12, 6); |
||||||
|
|
||||||
|
|
||||||
|
this.add(panel, BorderLayout.NORTH); |
||||||
|
this.add(centerPane, BorderLayout.CENTER); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
private void checkCenterPane() { |
||||||
|
CardLayout cardLayout = (CardLayout) centerPane.getLayout(); |
||||||
|
if (locationType.getSelectedIndex() == 0) { |
||||||
|
cardLayout.show(centerPane, "area"); |
||||||
|
} else { |
||||||
|
cardLayout.show(centerPane, "longLat"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public void populateBean(VanMapReportDefinition mapReportDefinition) { |
||||||
|
locationType.setSelectedIndex(mapReportDefinition.isUseAreaName() ? 0 : 1); |
||||||
|
if (locationType.getSelectedIndex() == 0) { |
||||||
|
areaPane.populate(mapReportDefinition); |
||||||
|
|
||||||
|
} else { |
||||||
|
longLatAreaPane.populate(mapReportDefinition); |
||||||
|
} |
||||||
|
|
||||||
|
checkCenterPane(); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
public void updateBean(VanMapReportDefinition mapReportDefinition) { |
||||||
|
boolean useAreaName = locationType.getSelectedIndex() == 0; |
||||||
|
mapReportDefinition.setUseAreaName(useAreaName); |
||||||
|
if (useAreaName) { |
||||||
|
areaPane.update(mapReportDefinition); |
||||||
|
} else { |
||||||
|
longLatAreaPane.update(mapReportDefinition); |
||||||
|
} |
||||||
|
|
||||||
|
checkCenterPane(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Update. |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public VanMapReportDefinition updateBean() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected String title4PopupWindow() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
protected AbstractLongLatAreaPane getAreaPane() { |
||||||
|
return new PointMapAreaPane(); |
||||||
|
} |
||||||
|
|
||||||
|
protected AbstractLongLatAreaPane getLongLatAreaPane() { |
||||||
|
return new PointMapLongLatAreaPane(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,176 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.contentpane.table; |
||||||
|
|
||||||
|
import com.fr.base.chart.chartdata.TopDefinitionProvider; |
||||||
|
import com.fr.chart.chartattr.ChartCollection; |
||||||
|
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.layout.TableLayout; |
||||||
|
import com.fr.design.layout.TableLayoutHelper; |
||||||
|
import com.fr.design.mainframe.chart.gui.ChartDataPane; |
||||||
|
import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane; |
||||||
|
import com.fr.plugin.chart.map.VanChartMapPlot; |
||||||
|
import com.fr.plugin.chart.map.data.VanMapTableDefinitionProvider; |
||||||
|
import com.fr.van.chart.map.designer.data.component.SeriesTypeUseComboxPaneWithOutFilter; |
||||||
|
|
||||||
|
import javax.swing.BorderFactory; |
||||||
|
import javax.swing.JPanel; |
||||||
|
import javax.swing.JSeparator; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
import java.awt.Component; |
||||||
|
import java.awt.Dimension; |
||||||
|
import java.awt.event.ItemEvent; |
||||||
|
import java.awt.event.ItemListener; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by Mitisky on 16/5/16. |
||||||
|
*/ |
||||||
|
public class VanAreaMapPlotTableDataContentPane extends AbstractTableDataContentPane { |
||||||
|
private UIComboBox areaNameCom; |
||||||
|
|
||||||
|
protected SeriesTypeUseComboxPaneWithOutFilter seriesTypeUseComboxPane; |
||||||
|
|
||||||
|
public VanAreaMapPlotTableDataContentPane(ChartDataPane parent) { |
||||||
|
this.setLayout(new BorderLayout(0, 4)); |
||||||
|
|
||||||
|
initAreaNameCom(); |
||||||
|
|
||||||
|
JPanel areaNamePane = createAreaNamePane(); |
||||||
|
JSeparator jSeparator = new JSeparator(); |
||||||
|
areaNamePane.setBorder(BorderFactory.createEmptyBorder(0, 24, 0, 15)); |
||||||
|
jSeparator.setPreferredSize(new Dimension(246, 2)); |
||||||
|
|
||||||
|
this.add(areaNamePane, BorderLayout.NORTH); |
||||||
|
this.add(jSeparator, BorderLayout.CENTER); |
||||||
|
|
||||||
|
seriesTypeUseComboxPane = new SeriesTypeUseComboxPaneWithOutFilter(parent, new VanChartMapPlot()); |
||||||
|
this.add(seriesTypeUseComboxPane, BorderLayout.SOUTH); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
protected void initAreaNameCom() { |
||||||
|
|
||||||
|
areaNameCom = new UIComboBox(); |
||||||
|
|
||||||
|
areaNameCom.addItemListener(new ItemListener() { |
||||||
|
public void itemStateChanged(ItemEvent e) { |
||||||
|
checkSeriseUse(areaNameCom.getSelectedItem() != null); |
||||||
|
makeToolTipUse(areaNameCom); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
protected JPanel createAreaNamePane() { |
||||||
|
UILabel label = new BoldFontTextLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Area_Name")); |
||||||
|
label.setPreferredSize(new Dimension(80, 20)); |
||||||
|
areaNameCom.setPreferredSize(new Dimension(100, 20)); |
||||||
|
|
||||||
|
double p = TableLayout.PREFERRED; |
||||||
|
double f = TableLayout.FILL; |
||||||
|
double[] columnSize = {p, f}; |
||||||
|
double[] rowSize = {p}; |
||||||
|
|
||||||
|
Component[][] components = new Component[][]{ |
||||||
|
new Component[]{label, areaNameCom}, |
||||||
|
}; |
||||||
|
|
||||||
|
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
protected void makeToolTipUse(UIComboBox comBox) { |
||||||
|
if (comBox.getSelectedItem() != null) { |
||||||
|
comBox.setToolTipText(comBox.getSelectedItem().toString()); |
||||||
|
} else { |
||||||
|
comBox.setToolTipText(null); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 检查 某些Box是否可用 |
||||||
|
* |
||||||
|
* @param hasUse 是否使用. |
||||||
|
*/ |
||||||
|
public void checkBoxUse(boolean hasUse) { |
||||||
|
checkAreaName(hasUse); |
||||||
|
checkSeriseUse(hasUse); |
||||||
|
} |
||||||
|
|
||||||
|
protected void checkAreaName(boolean hasUse) { |
||||||
|
areaNameCom.setEnabled(hasUse); |
||||||
|
} |
||||||
|
|
||||||
|
protected void checkSeriseUse(boolean hasUse) { |
||||||
|
if (seriesTypeUseComboxPane != null) { |
||||||
|
seriesTypeUseComboxPane.checkUseBox(hasUse && isAreaSelectedItem()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
protected boolean isAreaSelectedItem() { |
||||||
|
return areaNameCom.getSelectedItem() != null; |
||||||
|
} |
||||||
|
|
||||||
|
protected void refreshBoxListWithSelectTableData(java.util.List list) { |
||||||
|
refreshAreaName(list); |
||||||
|
seriesTypeUseComboxPane.refreshBoxListWithSelectTableData(list); |
||||||
|
} |
||||||
|
|
||||||
|
protected void refreshAreaName(List list) { |
||||||
|
refreshBoxItems(areaNameCom, list); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 清空所有的box设置 |
||||||
|
*/ |
||||||
|
public void clearAllBoxList() { |
||||||
|
clearAreaName(); |
||||||
|
seriesTypeUseComboxPane.clearAllBoxList(); |
||||||
|
} |
||||||
|
|
||||||
|
protected void clearAreaName() { |
||||||
|
clearBoxItems(areaNameCom); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 保存界面内容到ChartCollection |
||||||
|
*/ |
||||||
|
public void updateBean(ChartCollection collection) { |
||||||
|
seriesTypeUseComboxPane.updateBean(collection); |
||||||
|
TopDefinitionProvider topDefinitionProvider = collection.getSelectedChart().getFilterDefinition(); |
||||||
|
if (topDefinitionProvider instanceof VanMapTableDefinitionProvider) { |
||||||
|
VanMapTableDefinitionProvider mapTableDefinitionProvider = (VanMapTableDefinitionProvider) topDefinitionProvider; |
||||||
|
updateDefinition(mapTableDefinitionProvider); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
protected void updateDefinition(VanMapTableDefinitionProvider mapTableDefinitionProvider) { |
||||||
|
Object o = areaNameCom.getSelectedItem(); |
||||||
|
mapTableDefinitionProvider.setCategoryName(o == null ? null : o.toString()); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 根据ChartCollection 更新界面 |
||||||
|
*/ |
||||||
|
public void populateBean(ChartCollection collection) { |
||||||
|
seriesTypeUseComboxPane.populateBean(collection, this.isNeedSummaryCaculateMethod()); |
||||||
|
TopDefinitionProvider topDefinitionProvider = collection.getSelectedChart().getFilterDefinition(); |
||||||
|
if (topDefinitionProvider instanceof VanMapTableDefinitionProvider) { |
||||||
|
VanMapTableDefinitionProvider mapTableDefinitionProvider = (VanMapTableDefinitionProvider) topDefinitionProvider; |
||||||
|
populateDefinition(mapTableDefinitionProvider); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
protected void populateDefinition(VanMapTableDefinitionProvider mapTableDefinitionProvider) { |
||||||
|
if (mapTableDefinitionProvider.getCategoryName() != null) { |
||||||
|
areaNameCom.setSelectedItem(mapTableDefinitionProvider.getCategoryName()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 重新布局整个面板 |
||||||
|
*/ |
||||||
|
public void redoLayoutPane() { |
||||||
|
seriesTypeUseComboxPane.relayoutPane(this.isNeedSummaryCaculateMethod()); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,25 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.contentpane.table; |
||||||
|
|
||||||
|
|
||||||
|
import com.fr.design.mainframe.chart.gui.ChartDataPane; |
||||||
|
import com.fr.van.chart.map.designer.data.component.table.AbstractLongLatAreaPane; |
||||||
|
import com.fr.van.chart.map.designer.data.component.table.LineMapAreaPane; |
||||||
|
import com.fr.van.chart.map.designer.data.component.table.LineMapLongLatAreaPane; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Created by hufan on 2016/12/15. |
||||||
|
*/ |
||||||
|
public class VanLineMapPlotTableDataContentPane extends VanPointMapPlotTableDataContentPane { |
||||||
|
public VanLineMapPlotTableDataContentPane(ChartDataPane parent) { |
||||||
|
super(parent); |
||||||
|
} |
||||||
|
|
||||||
|
protected AbstractLongLatAreaPane createAreaPane(LongLatAreaTableComboPane longLatAreaTableComboPane) { |
||||||
|
return new LineMapAreaPane(longLatAreaTableComboPane); |
||||||
|
} |
||||||
|
|
||||||
|
protected AbstractLongLatAreaPane createLongLatAreaPane(LongLatAreaTableComboPane longLatAreaTableComboPane) { |
||||||
|
return new LineMapLongLatAreaPane(longLatAreaTableComboPane); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,224 @@ |
|||||||
|
package com.fr.van.chart.map.designer.data.contentpane.table; |
||||||
|
|
||||||
|
import com.fr.design.beans.BasicBeanPane; |
||||||
|
import com.fr.design.gui.ibutton.UIButtonGroup; |
||||||
|
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.plugin.chart.map.data.VanMapTableDefinitionProvider; |
||||||
|
import com.fr.van.chart.map.designer.data.component.table.AbstractLongLatAreaPane; |
||||||
|
import com.fr.van.chart.map.designer.data.component.table.PointMapAreaPane; |
||||||
|
import com.fr.van.chart.map.designer.data.component.table.PointMapLongLatAreaPane; |
||||||
|
|
||||||
|
import javax.swing.BorderFactory; |
||||||
|
import javax.swing.JPanel; |
||||||
|
import javax.swing.event.ChangeEvent; |
||||||
|
import javax.swing.event.ChangeListener; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
import java.awt.CardLayout; |
||||||
|
import java.awt.Component; |
||||||
|
import java.awt.Dimension; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by Mitisky on 16/5/17. |
||||||
|
*/ |
||||||
|
public class VanPointMapPlotTableDataContentPane extends VanAreaMapPlotTableDataContentPane { |
||||||
|
private static final int LEFT_GAP = 19; |
||||||
|
private static final int V_GAP = 15; |
||||||
|
//改控件相当于面积图的区域名控件
|
||||||
|
private LongLatAreaTableComboPane longLatTableComboPane; |
||||||
|
|
||||||
|
public VanPointMapPlotTableDataContentPane(ChartDataPane parent) { |
||||||
|
super(parent); |
||||||
|
} |
||||||
|
|
||||||
|
protected void initAreaNameCom() { |
||||||
|
longLatTableComboPane = new LongLatAreaTableComboPane(); |
||||||
|
} |
||||||
|
|
||||||
|
protected JPanel createAreaNamePane() { |
||||||
|
JPanel panel = new JPanel(new BorderLayout()); |
||||||
|
panel.setBorder(BorderFactory.createEmptyBorder(0, LEFT_GAP, V_GAP, 0)); |
||||||
|
panel.add(longLatTableComboPane, BorderLayout.CENTER); |
||||||
|
return panel; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected void refreshAreaName(List list) { |
||||||
|
longLatTableComboPane.refreshBoxListWithSelectTableData(list); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected void checkAreaName(boolean hasUse) { |
||||||
|
longLatTableComboPane.checkBoxUse(hasUse); |
||||||
|
} |
||||||
|
|
||||||
|
protected boolean isAreaSelectedItem() { |
||||||
|
return longLatTableComboPane.isSelectedItem(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected void clearAreaName() { |
||||||
|
longLatTableComboPane.clearAllBoxList(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected void updateDefinition(VanMapTableDefinitionProvider mapTableDefinitionProvider) { |
||||||
|
longLatTableComboPane.updateBean(mapTableDefinitionProvider); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected void populateDefinition(VanMapTableDefinitionProvider mapTableDefinitionProvider) { |
||||||
|
longLatTableComboPane.populateBean(mapTableDefinitionProvider); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public class LongLatAreaTableComboPane extends BasicBeanPane<VanMapTableDefinitionProvider> { |
||||||
|
private UIButtonGroup<Integer> locationType; |
||||||
|
|
||||||
|
private JPanel centerPane; |
||||||
|
|
||||||
|
private AbstractLongLatAreaPane longLatAreaPane; |
||||||
|
|
||||||
|
private AbstractLongLatAreaPane areaNamePane; |
||||||
|
|
||||||
|
|
||||||
|
public LongLatAreaTableComboPane() { |
||||||
|
|
||||||
|
double p = TableLayout.PREFERRED; |
||||||
|
double f = TableLayout.FILL; |
||||||
|
|
||||||
|
this.setLayout(new BorderLayout(0, 5)); |
||||||
|
centerPane = new JPanel(new CardLayout()) { |
||||||
|
@Override |
||||||
|
public Dimension getPreferredSize() { |
||||||
|
if (locationType.getSelectedIndex() == 0) { |
||||||
|
return new Dimension(180, (int) areaNamePane.getPreferredSize().getHeight()); |
||||||
|
} else { |
||||||
|
return new Dimension(180, (int) longLatAreaPane.getPreferredSize().getHeight()); |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
locationType = new UIButtonGroup<Integer>(new String[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Location_With_Area_Name"), |
||||||
|
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Location_With_LongAndLat")}); |
||||||
|
|
||||||
|
locationType.addChangeListener(new ChangeListener() { |
||||||
|
@Override |
||||||
|
public void stateChanged(ChangeEvent e) { |
||||||
|
checkCenterPane(); |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
longLatAreaPane = createLongLatAreaPane(this); |
||||||
|
areaNamePane = createAreaPane(this); |
||||||
|
|
||||||
|
centerPane.add(areaNamePane, "area"); |
||||||
|
centerPane.add(longLatAreaPane, "longLat"); |
||||||
|
|
||||||
|
locationType.setSelectedIndex(0); |
||||||
|
|
||||||
|
double[] columnSize = {p, f}; |
||||||
|
double[] rowSize = {p}; |
||||||
|
Component[][] components = new Component[][]{ |
||||||
|
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Geographic")), locationType}, |
||||||
|
}; |
||||||
|
|
||||||
|
JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 30, 6); |
||||||
|
|
||||||
|
this.add(panel, BorderLayout.NORTH); |
||||||
|
this.add(centerPane, BorderLayout.CENTER); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
public void fireCheckSeriesUse(boolean hasUse) { |
||||||
|
checkSeriseUse(hasUse); |
||||||
|
} |
||||||
|
|
||||||
|
private void checkCenterPane() { |
||||||
|
CardLayout cardLayout = (CardLayout) centerPane.getLayout(); |
||||||
|
if (locationType.getSelectedIndex() == 0) { |
||||||
|
cardLayout.show(centerPane, "area"); |
||||||
|
} else { |
||||||
|
cardLayout.show(centerPane, "longLat"); |
||||||
|
} |
||||||
|
fireCheckSeriesUse(true); |
||||||
|
} |
||||||
|
|
||||||
|
protected void refreshBoxListWithSelectTableData(List list) { |
||||||
|
areaNamePane.refreshBoxListWithSelectTableData(list); |
||||||
|
longLatAreaPane.refreshBoxListWithSelectTableData(list); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 检查 某些Box是否可用 |
||||||
|
* |
||||||
|
* @param hasUse 是否使用. |
||||||
|
*/ |
||||||
|
public void checkBoxUse(boolean hasUse) { |
||||||
|
areaNamePane.checkBoxUse(hasUse); |
||||||
|
longLatAreaPane.checkBoxUse(hasUse); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 清空所有的box设置 |
||||||
|
*/ |
||||||
|
public void clearAllBoxList() { |
||||||
|
areaNamePane.clearAllBoxList(); |
||||||
|
longLatAreaPane.clearAllBoxList(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void populateBean(VanMapTableDefinitionProvider mapTableDefinitionProvider) { |
||||||
|
locationType.setSelectedIndex(mapTableDefinitionProvider.isUseAreaName() ? 0 : 1); |
||||||
|
|
||||||
|
if (locationType.getSelectedIndex() == 0) { |
||||||
|
areaNamePane.populate(mapTableDefinitionProvider); |
||||||
|
} else { |
||||||
|
longLatAreaPane.populate(mapTableDefinitionProvider); |
||||||
|
} |
||||||
|
checkCenterPane(); |
||||||
|
} |
||||||
|
|
||||||
|
public void updateBean(VanMapTableDefinitionProvider mapTableDefinitionProvider) { |
||||||
|
boolean useAreaName = locationType.getSelectedIndex() == 0; |
||||||
|
mapTableDefinitionProvider.setUseAreaName(useAreaName); |
||||||
|
if (useAreaName) { |
||||||
|
areaNamePane.update(mapTableDefinitionProvider); |
||||||
|
} else { |
||||||
|
longLatAreaPane.update(mapTableDefinitionProvider); |
||||||
|
} |
||||||
|
|
||||||
|
checkCenterPane(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public VanMapTableDefinitionProvider updateBean() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected String title4PopupWindow() { |
||||||
|
return "longAndLat"; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean isSelectedItem() { |
||||||
|
if (locationType.getSelectedIndex() == 0) { |
||||||
|
return areaNamePane.isSelectedItem(); |
||||||
|
} else { |
||||||
|
return longLatAreaPane.isSelectedItem(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
protected AbstractLongLatAreaPane createAreaPane(LongLatAreaTableComboPane longLatAreaTableComboPane) { |
||||||
|
return new PointMapAreaPane(longLatAreaTableComboPane); |
||||||
|
} |
||||||
|
|
||||||
|
protected AbstractLongLatAreaPane createLongLatAreaPane(LongLatAreaTableComboPane longLatAreaTableComboPane) { |
||||||
|
return new PointMapLongLatAreaPane(longLatAreaTableComboPane); |
||||||
|
} |
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue