KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > lowagie > tools > arguments > OptionArgument


1 /*
2  * $Id: OptionArgument.java,v 1.6 2005/03/31 07:23:03 blowagie Exp $
3  * $Name: $
4  *
5  * Copyright 2005 by Bruno Lowagie.
6  *
7  * The contents of this file are subject to the Mozilla Public License Version 1.1
8  * (the "License"); you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at http://www.mozilla.org/MPL/
10  *
11  * Software distributed under the License is distributed on an "AS IS" basis,
12  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13  * for the specific language governing rights and limitations under the License.
14  *
15  * The Original Code is 'iText, a free JAVA-PDF library'.
16  *
17  * The Initial Developer of the Original Code is Bruno Lowagie. Portions created by
18  * the Initial Developer are Copyright (C) 1999, 2000, 2001, 2002 by Bruno Lowagie.
19  * All Rights Reserved.
20  * Co-Developer of the code is Paulo Soares. Portions created by the Co-Developer
21  * are Copyright (C) 2000, 2001, 2002 by Paulo Soares. All Rights Reserved.
22  *
23  * Contributor(s): all the names of the contributors are added in the source code
24  * where applicable.
25  *
26  * Alternatively, the contents of this file may be used under the terms of the
27  * LGPL license (the "GNU LIBRARY GENERAL PUBLIC LICENSE"), in which case the
28  * provisions of LGPL are applicable instead of those above. If you wish to
29  * allow use of your version of this file only under the terms of the LGPL
30  * License and not to allow others to use your version of this file under
31  * the MPL, indicate your decision by deleting the provisions above and
32  * replace them with the notice and other provisions required by the LGPL.
33  * If you do not delete the provisions above, a recipient may use your version
34  * of this file under either the MPL or the GNU LIBRARY GENERAL PUBLIC LICENSE.
35  *
36  * This library is free software; you can redistribute it and/or modify it
37  * under the terms of the MPL as stated above or under the terms of the GNU
38  * Library General Public License as published by the Free Software Foundation;
39  * either version 2 of the License, or any later version.
40  *
41  * This library is distributed in the hope that it will be useful, but WITHOUT
42  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
43  * FOR A PARTICULAR PURPOSE. See the GNU Library general Public License for more
44  * details.
45  *
46  * If you didn't download this code from the following link, you should check if
47  * you aren't using an obsolete version:
48  * http://www.lowagie.com/iText/
49  */

50 package com.lowagie.tools.arguments;
51
52 import java.awt.event.ActionEvent;
53 import java.util.Iterator;
54 import java.util.TreeMap;
55
56 import javax.swing.JComboBox;
57 import javax.swing.JOptionPane;
58
59 import com.lowagie.tools.plugins.AbstractTool;
60
61 /**
62  * Argument that can be one of several options.
63  */

64 public class OptionArgument extends ToolArgument {
65
66     /**
67      * An Entry that can be chosen as option.
68      */

69     public class Entry {
70         /** Describes the option. */
71         private Object description;
72         /** Holds the actual value of the option. */
73         private Object value;
74         /**
75          * Constructs an entry.
76          * @param value the value of the entry (that wil be identical to the description)
77          */

78         public Entry(Object value) {
79             this.value = value;
80             this.description = value;
81         }
82         /**
83          * Constructs an entry.
84          * @param description the description of the entry
85          * @param value the value of the entry
86          */

87         public Entry(Object description, Object value) {
88             this.description = description;
89             this.value = value;
90         }
91         /**
92          * String representation of the Entry.
93          * @return a description of the entry
94          */

95         public String toString() {
96             return description.toString();
97         }
98         /**
99          * Gets the value of the String.
100          * @return the toString of the value
101          */

102         public String getValueToString() {
103             return value.toString();
104         }
105         /**
106          * @return Returns the description.
107          */

108         public Object getDescription() {
109             return description;
110         }
111         /**
112          * @param description The description to set.
113          */

114         public void setDescription(Object description) {
115             this.description = description;
116         }
117         /**
118          * @return Returns the value.
119          */

120         public Object getValue() {
121             return value;
122         }
123         /**
124          * @param value The value to set.
125          */

126         public void setValue(Object value) {
127             this.value = value;
128         }
129     }
130     
131     private TreeMap options = new TreeMap();
132     
133     /**
134      * Constructs an OptionArgument.
135      * @param tool the tool that needs this argument
136      * @param name the name of the argument
137      * @param description the description of the argument
138      */

139     public OptionArgument(AbstractTool tool, String name, String description) {
140         super(tool, name, description, Entry.class.getName());
141     }
142     
143     /**
144      * Adds an Option.
145      * @param description the description of the option
146      * @param value the value of the option
147      */

148     public void addOption(Object description, Object value) {
149         options.put(value.toString(), new Entry(description, value));
150     }
151     
152     /**
153      * Gets the argument as an object.
154      * @return an object
155      * @throws InstantiationException
156      */

157     public Object getArgument() throws InstantiationException {
158         if (value == null) return null;
159         try {
160             return ((Entry)options.get(value)).getValue();
161         } catch (Exception e) {
162             throw new InstantiationException(e.getMessage());
163         }
164     }
165     
166     /**
167      * @see com.lowagie.tools.arguments.ToolArgument#getUsage()
168      */

169     public String getUsage() {
170         StringBuffer buf = new StringBuffer(super.getUsage());
171         buf.append(" possible options:\n");
172         Entry entry;
173         for (Iterator i = options.values().iterator(); i.hasNext(); ) {
174             entry = (Entry)i.next();
175             buf.append(" - ");
176             buf.append(entry.getValueToString());
177             buf.append(": ");
178             buf.append(entry.toString());
179             buf.append("\n");
180         }
181         return buf.toString();
182     }
183     
184     /**
185      * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
186      */

187     public void actionPerformed(ActionEvent evt) {
188         Object[] message = new Object[2];
189         message[0] = "Choose one of the following options:";
190         JComboBox cb = new JComboBox();
191         for(Iterator i = options.values().iterator(); i.hasNext(); ) {
192             cb.addItem(i.next());
193         }
194         message[1] = cb;
195         int result = JOptionPane.showOptionDialog(
196                 tool.getInternalFrame(),
197                 message,
198                 description,
199                 JOptionPane.OK_CANCEL_OPTION,
200                 JOptionPane.QUESTION_MESSAGE,
201                 null,
202                 null,
203                 null
204             );
205         if (result == 0) {
206             Entry entry = (Entry)cb.getSelectedItem();
207             setValue(entry.getValueToString());
208         }
209     }
210 }
Popular Tags