You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
161 lines
6.0 KiB
161 lines
6.0 KiB
package com.fr.plugin.pielinecomb.ui; |
|
|
|
import com.fr.chart.chartattr.Plot; |
|
import com.fr.design.beans.BasicBeanPane; |
|
import com.fr.design.gui.controlpane.NameObjectCreator; |
|
import com.fr.design.gui.controlpane.NameableCreator; |
|
import com.fr.design.gui.imenutable.UIMenuNameableCreator; |
|
import com.fr.design.i18n.Toolkit; |
|
import com.fr.general.NameObject; |
|
import com.fr.json.JSONArray; |
|
import com.fr.json.JSONObject; |
|
import com.fr.log.FineLoggerFactory; |
|
import com.fr.plugin.pielinecomb.PieLineCombChart; |
|
import com.fr.plugin.pielinecomb.vo.CustomJsonObject; |
|
import com.fr.plugin.pielinecomb.vo.ItemColorJson; |
|
import com.fr.plugin.pielinecomb.vo.ItemLabelJson; |
|
import com.fr.plugin.pielinecomb.vo.ItemTipsJson; |
|
import com.fr.stable.ListMap; |
|
import com.fr.stable.Nameable; |
|
import com.fr.van.chart.designer.component.VanChartUIListControlPane; |
|
|
|
import java.lang.reflect.Constructor; |
|
import java.lang.reflect.InvocationTargetException; |
|
import java.util.ArrayList; |
|
import java.util.HashMap; |
|
|
|
/** |
|
* @author duan.jingliang |
|
*/ |
|
public class LineCondListPane extends VanChartUIListControlPane { |
|
|
|
private PieLineCombChart chart; |
|
|
|
private HashMap paneMap; |
|
private HashMap jsonMap; |
|
|
|
public LineCondListPane() { |
|
paneMap = new HashMap(6); |
|
paneMap.put(CustomJsonObject.ITEM_COLOR, PieLineCombColorCondCreator.class); |
|
paneMap.put(CustomJsonObject.ITEM_LABEL, LineLabelCondCreator.class); |
|
paneMap.put(CustomJsonObject.ITEM_TIPS, PieLineCombTipsCondCreator.class); |
|
|
|
jsonMap = new HashMap(6); |
|
jsonMap.put(CustomJsonObject.ITEM_COLOR, ItemColorJson.class); |
|
jsonMap.put(CustomJsonObject.ITEM_LABEL, ItemLabelJson.class); |
|
jsonMap.put(CustomJsonObject.ITEM_TIPS, ItemTipsJson.class); |
|
} |
|
|
|
@Override |
|
protected void update(Plot plot) { |
|
} |
|
|
|
public void populateStyle(PieLineCombChart chart) { |
|
this.chart = chart; |
|
|
|
JSONObject styleCond = chart.getStyleCond(); |
|
if (null != styleCond && null != styleCond.get("line")) { |
|
JSONArray chartConf = styleCond.getJSONArray("line"); |
|
ArrayList noList = new ArrayList(); |
|
for (int i = 0; null != chartConf && i < chartConf.size(); i++) { |
|
JSONObject line = chartConf.getJSONObject(i); |
|
if (null != line) { |
|
try { |
|
CustomJsonObject json = (CustomJsonObject)this.getJsonByTitle(line.getString("title")).newInstance(); |
|
json.put(line); |
|
UIMenuNameableCreator var11 = new UIMenuNameableCreator(line.getString("titleName"), json, this.getEditPaneByTitle(line.getString("title"))); |
|
noList.add(new NameObject(var11.getName(), var11.getObj())); |
|
} catch (InstantiationException e) { |
|
e.printStackTrace(); |
|
} catch (IllegalAccessException e) { |
|
e.printStackTrace(); |
|
} |
|
} |
|
} |
|
|
|
this.populate((Nameable[])noList.toArray(new NameObject[noList.size()])); |
|
this.doLayout(); |
|
} |
|
|
|
} |
|
|
|
public void updateStyle(PieLineCombChart chart) { |
|
Nameable[] nameables = this.update(); |
|
|
|
JSONArray objConf = JSONArray.create(); |
|
for (int i = 0; i < nameables.length; i++) { |
|
CustomJsonObject noObj = (CustomJsonObject)((NameObject)nameables[i]).getObject(); |
|
if (null == noObj) { |
|
noObj = new CustomJsonObject(); |
|
noObj.put(JSONObject.create()); |
|
} |
|
if (null == noObj.get()) { |
|
noObj.put(JSONObject.create()); |
|
} |
|
|
|
noObj.get().put("titleName", ((NameObject)nameables[i]).getName()); |
|
objConf.add(noObj.get()); |
|
} |
|
|
|
if (null == chart.getStyleCond()) { |
|
chart.setStyleCond(JSONObject.create()); |
|
} |
|
chart.getStyleCond().put("line", objConf); |
|
|
|
} |
|
|
|
@Override |
|
public NameableCreator[] createNameableCreators() { |
|
ListMap creatorMap = new ListMap(); |
|
|
|
NameableCreator color = new NameObjectCreator(Toolkit.i18nText("Plugin-Pielinecomb-color"), ItemColorJson.class, PieLineCombColorCondCreator.class); |
|
creatorMap.put(color.menuName(), color); |
|
|
|
NameableCreator label = new NameObjectCreator(Toolkit.i18nText("Plugin-Pielinecomb-StyleLegendLabel"), ItemLabelJson.class, LineLabelCondCreator.class); |
|
creatorMap.put(label.menuName(), label); |
|
|
|
NameableCreator tips = new NameObjectCreator(Toolkit.i18nText("Plugin-Pielinecomb-StyleLegendTips"), ItemTipsJson.class, PieLineCombTipsCondCreator.class); |
|
creatorMap.put(tips.menuName(), tips); |
|
|
|
return (NameableCreator[])creatorMap.values().toArray(new NameableCreator[creatorMap.size()]); |
|
} |
|
|
|
@Override |
|
protected String title4PopupWindow() { |
|
return Toolkit.i18nText("Plugin-Pielinecomb-Cond-AddCondtion"); |
|
} |
|
|
|
@Override |
|
protected String getAddItemText() { |
|
return Toolkit.i18nText("Plugin-Pielinecomb-Cond-AddCondtion"); |
|
} |
|
|
|
@Override |
|
public BasicBeanPane createPaneByCreators(NameableCreator nameableCreator) { |
|
Constructor var2 = null; |
|
try { |
|
var2 = nameableCreator.getUpdatePane().getConstructor(); |
|
return (BasicBeanPane)var2.newInstance(); |
|
} catch (InstantiationException var4) { |
|
FineLoggerFactory.getLogger().error(var4.getMessage(), var4); |
|
} catch (IllegalAccessException var5) { |
|
FineLoggerFactory.getLogger().error(var5.getMessage(), var5); |
|
} catch (NoSuchMethodException var6) { |
|
return super.createPaneByCreators(nameableCreator); |
|
} catch (InvocationTargetException var7) { |
|
FineLoggerFactory.getLogger().error(var7.getMessage(), var7); |
|
} |
|
return null; |
|
} |
|
|
|
private Class<? extends BasicBeanPane> getEditPaneByTitle(String title) { |
|
return (Class)paneMap.get(title); |
|
} |
|
|
|
private Class getJsonByTitle(String title) { |
|
return (Class)jsonMap.get(title); |
|
} |
|
|
|
|
|
|
|
}
|
|
|