1 19 package org.openharmonise.him.serverconfig.permissions.list; 20 21 import java.awt.BorderLayout ; 22 import java.awt.Color ; 23 import java.awt.Component ; 24 import java.awt.Container ; 25 import java.awt.Dimension ; 26 import java.awt.LayoutManager ; 27 import java.awt.event.MouseEvent ; 28 import java.awt.event.MouseListener ; 29 import java.util.ArrayList ; 30 import java.util.Iterator ; 31 32 import javax.swing.BorderFactory ; 33 import javax.swing.JPanel ; 34 import javax.swing.JScrollPane ; 35 36 import org.openharmonise.vfs.*; 37 38 39 46 public class PermissionsSelectionList 47 extends JPanel 48 implements MouseListener , LayoutManager { 49 50 53 private Object [] m_roleCells = null; 54 55 58 private JPanel m_list = null; 59 60 63 private JScrollPane m_scroller = null; 64 65 68 private int m_nHeight = 0; 69 70 73 private int m_nWidth = 340; 74 75 78 private ArrayList m_listeners = new ArrayList (); 79 80 83 public PermissionsSelectionList() { 84 super(); 85 this.setup(); 86 } 87 88 93 public PermissionsSelectionList(Object [] vals) { 94 super(); 95 m_roleCells = vals; 96 this.setup(); 97 } 98 99 102 private PermissionsSelectionList(boolean arg0) { 103 super(arg0); 104 } 105 106 109 private PermissionsSelectionList(LayoutManager arg0) { 110 super(arg0); 111 } 112 113 117 private PermissionsSelectionList(LayoutManager arg0, boolean arg1) { 118 super(arg0, arg1); 119 } 120 121 private void setup() { 122 this.setLayout(new BorderLayout ()); 123 this.setBorder( BorderFactory.createLineBorder(Color.BLACK) ); 124 125 126 this.setBackground(Color.WHITE); 127 128 m_list = new JPanel (); 129 m_list.setBackground(Color.WHITE); 130 m_list.setLayout(this); 131 132 m_scroller = new JScrollPane (m_list, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 133 m_scroller.setPreferredSize(new Dimension (270,300)); 134 135 this.add(m_scroller); 136 this.validate(); 137 } 138 139 142 public void removeLayoutComponent(Component arg0) { 143 } 144 145 148 public void layoutContainer(Container container) { 149 int nCount = container.getComponentCount(); 150 int nHeight = 0; 151 152 nCount = container.getComponentCount(); 153 for(int i=0; i<nCount; i++) { 154 Component comp = container.getComponent(i); 155 comp.setSize(comp.getPreferredSize()); 156 comp.setLocation(0, nHeight); 157 nHeight = nHeight + comp.getPreferredSize().height; 158 } 159 if(nHeight!=this.m_nHeight) { 160 this.m_nHeight = nHeight; 161 if(nHeight>300) { 162 ((JPanel )container).setPreferredSize(new Dimension (m_nWidth, nHeight)); 163 this.m_scroller.validate(); 164 } else { 165 ((JPanel )container).setPreferredSize(new Dimension (m_nWidth,300)); 166 this.m_scroller.validate(); 167 } 168 } 169 } 170 171 172 173 174 177 public void addLayoutComponent(String arg0, Component arg1) { 178 } 179 180 183 public Dimension minimumLayoutSize(Container arg0) { 184 return new Dimension (m_nWidth, this.m_roleCells.length*20); 185 } 186 187 190 public Dimension preferredLayoutSize(Container arg0) { 191 return new Dimension (m_nWidth, 100); 192 } 193 194 195 198 public Dimension getPreferredSize() { 199 return new Dimension (300,300); 200 } 201 202 public void removeFile(String sPath) { 203 for(int i=0; i<m_list.getComponentCount(); i++) { 204 if((m_list.getComponent(i) instanceof PermissionsSelectionCell)) { 205 if( ((PermissionsSelectionCell)m_list.getComponent(i)).getPath().equals(sPath) ) { 206 this.m_list.remove(m_list.getComponent(i)); 207 } 208 } 209 } 210 this.validateTree(); 211 this.repaint(); 212 } 213 214 public void removeSelected() { 215 for(int i=0; i<m_list.getComponentCount(); i++) { 216 if((m_list.getComponent(i) instanceof PermissionsSelectionCell)) { 217 if( ((PermissionsSelectionCell)m_list.getComponent(i)).isSelected() ) { 218 this.m_list.remove(m_list.getComponent(i)); 219 } 220 } 221 } 222 this.validateTree(); 223 this.repaint(); 224 } 225 226 public String getSelectedPath() { 227 for(int i=0; i<m_list.getComponentCount(); i++) { 228 if((m_list.getComponent(i) instanceof PermissionsSelectionCell)) { 229 if( ((PermissionsSelectionCell)m_list.getComponent(i)).isSelected() ) { 230 return ((PermissionsSelectionCell)m_list.getComponent(i)).getPath(); 231 } 232 } 233 } 234 return null; 235 } 236 237 240 public void mouseClicked(MouseEvent me) { 241 if(me.getSource() instanceof PermissionsSelectionCell) { 242 PermissionsSelectionCell cell = (PermissionsSelectionCell) me.getSource(); 243 this.fireSelectionEvent( cell.getPath() ); 244 for(int i=0; i<m_list.getComponentCount(); i++) { 245 if((m_list.getComponent(i) instanceof PermissionsSelectionCell)) { 246 ((PermissionsSelectionCell)m_list.getComponent(i)).setSelected(false); 247 } 248 } 249 if ( (me.getModifiersEx() & (MouseEvent.CTRL_DOWN_MASK)) == MouseEvent.CTRL_DOWN_MASK) { 250 cell.setSelected(false); 251 } else { 252 cell.setSelected(true); 253 } 254 } 255 this.validateTree(); 256 this.repaint(); 257 } 258 259 public void selectPermission(String sPath) { 260 PermissionsSelectionCell cell = null; 261 for(int i=0; i<m_list.getComponentCount(); i++) { 262 if((m_list.getComponent(i) instanceof PermissionsSelectionCell)) { 263 PermissionsSelectionCell tempCell = ((PermissionsSelectionCell)m_list.getComponent(i)); 264 tempCell.setSelected(false); 265 if(tempCell.getPath().equals(sPath)) { 266 cell = tempCell; 267 } 268 } 269 } 270 if(cell!=null) { 271 cell.setSelected(true); 272 this.fireSelectionEvent(sPath); 273 } 274 } 275 276 279 public void mouseEntered(MouseEvent arg0) { 280 } 281 282 285 public void mouseExited(MouseEvent arg0) { 286 } 287 288 291 public void mousePressed(MouseEvent arg0) { 292 } 293 294 297 public void mouseReleased(MouseEvent arg0) { 298 } 299 300 public void addFile(String sPath, AbstractVirtualFileSystem vfs) { 301 ArrayList aReasons = new ArrayList (); 302 303 PermissionsSelectionCell cell = new PermissionsSelectionCell(this, sPath, vfs); 304 boolean bFound = false; 305 for(int i=0; i<m_list.getComponentCount(); i++) { 306 if((m_list.getComponent(i) instanceof PermissionsSelectionCell) && ((PermissionsSelectionCell)m_list.getComponent(i)).equals(cell)) { 307 bFound=true; 308 } 309 } 310 if(!bFound) { 311 cell.addMouseListener(this); 312 m_list.add(cell); 313 } 314 315 this.validateTree(); 316 317 m_scroller.validate(); 318 } 319 320 public void addPermissionsSelectionListener(PermissionsSelectionListener listener) { 321 if(!this.m_listeners.contains(listener)) { 322 this.m_listeners.add(listener); 323 } 324 } 325 326 public void removePermissionsSelectionListener(PermissionsSelectionListener listener) { 327 this.m_listeners.remove(listener); 328 } 329 330 private void fireSelectionEvent(String sPath) { 331 Iterator itor = this.m_listeners.iterator(); 332 while (itor.hasNext()) { 333 PermissionsSelectionListener element = (PermissionsSelectionListener) itor.next(); 334 element.permissionSelected(sPath); 335 } 336 } 337 338 } 339 340 | Popular Tags |