/* * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* * SelectedTagEditor.java * Copyright (C) 1999 University of Waikato, Hamilton, New Zealand * */ package weka.gui; import weka.core.Tag; import weka.core.SelectedTag; import java.awt.BorderLayout; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.beans.PropertyEditor; import java.beans.PropertyEditorSupport; import javax.swing.JFrame; import javax.swing.JLabel; /** * A PropertyEditor that uses tags, where the tags are obtained from a * weka.core.SelectedTag object. * * @author Len Trigg (trigg@cs.waikato.ac.nz) * @version $Revision: 1.8 $ */ public class SelectedTagEditor extends PropertyEditorSupport { /** * Returns a description of the property value as java source. * * @return a value of type 'String' */ public String getJavaInitializationString() { SelectedTag s = (SelectedTag)getValue(); Tag [] tags = s.getTags(); String result = "new SelectedTag(" + s.getSelectedTag().getID() + ", {\n"; for (int i = 0; i < tags.length; i++) { result += "new Tag(" + tags[i].getID() + ",\"" + tags[i].getReadable() + "\")"; if (i < tags.length - 1) { result += ','; } result += '\n'; } return result + "})"; } /** * Gets the current value as text. * * @return a value of type 'String' */ public String getAsText() { SelectedTag s = (SelectedTag)getValue(); return s.getSelectedTag().getReadable(); } /** * Sets the current property value as text. * * @param text the text of the selected tag. * @exception java.lang.IllegalArgumentException if an error occurs */ public void setAsText(String text) { SelectedTag s = (SelectedTag)getValue(); Tag [] tags = s.getTags(); try { for (int i = 0; i < tags.length; i++) { if (text.equals(tags[i].getReadable())) { setValue(new SelectedTag(tags[i].getID(), tags)); return; } } } catch (Exception ex) { throw new java.lang.IllegalArgumentException(text); } } /** * Gets the list of tags that can be selected from. * * @return an array of string tags. */ public String[] getTags() { SelectedTag s = (SelectedTag)getValue(); Tag [] tags = s.getTags(); String [] result = new String [tags.length]; for (int i = 0; i < tags.length; i++) { result[i] = tags[i].getReadable(); } return result; } /** * Tests out the selectedtag editor from the command line. * * @param args ignored */ public static void main(String [] args) { try { GenericObjectEditor.registerEditors(); Tag [] tags = { new Tag(1, "First option"), new Tag(2, "Second option"), new Tag(3, "Third option"), new Tag(4, "Fourth option"), new Tag(5, "Fifth option"), }; SelectedTag initial = new SelectedTag(1, tags); SelectedTagEditor ce = new SelectedTagEditor(); ce.setValue(initial); PropertyValueSelector ps = new PropertyValueSelector(ce); JFrame f = new JFrame(); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); f.getContentPane().setLayout(new BorderLayout()); f.getContentPane().add(ps, BorderLayout.CENTER); f.pack(); f.setVisible(true); } catch (Exception ex) { ex.printStackTrace(); System.err.println(ex.getMessage()); } } }