/******************************************************************************* * Copyright (c) 2014 Open Door Logistics (www.opendoorlogistics.com) * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at http://www.gnu.org/licenses/lgpl.txt ******************************************************************************/ package com.opendoorlogistics.components.linegraph; import java.io.Serializable; import java.util.ArrayList; import javax.swing.Icon; import javax.swing.JPanel; import com.opendoorlogistics.api.ODLApi; import com.opendoorlogistics.api.components.ComponentConfigurationEditorAPI; import com.opendoorlogistics.api.components.ComponentControlLauncherApi; import com.opendoorlogistics.api.components.ComponentControlLauncherApi.ControlLauncherCallback; import com.opendoorlogistics.api.components.ComponentExecutionApi; import com.opendoorlogistics.api.components.ODLComponent; import com.opendoorlogistics.api.scripts.ScriptTemplatesBuilder; import com.opendoorlogistics.api.standardcomponents.LineGraph; import com.opendoorlogistics.api.tables.ODLColumnType; import com.opendoorlogistics.api.tables.ODLDatastore; import com.opendoorlogistics.api.tables.ODLDatastoreAlterable; import com.opendoorlogistics.api.tables.ODLTable; import com.opendoorlogistics.api.tables.ODLTableAlterable; import com.opendoorlogistics.api.tables.ODLTableDefinition; import com.opendoorlogistics.api.tables.ODLTableDefinitionAlterable; import com.opendoorlogistics.api.tables.ODLTableReadOnly; import com.opendoorlogistics.api.tables.TableFlags; import com.opendoorlogistics.components.barchart.basechart.BaseChartConfigPanel; import com.opendoorlogistics.components.barchart.basechart.BaseChartPanel; import com.opendoorlogistics.components.barchart.basechart.BaseComponent; import com.opendoorlogistics.components.barchart.basechart.BaseConfig; import com.opendoorlogistics.utils.ui.Icons; final public class LineGraphComponent extends BaseComponent implements LineGraph{ @Override public String getId() { return "com.opendoorlogistics.components.linegraph"; } @Override public String getName() { return "Linegraph"; } @Override public ODLDatastore<? extends ODLTableDefinition> getIODsDefinition(ODLApi api, Serializable configuration) { ODLDatastoreAlterable<? extends ODLTableDefinitionAlterable> ret = api.tables().createAlterableDs(); ODLTableDefinitionAlterable table = ret.createTable("LineData", -1); BaseConfig config = (BaseConfig) configuration; addFilterGroupsToIODs(table, config); int keyCol=table.addColumn(-1,getColumnName(LGColumn.Key), ODLColumnType.STRING, 0); table.setColumnFlags(keyCol, table.getColumnFlags(keyCol) | TableFlags.FLAG_IS_OPTIONAL); table.addColumn(-1, getColumnName(LGColumn.X), ODLColumnType.DOUBLE, 0); table.addColumn(-1, getColumnName(LGColumn.Y), ODLColumnType.DOUBLE, 0); return ret; } @Override public ODLDatastore<? extends ODLTableDefinition> getOutputDsDefinition(ODLApi api, int mode, Serializable configuration) { return null; } @Override public Class<? extends Serializable> getConfigClass() { return BaseConfig.class; } @Override public JPanel createConfigEditorPanel(ComponentConfigurationEditorAPI factory, int mode, Serializable config, boolean isFixedIO) { return new BaseChartConfigPanel((BaseConfig) config); } @Override public void registerScriptTemplates(ScriptTemplatesBuilder templatesApi) { for(int nbFilter=0; nbFilter <=3 ; nbFilter++){ String name = "Line graph with " + nbFilter + " filter group levels"; BaseConfig config = new BaseConfig(); config.setNbFilterGroupLevels(nbFilter); config.setXLabel("x"); config.setYLabel("y"); templatesApi.registerTemplate(name, name, name,getIODsDefinition(templatesApi.getApi(), config), config); } } @Override public Icon getIcon(ODLApi api, int mode) { return Icons.loadFromStandardPath("linegraph-component.png"); } @Override protected BaseChartPanel createPanel(ODLApi api,BaseConfig config, ODLTableReadOnly table) { return new LineGraphPanel(api,config, table); } @Override public void setTitle(String title, Serializable config) { ((BaseConfig)config).setTitle(title); } @Override public void setXLabel(String title, Serializable config) { ((BaseConfig)config).setXLabel(title); } @Override public void setYLabel(String title, Serializable config) { ((BaseConfig)config).setYLabel(title); } @Override public ODLTableDefinition getInputTableDefinition(ODLApi api) { try { return getIODsDefinition(api, getConfigClass().newInstance()).getTableAt(0); } catch (Exception e) { throw new RuntimeException(e); } } @Override public String getColumnName(LGColumn col) { switch(col){ case Key: return "Key"; case X: return "X"; case Y: return "Y"; } return null; } }