package org.droiddraw.gui; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Hashtable; import java.util.StringTokenizer; import java.util.Vector; import org.droiddraw.AndroidEditor; import org.droiddraw.Main; import org.droiddraw.util.ArrayHandler; public class ArrayPanel extends AbstractDataPanel { private static final long serialVersionUID = 1L; public ArrayPanel() { super(new Class<?>[] {String.class, String.class}); } @Override protected void addValue(String name) { AndroidEditor.instance().getArrays().put(name, new Vector<String>()); } @Override protected void doSave() { File f = AndroidEditor.instance().getArrayFile(); try { if (f == null) { f = Main.doSaveBasic(); } if (f != null) { FileWriter fw = new FileWriter(f); ArrayHandler.dump(fw, AndroidEditor.instance().getArrays()); fw.flush(); fw.close(); } } catch (IOException ex) { AndroidEditor.instance().error(ex); } } @Override protected void parentDeleteRow(int row) { String key = (String)parentValueAt(row, 0); Hashtable<String,Vector<String>> arrays = AndroidEditor.instance().getArrays(); arrays.remove(key); } @Override protected int parentRowCount() { Hashtable<String,Vector<String>> arrays = AndroidEditor.instance().getArrays(); return arrays.size(); } @Override protected void parentSetValueAt(Object value, int rowIndex, int columnIndex) { String key = (String)parentValueAt(rowIndex, 0); Hashtable<String, Vector<String>> arrays = AndroidEditor.instance().getArrays(); if (columnIndex == 1) { String val = (String)value; Vector<String> data = arrays.get(key); data.clear(); StringTokenizer tok = new StringTokenizer(val, ","); while (tok.hasMoreTokens()) { data.add(tok.nextToken()); } arrays.put(key, data); } else { Vector<String> val = arrays.get(key); arrays.remove(key); arrays.put((String)value, val); } } @Override protected Object parentValueAt(int row, int col) { Hashtable<String,Vector<String>> arrays = AndroidEditor.instance().getArrays(); ArrayList<String> sorted = Collections.list(arrays.keys()); Collections.sort(sorted); if (col == 0) { return sorted.get(row); } else if (col == 1) { Vector<String> data = arrays.get(sorted.get(row)); String res = ""; if (data.size() > 0) { res = data.get(0); for (int i=1;i<data.size();i++) { res = res + "," + data.get(i); } } return res; } return null; } }