package org.chartsy.main.dialogs; import java.awt.BorderLayout; import javax.swing.JPanel; import org.chartsy.main.ChartFrame; import org.chartsy.main.chart.Indicator; import org.chartsy.main.chart.Overlay; import org.openide.DialogDescriptor; import org.openide.DialogDisplayer; import org.openide.explorer.propertysheet.PropertySheet; import org.openide.nodes.Node; /** * * @author Viorel */ public class SettingsPanel extends JPanel { private static SettingsPanel instance; private PropertySheet propertySheet; private String title = ""; public static SettingsPanel getDefault() { if (instance == null) instance = new SettingsPanel(); return instance; } private SettingsPanel() { super(new BorderLayout()); setOpaque(false); initComponents(); } private void initComponents() { propertySheet = new PropertySheet(); add(propertySheet, BorderLayout.CENTER); } public void forChart(ChartFrame chartFrame) { title = "Chart Settings"; propertySheet.setNodes(new Node[] { chartFrame.getNode() }); } public void forIndicator(Indicator indicator) { title = indicator.getName() + " Settings"; propertySheet.setNodes(new Node[] { indicator.getNode() }); } public void forOverlay(Overlay overlay) { title = overlay.getName() + " Settings"; propertySheet.setNodes(new Node[] { overlay.getNode() }); } public void reset() { propertySheet.setNodes(new Node[0]); title = ""; } public void openSettingsWindow(Object object) { if (object instanceof ChartFrame) forChart((ChartFrame) object); else if (object instanceof Indicator) forIndicator((Indicator) object); else if (object instanceof Overlay) forOverlay((Overlay) object); else return; DialogDescriptor descriptor = new DialogDescriptor( this, title, true, null); descriptor.setMessageType(DialogDescriptor.PLAIN_MESSAGE); descriptor.setOptions(new Object[] {DialogDescriptor.OK_OPTION}); Object ret = DialogDisplayer.getDefault().notify(descriptor); if (ret != null) { /*if (object instanceof ChartFrame) ((ChartFrame) object).repaint(); else */if (object instanceof Indicator) ((Indicator) object).calculate(); else if (object instanceof Overlay) ((Overlay) object).calculate(); } } }