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 javax.swing.DefaultCellEditor; import javax.swing.JTextField; import org.droiddraw.AndroidEditor; import org.droiddraw.Main; import org.droiddraw.util.StringHandler; public class StringsPanel extends AbstractDataPanel { private static final long serialVersionUID = 1L; public StringsPanel() { super(new Class<?>[] {String.class, String.class}); dataTable.getColumnModel().getColumn(0).setCellEditor(new DefaultCellEditor(new JTextField())); dataTable.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(new JTextField())); } @Override protected int parentRowCount() { Hashtable<String,String> strings = AndroidEditor.instance().getStrings(); if (strings != null) return strings.size(); return 0; } @Override protected Object parentValueAt(int row, int col) { Hashtable<String,String> strings = AndroidEditor.instance().getStrings(); ArrayList<String> sorted = Collections.list(strings.keys()); Collections.sort(sorted); if (col == 0) { return sorted.get(row); } else if (col == 1) { return strings.get(sorted.get(row)); } return null; } @Override protected void parentSetValueAt(Object value, int rowIndex, int columnIndex) { String key = (String)parentValueAt(rowIndex, 0); Hashtable<String,String> strings = AndroidEditor.instance().getStrings(); if (columnIndex == 1) { strings.put(key, (String)value); } else { String val = strings.get(key); strings.remove(key); strings.put((String)value, val); } } @Override protected void parentDeleteRow(int row) { String key = (String)parentValueAt(row, 0); Hashtable<String,String> strings = AndroidEditor.instance().getStrings(); strings.remove(key); } @Override protected void doSave() { File out = AndroidEditor.instance().getStringFile(); if (out == null) { out = Main.doSaveBasic(); } if (out != null) { try { StringHandler.dump(new FileWriter(out), AndroidEditor.instance().getStrings()); } catch (IOException ex) { AndroidEditor.instance().error(ex); } } } @Override protected void addValue(String name) { AndroidEditor.instance().getStrings().put(name, ""); } }