1 19 20 package org.netbeans.modules.web.project.ui.customizer; 21 22 import java.io.File ; 23 import java.util.ArrayList ; 24 import java.util.Arrays ; 25 import java.util.Collection ; 26 import java.util.Iterator ; 27 import java.util.LinkedList ; 28 import java.util.List ; 29 import java.util.Set ; 30 31 import javax.swing.JTable ; 32 import javax.swing.ListSelectionModel ; 33 import javax.swing.table.AbstractTableModel ; 34 35 import org.netbeans.api.project.libraries.Library; 36 37 import org.netbeans.modules.web.project.classpath.ClassPathSupport; 38 39 43 public class WarIncludesUiSupport { 44 45 static private Object [][] data; 46 47 49 public static ClasspathTableModel createTableModel( List items ) { 50 51 ClasspathTableModel model = new ClasspathTableModel(); 52 53 data = new Object [items.size()][2]; 54 for (int i = 0; i < items.size(); i++) { 55 model.setValueAt((ClassPathSupport.Item) items.get(i), i, 0); 56 String pathInWAR = ((ClassPathSupport.Item) items.get(i)).getPathInWAR(); 57 model.setValueAt(pathInWAR, i, 1); 58 } 59 60 model.fireTableDataChanged(); 61 62 return model; 63 } 64 65 public static List getList( ClasspathTableModel model ) { 66 List items= new LinkedList (); 67 for (int i = 0; i < data.length; i++) 68 items.add(data[i][0]); 69 return items; 70 } 71 72 public static Iterator getIterator( ClasspathTableModel model ) { 73 return getList(model).iterator(); 74 } 75 76 78 public static void remove( JTable list ) { 79 ListSelectionModel sm = list.getSelectionModel(); 80 int index = sm.getMinSelectionIndex(); 81 if (sm.isSelectionEmpty()) { 82 assert false : "Remove button should be disabled"; } 84 Collection elements = new ArrayList (); 85 final int n0 = data.length; 86 for (int i = 0; i < n0; i++) { 87 if (!sm.isSelectedIndex(i)) { 88 elements.add(data[i]); 89 } 90 } 91 final int n = elements.size(); 92 data = (Object [][]) elements.toArray(new Object [n][2]); 93 ((ClasspathTableModel) list.getModel()).fireTableRowsDeleted(elements.size(), n0 - 1); 94 95 if (index >= n) { 96 index = n - 1; 97 } 98 sm.setSelectionInterval(index, index); 99 } 100 101 public static void addLibraries(Library[] libraries, Set alreadyIncludedLibs, JTable table) { 102 if (libraries.length > 0) { 103 List newLibList = new ArrayList (Arrays.asList(libraries)); 104 table.clearSelection(); 105 int n0 = data.length; 106 for (int i = 0; i < n0; i++) { 107 ClassPathSupport.Item item = (ClassPathSupport.Item) data[i][0]; 108 if(item.getType() == ClassPathSupport.Item.TYPE_LIBRARY) { 109 if(newLibList.remove(item.getObject())) 110 table.addRowSelectionInterval(i, i); 111 } 112 } 113 int n = newLibList.size(); 114 if (n > 0) { 115 Object [][] newData = new Object [n0 + n][2]; 116 for (int i = 0; i < n0; i++) 117 newData[i] = data[i]; 118 for (int i = 0; i < n; i++) { 119 newData[n0 + i][0] = ClassPathSupport.Item.create((Library) newLibList.get(i), null, ClassPathSupport.Item.PATH_IN_WAR_APPLET); 120 newData[n0 + i][1] = ClassPathSupport.Item.PATH_IN_WAR_APPLET; 121 } 122 123 data = newData; 124 ((ClasspathTableModel) table.getModel()).fireTableRowsInserted(n0, n0 + n - 1); 125 table.addRowSelectionInterval(n0, n0 + n - 1); 126 } 127 } 128 } 129 130 public static void addJarFiles(File files[], ClasspathTableModel tableModel) { 131 Object [][] newData = new Object [data.length + files.length][2]; 132 for (int i = 0; i < data.length; i++) 133 newData[i] = data[i]; 134 for (int i = 0; i < files.length; i++) { 135 newData[data.length + i][0] = ClassPathSupport.Item.create (files[i], null, ClassPathSupport.Item.PATH_IN_WAR_APPLET); 136 newData[data.length + i][1] = ClassPathSupport.Item.PATH_IN_WAR_APPLET; 137 } 138 139 data = newData; 140 tableModel.fireTableRowsInserted(data.length, data.length + files.length - 1); 141 } 142 143 public static void addArtifacts(AntArtifactChooser.ArtifactItem artifactItems[], ClasspathTableModel tableModel) { 144 Object [][] newData = new Object [data.length + artifactItems.length][2]; 145 for (int i = 0; i < data.length; i++) 146 newData[i] = data[i]; 147 for (int i = 0; i < artifactItems.length; i++) { 148 newData[data.length + i][0] = ClassPathSupport.Item.create (artifactItems[i].getArtifact(), artifactItems[i].getArtifactURI(), null, ClassPathSupport.Item.PATH_IN_WAR_APPLET); 149 newData[data.length + i][1] = ClassPathSupport.Item.PATH_IN_WAR_APPLET; 150 } 151 152 data = newData; 153 tableModel.fireTableRowsInserted(data.length, data.length + artifactItems.length - 1); 154 } 155 156 static class ClasspathTableModel extends AbstractTableModel { 157 public int getColumnCount() { 158 return 2; } 160 161 public int getRowCount() { 162 if (data == null) 163 return 0; 164 return data.length; 165 } 166 167 public Object getValueAt(int row, int col) { 168 return data[row][col]; 169 } 170 171 public boolean isCellEditable(int row, int col) { 172 if (col == 1) 173 return true; 174 else 175 return false; 176 } 177 178 public void setValueAt(Object value, int row, int col) { 179 data[row][col] = value; 180 fireTableCellUpdated(row, col); 181 } 182 } 183 184 } 185 | Popular Tags |