public PlotPanel() {
// setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
setLayout(new BorderLayout());
JPanel panel;
Box section;
Box content = Box.createVerticalBox();
setName(resources.getString("PlotProperties"));
XYPlot plot = chart.getXYPlot();
// Create the title section
section=Box.createHorizontalBox();
section.add(new JLabel(resources.getString("PlotTitle:")));
section.add(tfTitle = new JTextField());
tfTitle.setText(chart.getTitle().getText());
content.add(section);
// X axis section
section = new Box(BoxLayout.Y_AXIS);
section.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),resources.getString("XAxis")));
panel = new JPanel();
panel.setLayout(new FlowLayout(FlowLayout.LEFT));
panel.add(pcbautox = new ActionCheckBox(resources.getString("Auto-update"), plot.getDomainAxis().isAutoRange()) {
public void actionPerformed(ActionEvent e) {
pcbfixedautox.setEnabled(isSelected());
pcbfixedautox.apply();
plpxmin.setEnabled(!isSelected());
plpxmax.setEnabled(!isSelected());
ptfpxmin.setEnabled(!isSelected());
ptfpxmax.setEnabled(!isSelected());
}
});
double autorange = plot.getDomainAxis().getFixedAutoRange();
panel.add(pcbfixedautox = new ActionCheckBox(resources.getString("FixedRange"),autorange!=0) {
public void actionPerformed(ActionEvent e) {
pnffixedautox.setEnabled(isSelected() && isEnabled());
}
});
panel.add(pnffixedautox = new NumberField(autorange,10));
section.add(panel);
panel = new JPanel();
panel.setLayout(new FlowLayout(FlowLayout.LEFT));
panel.add(plpxmin = new JLabel(resources.getString("minLabel")));
panel.add(ptfpxmin = new NumberField(10));
ptfpxmin.setValue(plot.getDomainAxis().getLowerBound());
panel.add(plpxmax = new JLabel(resources.getString("maxLabel")));
panel.add(ptfpxmax = new NumberField(10));
ptfpxmax.setValue(plot.getDomainAxis().getUpperBound());
section.add(panel);
pcbautox.apply();
content.add(section);
// X secondary axis section
if (plot.getSecondaryDomainAxis(0) != null) {
section = new Box(BoxLayout.Y_AXIS);
section.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),resources.getString("SecondaryXAxis")));
panel = new JPanel();
panel.setLayout(new FlowLayout(FlowLayout.LEFT));
panel.add(scbautox = new ActionCheckBox(resources.getString("Auto-update"), plot.getSecondaryDomainAxis(0).isAutoRange()) {
public void actionPerformed(ActionEvent e) {
scbfixedautox.setEnabled(isSelected());
scbfixedautox.apply();
slpxmin.setEnabled(!isSelected());
slpxmax.setEnabled(!isSelected());
stfpxmin.setEnabled(!isSelected());
stfpxmax.setEnabled(!isSelected());
}
});
autorange = plot.getSecondaryDomainAxis(0).getFixedAutoRange();
panel.add(scbfixedautox = new ActionCheckBox(resources.getString("FixedRange"),autorange!=0) {
public void actionPerformed(ActionEvent e) {
snffixedautox.setEnabled(isSelected() && isEnabled());
}
});
panel.add(snffixedautox = new NumberField(autorange,10));
section.add(panel);
panel = new JPanel();
panel.setLayout(new FlowLayout(FlowLayout.LEFT));
panel.add(slpxmin = new JLabel(resources.getString("minLabel")));
panel.add(stfpxmin = new NumberField(10));
stfpxmin.setValue(plot.getSecondaryDomainAxis(0).getLowerBound());
panel.add(slpxmax = new JLabel(resources.getString("maxLabel")));
panel.add(stfpxmax = new NumberField(10));
stfpxmax.setValue(plot.getSecondaryDomainAxis(0).getUpperBound());
section.add(panel);
scbautox.apply();
content.add(section);
}
// Now handle Y axis
section = new Box(BoxLayout.Y_AXIS);
section.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),resources.getString("YAxis")));
panel = new JPanel();
panel.setLayout(new FlowLayout(FlowLayout.LEFT));
panel.add(pcbautoy = new ActionCheckBox(resources.getString("Auto-update"), plot.getRangeAxis().isAutoRange()) {
public void actionPerformed(ActionEvent e) {
pcbfixedautoy.setEnabled(isSelected());
pcbfixedautoy.apply();
plpymin.setEnabled(!isSelected());
plpymax.setEnabled(!isSelected());
ptfpymin.setEnabled(!isSelected());
ptfpymax.setEnabled(!isSelected());
}
});
autorange = plot.getRangeAxis().getFixedAutoRange();
panel.add(pcbfixedautoy = new ActionCheckBox(resources.getString("FixedRange"),autorange!=0) {
public void actionPerformed(ActionEvent e) {
pnffixedautoy.setEnabled(isSelected() && isEnabled());
}
});
panel.add(pnffixedautoy = new NumberField(autorange,8));
panel.add(plpymin = new JLabel(resources.getString("minLabel")));
panel.add(ptfpymin = new NumberField(8));
ptfpymin.setValue(plot.getRangeAxis().getLowerBound());
panel.add(plpymax = new JLabel(resources.getString("maxLabel")));
panel.add(ptfpymax = new NumberField(8));
ptfpymax.setValue(plot.getRangeAxis().getUpperBound());
section.add(panel);
pcbautoy.apply();
section.add(panel);
Box box = Box.createHorizontalBox();
box.add(new JLabel(resources.getString("Curves:")));
box.add(pcbxcurves = new JComboBox());
box.add(pcurvecolor = new JButton(" "));
box.add(pcurvedelete = new JButton(resources.getString("Delete")));
section.add(box);
content.add(section);
pcbxcurves.setEditable(true);
noCurveColor = pcurvecolor.getBackground();
pcurvecolor.setFocusPainted(false);
SourceXYDataset dst = (SourceXYDataset)plot.getDataset();
int n = dst.getSeriesCount();
JSynopticXYItemRenderer renderer = (JSynopticXYItemRenderer)plot.getRenderer();
for (int i=0; i<n; ++i) {
DataSource ds = renderer.getDataSource(i);
if (ds==null) {
ds = dst.getYSource(i); // take the datasource associated with this curve by default
DataSource linked = DataInfo.getLinkedSource(ds); // and follow link if necessary
if (linked!=null) ds = linked;
}
pcbxcurves.addItem(new CbxEntry(i,dst.getSeriesName(i),(Color)renderer.getSeriesPaint(i),ds,renderer.getColorMapper(i)));
}
pcbxeditortf = (JTextField)pcbxcurves.getEditor().getEditorComponent();
pupdateForEntry(pcbxcurves.getSelectedItem());
pcbxcurves.addPopupMenuListener(new PopupMenuListener() {
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
peditLocked = true;
}
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
peditLocked = false;
}
public void popupMenuCanceled(PopupMenuEvent e) {
peditLocked = false;
}
});
pcbxcurves.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange()==ItemEvent.DESELECTED) pactiveEntry = null;
else pupdateForEntry(e.getItem());
}
});
pcbxeditortf.getDocument().addDocumentListener(new DocumentListener() {
public void insertUpdate(DocumentEvent e) {
updateName();
}
public void removeUpdate(DocumentEvent e) {
updateName();
}
public void changedUpdate(DocumentEvent e) {
updateName();
}
public void updateName() {
if ((peditLocked) || (pactiveEntry == null)) return;
pactiveEntry.name = pcbxeditortf.getText();
}
});
pcurvecolor.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (pactiveEntry==null) return;
DynamicColorChooser dialog = new DynamicColorChooser(
null, resources.getString("ChooseAColor"),null ,pactiveEntry.color,pactiveEntry.source,pactiveEntry.mapper);
dialog.pack();
dialog.setVisible(true);
if (dialog.isOk()){
pactiveEntry.color = dialog.getColor();
pactiveEntry.source = dialog.getSource();
pactiveEntry.mapper = dialog.getMapper();
pupdateForEntry(pactiveEntry);
}
}
});
pcurvedelete.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (pactiveEntry==null) return;
pcbxcurves.removeItem(pactiveEntry);
}
});
// Now handle Secondary Y axis
if (plot.getSecondaryRangeAxis(0) != null) {
section = new Box(BoxLayout.Y_AXIS);
section.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),resources.getString("SecondaryYAxis")));
panel = new JPanel();
panel.setLayout(new FlowLayout(FlowLayout.LEFT));
panel.add(scbautoy = new ActionCheckBox(resources.getString("Auto-update"), plot.getSecondaryRangeAxis(0).isAutoRange()) {
public void actionPerformed(ActionEvent e) {
scbfixedautoy.setEnabled(isSelected());
scbfixedautoy.apply();
slpymin.setEnabled(!isSelected());
slpymax.setEnabled(!isSelected());
stfpymin.setEnabled(!isSelected());
stfpymax.setEnabled(!isSelected());
}
});
autorange = plot.getSecondaryRangeAxis(0).getFixedAutoRange();
panel.add(scbfixedautoy = new ActionCheckBox(resources.getString("FixedRange"),autorange!=0) {
public void actionPerformed(ActionEvent e) {
snffixedautoy.setEnabled(isSelected() && isEnabled());
}
});
panel.add(snffixedautoy = new NumberField(autorange,8));
panel.add(slpymin = new JLabel(resources.getString("minLabel")));
panel.add(stfpymin = new NumberField(8));
stfpymin.setValue(plot.getSecondaryRangeAxis(0).getLowerBound());
panel.add(slpymax = new JLabel(resources.getString("maxLabel")));
panel.add(stfpymax = new NumberField(8));
stfpymax.setValue(plot.getSecondaryRangeAxis(0).getUpperBound());
section.add(panel);
scbautoy.apply();
section.add(panel);
box = Box.createHorizontalBox();
box.add(new JLabel(resources.getString("Curves:")));
box.add(scbxcurves = new JComboBox());
box.add(scurvecolor = new JButton(" "));
box.add(scurvedelete = new JButton(resources.getString("Delete")));
section.add(box);
content.add(section);
scbxcurves.setEditable(true);
//noCurveColor = scurvecolor.getBackground();