1 19 package org.netbeans.modules.refactoring.java.ui; 20 21 import java.awt.Component ; 22 import java.awt.Dimension ; 23 import java.util.ArrayList ; 24 import java.util.List ; 25 import javax.swing.JPanel ; 26 import javax.swing.UIManager ; 27 import javax.swing.event.ChangeListener ; 28 import javax.swing.event.DocumentEvent ; 29 import javax.swing.event.DocumentListener ; 30 import javax.swing.table.AbstractTableModel ; 31 import org.netbeans.api.java.source.TreePathHandle; 32 import org.netbeans.modules.refactoring.java.api.ExtractInterfaceRefactoring; 33 import org.netbeans.modules.refactoring.spi.ui.CustomRefactoringPanel; 34 import org.openide.util.NbBundle; 35 36 40 public class ExtractInterfacePanel extends JPanel implements CustomRefactoringPanel { 41 private static final String [] COLUMN_NAMES = {"LBL_Selected", "LBL_ExtractInterface_Member"}; private static final Class [] COLUMN_CLASSES = {Boolean .class, TreePathHandle.class}; 44 45 private final ExtractInterfaceRefactoring refactoring; 47 private final TableModel tableModel; 49 private Object [][] members = new Object [0][0]; 52 53 56 public ExtractInterfacePanel(ExtractInterfaceRefactoring refactoring, final ChangeListener parent) { 57 this.refactoring = refactoring; 58 this.tableModel = new TableModel (); 59 initComponents(); 60 setPreferredSize(new Dimension (420, 380)); 61 String defaultName = "NewInterface"; nameText.setText(defaultName); 63 nameText.setSelectionStart(0); 64 nameText.setSelectionEnd(defaultName.length()); 65 nameText.getDocument().addDocumentListener(new DocumentListener () { 66 public void changedUpdate(DocumentEvent event) { 67 parent.stateChanged(null); 68 } 69 public void insertUpdate(DocumentEvent event) { 70 parent.stateChanged(null); 71 } 72 public void removeUpdate(DocumentEvent event) { 73 parent.stateChanged(null); 74 } 75 }); 76 } 77 78 public void requestFocus() { 79 super.requestFocus(); 80 nameText.requestFocus(); 81 } 82 83 84 86 public void initialize() { 87 membersTable.setDefaultRenderer(COLUMN_CLASSES[1], new UIUtilities.JavaElementTableCellRenderer() { 90 protected String extractText(Object value) { 94 String displayValue = super.extractText(value); 95 return displayValue; 99 } 100 }); 101 scrollPane.setBackground(membersTable.getBackground()); 104 scrollPane.getViewport().setBackground(membersTable.getBackground()); 105 membersTable.setRowHeight(18); 107 if (UIManager.getColor("control") != null) { membersTable.setGridColor(UIManager.getColor("control")); } 111 UIUtilities.initColumnWidth(membersTable, 0, Boolean.TRUE, 4); 113 } 114 115 117 121 public String getIfcName() { 122 return nameText.getText(); 123 } 124 125 128 public TreePathHandle[] getMembers() { 129 List list = new ArrayList (); 130 for (int i = 0; i < members.length; i++) { 132 if (members[i][0].equals(Boolean.TRUE)) { 133 list.add(members[i][1]); 134 } 135 } 136 return (TreePathHandle[]) list.toArray(new TreePathHandle[list.size()]); 138 } 139 140 142 147 private void initComponents() { 149 150 namePanel = new javax.swing.JPanel (); 151 nameLabel = new javax.swing.JLabel (); 152 chooseLabel = new javax.swing.JLabel (); 153 nameText = new javax.swing.JTextField (); 154 scrollPane = new javax.swing.JScrollPane (); 155 membersTable = new javax.swing.JTable (); 156 157 setBorder(javax.swing.BorderFactory.createEmptyBorder(12, 12, 11, 11)); 158 setLayout(new java.awt.BorderLayout ()); 159 160 namePanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1)); 161 namePanel.setLayout(new java.awt.BorderLayout (12, 0)); 162 163 nameLabel.setLabelFor(nameText); 164 org.openide.awt.Mnemonics.setLocalizedText(nameLabel, org.openide.util.NbBundle.getMessage(ExtractInterfacePanel.class, "LBL_ExtractInterface_Name")); namePanel.add(nameLabel, java.awt.BorderLayout.WEST); 166 nameLabel.getAccessibleContext().setAccessibleName(null); 167 nameLabel.getAccessibleContext().setAccessibleDescription(null); 168 169 chooseLabel.setLabelFor(membersTable); 170 org.openide.awt.Mnemonics.setLocalizedText(chooseLabel, org.openide.util.NbBundle.getMessage(ExtractInterfacePanel.class, "LBL_ExtractInterfaceLabel")); chooseLabel.setBorder(javax.swing.BorderFactory.createEmptyBorder(6, 0, 0, 0)); 172 namePanel.add(chooseLabel, java.awt.BorderLayout.SOUTH); 173 namePanel.add(nameText, java.awt.BorderLayout.CENTER); 174 175 add(namePanel, java.awt.BorderLayout.NORTH); 176 177 membersTable.setModel(tableModel); 178 membersTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_NEXT_COLUMN); 179 scrollPane.setViewportView(membersTable); 180 membersTable.getAccessibleContext().setAccessibleName(null); 181 membersTable.getAccessibleContext().setAccessibleDescription(null); 182 183 add(scrollPane, java.awt.BorderLayout.CENTER); 184 } 186 187 private javax.swing.JLabel chooseLabel; 189 private javax.swing.JTable membersTable; 190 private javax.swing.JLabel nameLabel; 191 private javax.swing.JPanel namePanel; 192 private javax.swing.JTextField nameText; 193 private javax.swing.JScrollPane scrollPane; 194 196 198 200 private class TableModel extends AbstractTableModel { 201 TableModel() { 202 initialize(); 203 } 204 205 public int getColumnCount() { 206 return COLUMN_NAMES.length; 207 } 208 209 public String getColumnName(int column) { 210 return UIUtilities.getColumnName(NbBundle.getMessage(ExtractInterfacePanel.class, COLUMN_NAMES[column])); 211 } 212 213 public Class getColumnClass(int columnIndex) { 214 return COLUMN_CLASSES[columnIndex]; 215 } 216 217 public int getRowCount() { 218 return members.length; 219 } 220 221 public Object getValueAt(int rowIndex, int columnIndex) { 222 return members[rowIndex][columnIndex]; 223 } 224 225 public void setValueAt(Object value, int rowIndex, int columnIndex) { 226 members[rowIndex][columnIndex] = value; 227 } 228 229 public boolean isCellEditable(int rowIndex, int columnIndex) { 230 return columnIndex == 0; 232 } 233 234 235 private void initialize() { 236 } 278 } 279 280 public Component getComponent() { 281 return this; 282 } 283 } 284 | Popular Tags |