/*******************************************************************************
* 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.barchart;
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.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.BaseChartPanel;
import com.opendoorlogistics.components.barchart.basechart.BaseComponent;
import com.opendoorlogistics.components.barchart.basechart.BaseConfig;
import com.opendoorlogistics.utils.ui.Icons;
final public class BarchartComponent extends BaseComponent {
@Override
public String getId() {
return "com.opendoorlogistics.components.barchart";
}
@Override
public String getName() {
return "Barchart";
}
@Override
public ODLDatastore<? extends ODLTableDefinition> getIODsDefinition(ODLApi api, Serializable configuration) {
ODLDatastoreAlterable<? extends ODLTableDefinitionAlterable> ret = api.tables().createAlterableDs();
ODLTableDefinitionAlterable table = ret.createTable("ChartData", -1);
BarchartConfig config = (BarchartConfig) configuration;
addFilterGroupsToIODs(table, config);
table.addColumn(-1, "Category", ODLColumnType.STRING, 0);
for (int i = 1; i <= config.getSeriesNames().size(); i++) {
table.addColumn(-1, "Series" + i, ODLColumnType.DOUBLE, 0);
}
return ret;
}
@Override
public Class<? extends Serializable> getConfigClass() {
return BarchartConfig.class;
}
@Override
public JPanel createConfigEditorPanel(ComponentConfigurationEditorAPI factory, int mode, Serializable config, boolean isFixedIO) {
return new BarchartConfigPanel((BarchartConfig) config);
}
@Override
public void registerScriptTemplates(ScriptTemplatesBuilder templatesApi) {
for (int i = 1; i <= 4; i++) {
String name = "Barchart with " + i + " series";
BarchartConfig barchartConfig = new BarchartConfig();
ArrayList<String> names = new ArrayList<>();
for (int j = 1; j <= i; j++) {
names.add("Series" + j);
}
barchartConfig.setSeriesNames(names);
templatesApi.registerTemplate(name, name, name,getIODsDefinition(templatesApi.getApi(), barchartConfig), barchartConfig);
}
}
@Override
public Icon getIcon(ODLApi api, int mode) {
return Icons.loadFromStandardPath("office-chart-bar.png");
}
@Override
protected BaseChartPanel createPanel(ODLApi api,BaseConfig config,
ODLTableReadOnly table) {
return new BarchartPanel(api,(BarchartConfig)config, table);
}
}