package org.chartsy.main.managers; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import org.chartsy.main.chart.Chart; import org.openide.util.Lookup; /** * * @author viorel.gheba */ public class ChartManager { private static ChartManager instance; private LinkedHashMap<String, Chart> charts; public static ChartManager getDefault() { if (instance == null) instance = new ChartManager(); return instance; } private ChartManager() { charts = new LinkedHashMap<String, Chart>(); Collection<? extends Chart> list = Lookup.getDefault().lookupAll(Chart.class); for (Chart c : list) charts.put(c.getName(), c); sort(); } private void sort() { List<String> mapKeys = new ArrayList<String>(charts.keySet()); Collections.sort(mapKeys); LinkedHashMap<String, Chart> someMap = new LinkedHashMap<String, Chart>(); for (int i = 0; i < mapKeys.size(); i++) someMap.put(mapKeys.get(i), charts.get(mapKeys.get(i))); charts = someMap; } public Chart getChart(String key) { return charts.get(key); } public List<String> getCharts() { List<String> list = new ArrayList<String>(charts.keySet()); Collections.sort(list); return list; } public List<String> getCharts(String current) { List<String> list = new ArrayList<String>(charts.keySet()); list.remove(current); Collections.sort(list); return list; } }