/*
* LabelPainterController.java
*
* Copyright (C) 2006-2014 Andrew Rambaut
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package figtree.panel;
import figtree.treeviewer.TreeViewer;
import figtree.treeviewer.painters.AttributeComboHelper;
import figtree.treeviewer.painters.AttributeComboHelperListener;
import jam.controlpalettes.AbstractController;
import jam.panels.OptionsPanel;
import javax.swing.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.Map;
import figtree.treeviewer.painters.LabelPainter;
/**
* @author Andrew Rambaut
* @version $Id$
*
* $HeadURL$
*
* $LastChangedBy$
* $LastChangedDate$
* $LastChangedRevision$
*/
public class LabelPainterController extends AbstractController {
private static final String DISPLAY_ATTRIBUTE_KEY = "displayAttribute";
public LabelPainterController(String tipKey,
final SimpleLabelPainter tipLabelPainter,
String nodeKey,
final SimpleLabelPainter nodeLabelPainter,
String branchKey,
final SimpleLabelPainter branchLabelPainter,
final TreeViewer treeViewer) {
this.tipKey = tipKey;
this.nodeKey = nodeKey;
this.branchKey = branchKey;
optionsPanel = new OptionsPanel();
tipComboBox = setupComboBox("Tips: ", tipLabelPainter, treeViewer);
tipComboBox.setSelectedIndex(1);
nodeComboBox = setupComboBox("Nodes: ", nodeLabelPainter, treeViewer);
branchComboBox = setupComboBox("Branches: ", branchLabelPainter, treeViewer);
}
private JComboBox setupComboBox(String title, final SimpleLabelPainter labelPainter, final TreeViewer treeViewer) {
// String[] attributes = labelPainter.getAttributes();
final JComboBox displayAttributeCombo = new JComboBox();
displayAttributeCombo.addItem("None");
for (String attribute : labelPainter.getAttributes()) {
displayAttributeCombo.addItem(attribute);
}
new AttributeComboHelper(displayAttributeCombo, treeViewer, "None", labelPainter.getIntent());
optionsPanel.addComponentWithLabel(title, displayAttributeCombo);
displayAttributeCombo.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent itemEvent) {
String attribute = (String)displayAttributeCombo.getSelectedItem();
if (attribute == null || attribute.equalsIgnoreCase("none")) {
labelPainter.setVisible(false);
} else {
labelPainter.setDisplayAttribute(attribute);
labelPainter.setVisible(true);
}
}
});
return displayAttributeCombo;
}
public JComponent getTitleComponent() {
return null;
}
public JPanel getPanel() {
return optionsPanel;
}
public boolean isInitiallyVisible() {
return false;
}
public void initialize() {
// nothing to do
}
public void setSettings(Map<String,Object> settings) {
tipComboBox.setSelectedItem(settings.get(tipKey+"."+DISPLAY_ATTRIBUTE_KEY));
nodeComboBox.setSelectedItem(settings.get(nodeKey+"."+DISPLAY_ATTRIBUTE_KEY));
branchComboBox.setSelectedItem(settings.get(branchKey+"."+DISPLAY_ATTRIBUTE_KEY));
}
public void getSettings(Map<String, Object> settings) {
settings.put(tipKey+"."+DISPLAY_ATTRIBUTE_KEY, tipComboBox.getSelectedItem().toString());
settings.put(nodeKey+"."+DISPLAY_ATTRIBUTE_KEY, nodeComboBox.getSelectedItem().toString());
settings.put(branchKey+"."+DISPLAY_ATTRIBUTE_KEY, branchComboBox.getSelectedItem().toString());
}
public String getTitle() {
return "";
}
private final OptionsPanel optionsPanel;
private final JComboBox tipComboBox;
private final JComboBox nodeComboBox;
private final JComboBox branchComboBox;
private final String tipKey;
private final String nodeKey;
private final String branchKey;
}