001: // IPTemplateArrayEditor.java
002: // $Id: IPTemplateArrayEditor.java,v 1.3 2000/08/16 21:37:29 ylafon Exp $
003: // (c) COPYRIGHT MIT and INRIA, 1997.
004: // Please first read the full copyright statement in file COPYRIGHT.html
005:
006: package org.w3c.jigadmin.attributes;
007:
008: import java.awt.Component;
009: import java.awt.Dimension;
010:
011: import java.util.Properties;
012: import java.util.StringTokenizer;
013:
014: import org.w3c.tools.resources.Attribute;
015:
016: import org.w3c.jigadm.RemoteResourceWrapper;
017: import org.w3c.jigadm.editors.EditorFeeder;
018:
019: import org.w3c.jigsaw.admin.RemoteResource;
020: import org.w3c.jigsaw.admin.RemoteAccessException;
021:
022: import org.w3c.tools.widgets.IPTextField;
023: import org.w3c.tools.widgets.TextEditable;
024:
025: /**
026: * IPTemplateArrayEditor :
027: * @author Benoit Mahe <bmahe@sophia.inria.fr>
028: */
029:
030: public class IPTemplateArrayEditor extends StringArrayEditor {
031:
032: protected short oldshortarray[][] = null;
033:
034: private String shortsToIPString(short one, short two, short three,
035: short four) {
036: return (((one == 256) ? "*" : String.valueOf((int) one)) + "."
037: + ((two == 256) ? "*" : String.valueOf((int) two))
038: + "."
039: + ((three == 256) ? "*" : String.valueOf((int) three))
040: + "." + ((four == 256) ? "*" : String
041: .valueOf((int) four)));
042: }
043:
044: protected String[] toStringArray(short selectedItems[][]) {
045: if (selectedItems == null)
046: return null;
047: String selected[] = new String[selectedItems.length];
048: for (int i = 0; i < selectedItems.length; i++)
049: selected[i] = shortsToIPString(selectedItems[i][0],
050: selectedItems[i][1], selectedItems[i][2],
051: selectedItems[i][3]);
052: return selected;
053: }
054:
055: protected void setSelectedItems(short selectedItems[][]) {
056: comp.setSelectedItems(toStringArray(selectedItems));
057: }
058:
059: /**
060: * reset the changes (if any)
061: */
062: public void resetChanges() {
063: hasChanged = false;
064: setSelectedItems(oldshortarray);
065: }
066:
067: /**
068: * Get the current value of the edited value
069: * @return an object or <strong>null</strong> if the object was not
070: * initialized
071: */
072: public Object getValue() {
073: StringTokenizer st = null;
074: String stvalue[] = comp.getSelectedItems();
075: short shvalue[][] = new short[stvalue.length][4];
076: for (int i = 0; i < stvalue.length; i++) {
077: st = new StringTokenizer(stvalue[i], ".");
078: int j = 0;
079: while (j < 4 && st.hasMoreTokens()) {
080: String tok = st.nextToken();
081: if (tok.equals("*"))
082: shvalue[i][j] = (short) 256;
083: else {
084: try {
085: shvalue[i][j] = Short.parseShort(tok);
086: } catch (NumberFormatException ex) {
087: ex.printStackTrace();
088: shvalue[i][j] = (short) 0;
089: }
090: }
091: j++;
092: }
093: }
094: return shvalue;
095: }
096:
097: /**
098: * Set the value of the edited value
099: * @param o the new value.
100: */
101: public void setValue(Object o) {
102: this .oldshortarray = (short[][]) o;
103: setSelectedItems(oldshortarray);
104: }
105:
106: protected TextEditable getTextEditor() {
107: return new IPTextField();
108: }
109:
110: protected Dimension getPopupSize() {
111: return new Dimension(350, 250);
112: }
113:
114: /**
115: * Initialize the editor
116: * @param w the ResourceWrapper father of the attribute
117: * @param a the Attribute we are editing
118: * @param o the value of the above attribute
119: * @param p some Properties, used to fine-tune the editor
120: * @exception RemoteAccessException if a remote access error occurs.
121: */
122: public void initialize(RemoteResourceWrapper w, Attribute a,
123: Object o, Properties p) throws RemoteAccessException {
124: // Get the feeder class fromproperties:
125: EditorFeeder feeder = null;
126: String feederClass = null;
127:
128: feederClass = (String) p.get(FEEDER_CLASS_P);
129: if (feederClass == null)
130: throw new RuntimeException(
131: "StringArrayEditor mis-configuration: "
132: + FEEDER_CLASS_P + " property undefined.");
133: try {
134: Class c = Class.forName(feederClass);
135: feeder = (EditorFeeder) c.newInstance();
136: feeder.initialize(w, p);
137: } catch (Exception ex) {
138: ex.printStackTrace();
139: throw new RuntimeException(
140: "StringArrayEditor mis-configured: "
141: + " unable to instantiate " + feederClass
142: + ".");
143: }
144: this .frame = ((org.w3c.jigadmin.RemoteResourceWrapper) w)
145: .getServerBrowser().getFrame();
146:
147: oldshortarray = (short[][]) o;
148: createComponent(feeder, toStringArray(oldshortarray));
149: }
150:
151: public IPTemplateArrayEditor() {
152: super();
153: }
154: }
|