1 /*
2 Copyright (C) 2000 - 2007 Grid Systems, S.A.
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License, version 2, as
6 published by the Free Software Foundation.
7
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License
14 along with this program; if not, write to the Free Software
15 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 */
17
18 /*
19 * Project: KernelConfigurator
20 * Created on 03-mar-2004
21 *
22 * Copyright (c)2003 Grid Systems
23 */
24 package com.gridsystems.config.tools.console;
25
26 import java.io.IOException;
27 import java.text.MessageFormat;
28 import java.util.ResourceBundle;
29
30 import com.gridsystems.config.ConsoleConfiguratorView;
31 import com.gridsystems.config.app.UI;
32
33 /**
34 * Constant text field.
35 * <p>
36 *
37 * @author <a href="mailto:rruiz@gridsystems.com">Rodrigo Ruiz Aguayo</a>
38 * @version 1.0
39 */
40 public class ConstantField extends Field implements ConsoleViewAction {
41 /**
42 * Pattern to use for field display.
43 */
44 protected String linePattern;
45
46 /**
47 * The value.
48 */
49 protected String value;
50
51 /**
52 * Creates a new instance.
53 *
54 * @param bundle The resource bundle
55 * @param linePattern The pattern for field display
56 * @param value The value to display
57 */
58 public ConstantField(ResourceBundle bundle, String linePattern, String value) {
59 super(bundle);
60 this.linePattern = linePattern;
61 this.value = value;
62 }
63
64 /**
65 * {@inheritDoc}
66 */
67 public String getKeyMapping() {
68 return getString(this.linePattern + ".keyMap");
69 }
70
71 /**
72 * {@inheritDoc}
73 */
74 public String[] getContents() {
75 String[] contents = new String[1];
76
77 // Constructs the actual line pattern
78 StringBuffer pattern = new StringBuffer();
79 String key = getKeyMapping();
80 if (key != null) {
81 pattern.append(" ").append(key).append(". ");
82 }
83
84 pattern.append(getString(linePattern));
85
86 String s = getStringValue();
87 contents[0] = MessageFormat.format(pattern.toString(), new Object[] { s });
88 return contents;
89 }
90
91 /**
92 * Gets this field value.
93 *
94 * @return The value
95 */
96 public Object getValue() {
97 return value;
98 }
99
100 /**
101 * Sets the value of this field.
102 *
103 * @param value The new value
104 */
105 public void setValue(String value) {
106 this.value = value;
107 }
108
109
110 /**
111 * Gets the field value as a string.
112 *
113 * @return A string containing this field value
114 */
115 protected String getStringValue() {
116 if (value == null) {
117 return "";
118 } else {
119 return value;
120 }
121 }
122
123 /**
124 * Asks the user for the new value for this field. The empty string means to
125 * maintain the current value.
126 * <p>
127 * To specify an empty value, in trimmed fields a blank space can be used
128 * <p>
129 * This method does not return until the default value or a valid one is
130 * specified.
131 *
132 * @param view The view where this field is located
133 * @return It always returns true, as the edition does not imply an
134 * exit from the view execution loop.
135 * @see com.gridsystems.config.tools.console.ConsoleViewAction
136 */
137 public boolean execute(ConsoleConfiguratorView view) {
138 try {
139 String line = readLine();
140 if (line.equals("")) {
141 return true;
142 }
143 } catch (Exception e) {
144 e.printStackTrace();
145 }
146 return true;
147 }
148
149 /**
150 * Reads a line of text from the console.
151 *
152 * @return The read text
153 * @throws IOException If an error occurs while reading from the console
154 */
155 protected String readLine() throws IOException {
156 String line =
157 ConsoleTools.readLine(UI.getString("console.readLine.constantValue"));
158 return line;
159 }
160 }