1 21 22 package org.opensubsystems.patterns.thickclient.application.swt; 23 24 import java.util.HashSet ; 25 import java.util.Iterator ; 26 import java.util.Set ; 27 28 import org.eclipse.swt.SWT; 29 import org.eclipse.swt.custom.TableEditor; 30 import org.eclipse.swt.events.SelectionAdapter; 31 import org.eclipse.swt.events.SelectionEvent; 32 import org.eclipse.swt.widgets.Button; 33 import org.eclipse.swt.widgets.Control; 34 import org.eclipse.swt.widgets.Table; 35 import org.eclipse.swt.widgets.TableItem; 36 import org.opensubsystems.core.application.swt.ResourceManager; 37 38 47 public class ToggleButtonSelectionAdapter extends SelectionAdapter 48 { 49 51 55 protected Set m_setListeners = new HashSet (); 56 57 60 protected Table m_table; 61 62 65 protected TableEditor m_editor; 66 67 70 protected int m_iColumn; 71 72 75 protected Button m_toggleButton; 76 77 80 protected String m_strButtonText; 81 82 84 90 public ToggleButtonSelectionAdapter( 91 Table editableTable, 92 int iColumn 93 ) 94 { 95 this(editableTable, iColumn, "X"); 96 } 97 98 108 public ToggleButtonSelectionAdapter( 109 Table editableTable, 110 int iColumn, 111 String strToggleButtonText 112 ) 113 { 114 m_table = editableTable; 115 m_editor = new TableEditor(m_table); 116 m_iColumn = iColumn; 117 m_strButtonText = strToggleButtonText; 118 } 119 120 122 125 public void widgetSelected( 126 SelectionEvent event 127 ) 128 { 129 Control oldEditor = m_editor.getEditor(); 131 if (oldEditor != null) 132 { 133 oldEditor.dispose(); 134 } 135 136 int iIndex = m_table.getSelectionIndex(); 138 if (iIndex != -1) 139 { 140 final TableItem item = m_table.getItem(iIndex); 141 142 if ((m_strButtonText != null) && (m_strButtonText.length() > 0)) 143 { 144 if (m_toggleButton != null) 146 { 147 m_toggleButton.dispose(); 148 } 149 m_toggleButton = new Button(m_table, SWT.NONE); 150 m_toggleButton.setText(m_strButtonText); 151 ResourceManager.getInstance().setBigButtonFont(m_toggleButton); 152 m_toggleButton.addSelectionListener(new DelegatingSelectionAdapter() 153 { 154 public void widgetSelected( 155 SelectionEvent event 156 ) 157 { 158 if (!m_editor.getItem().isDisposed()) 159 { 160 notifyToggleListeners(m_editor.getItem(), 161 m_iColumn, 162 m_editor.getItem().getData(), 163 m_editor.getItem().getText(m_iColumn)); 164 } 165 } 166 }); 167 168 m_editor.horizontalAlignment = SWT.RIGHT; 171 m_editor.grabHorizontal = false; m_editor.minimumWidth = 40; 173 174 m_editor.setEditor(m_toggleButton, item, m_iColumn); 176 177 m_toggleButton.setFocus(); 179 } 180 else 181 { 182 notifyToggleListeners(item, m_iColumn, item.getData(), 184 item.getText(m_iColumn)); 185 } 186 } 187 } 188 189 194 public void addToggleListener( 195 ToggleButtonListener listener 196 ) 197 { 198 m_setListeners.add(listener); 199 } 200 201 206 public void removeToggleListener( 207 ToggleButtonListener listener 208 ) 209 { 210 m_setListeners.remove(listener); 211 } 212 213 216 public void hideEditor( 217 ) 218 { 219 if (m_editor != null) 220 { 221 Control oldEditor = m_editor.getEditor(); 222 if (oldEditor != null) 223 { 224 oldEditor.dispose(); 225 } 226 227 if (m_toggleButton != null) 229 { 230 m_toggleButton.dispose(); 231 m_toggleButton = null; 232 } 233 } 234 } 235 236 241 public boolean isVisible() 242 { 243 boolean bReturn = false; 244 245 if (m_editor != null 246 && m_toggleButton != null 247 && !m_toggleButton.isDisposed()) 248 { 249 bReturn = true; 250 } 251 252 return bReturn; 253 } 254 255 257 265 protected void notifyToggleListeners( 266 TableItem item, 267 int iColumn, 268 Object objData, 269 String strValue 270 ) 271 { 272 for (Iterator items = m_setListeners.iterator(); items.hasNext();) 273 { 274 ((ToggleButtonListener)items.next()).valueToggled(item, iColumn, 275 objData, strValue); 276 } 277 } 278 } 279 | Popular Tags |