1 20 package org.apache.directory.ldapstudio.apacheds.configuration.editor; 21 22 23 import java.util.List ; 24 25 import org.apache.directory.ldapstudio.apacheds.configuration.Activator; 26 import org.apache.directory.ldapstudio.apacheds.configuration.PluginConstants; 27 import org.apache.directory.ldapstudio.apacheds.configuration.model.ExtendedOperation; 28 import org.apache.directory.ldapstudio.apacheds.configuration.model.ServerConfiguration; 29 import org.eclipse.jface.action.Action; 30 import org.eclipse.jface.viewers.ArrayContentProvider; 31 import org.eclipse.jface.viewers.ISelectionChangedListener; 32 import org.eclipse.jface.viewers.LabelProvider; 33 import org.eclipse.jface.viewers.SelectionChangedEvent; 34 import org.eclipse.jface.viewers.StructuredSelection; 35 import org.eclipse.jface.viewers.TableViewer; 36 import org.eclipse.swt.SWT; 37 import org.eclipse.swt.events.SelectionAdapter; 38 import org.eclipse.swt.events.SelectionEvent; 39 import org.eclipse.swt.graphics.Image; 40 import org.eclipse.swt.layout.GridData; 41 import org.eclipse.swt.layout.GridLayout; 42 import org.eclipse.swt.widgets.Button; 43 import org.eclipse.swt.widgets.Composite; 44 import org.eclipse.swt.widgets.Table; 45 import org.eclipse.ui.forms.DetailsPart; 46 import org.eclipse.ui.forms.IManagedForm; 47 import org.eclipse.ui.forms.MasterDetailsBlock; 48 import org.eclipse.ui.forms.SectionPart; 49 import org.eclipse.ui.forms.editor.FormPage; 50 import org.eclipse.ui.forms.widgets.FormToolkit; 51 import org.eclipse.ui.forms.widgets.ScrolledForm; 52 import org.eclipse.ui.forms.widgets.Section; 53 import org.eclipse.ui.plugin.AbstractUIPlugin; 54 55 56 62 public class ExtendedOperationsMasterDetailsBlock extends MasterDetailsBlock 63 { 64 65 private FormPage page; 66 67 68 private ServerConfiguration serverConfiguration; 69 70 71 private List <ExtendedOperation> extendedOperations; 72 73 74 private ExtendedOperationDetailsPage detailsPage; 75 76 private static final String NEW_NAME = "newExtendedOperation"; 77 78 private TableViewer viewer; 80 private Button addButton; 81 private Button deleteButton; 82 83 84 89 public ExtendedOperationsMasterDetailsBlock( FormPage page ) 90 { 91 this.page = page; 92 serverConfiguration = ( ( ServerConfigurationEditorInput ) page.getEditorInput() ).getServerConfiguration(); 93 extendedOperations = serverConfiguration.getExtendedOperations(); 94 } 95 96 97 100 protected void createMasterPart( final IManagedForm managedForm, Composite parent ) 101 { 102 FormToolkit toolkit = managedForm.getToolkit(); 103 104 Section section = toolkit.createSection( parent, Section.TITLE_BAR ); 106 section.setText( "All Extended Operations" ); 107 section.marginWidth = 10; 108 section.marginHeight = 5; 109 Composite client = toolkit.createComposite( section, SWT.WRAP ); 110 GridLayout layout = new GridLayout(); 111 layout.numColumns = 2; 112 layout.makeColumnsEqualWidth = false; 113 layout.marginWidth = 2; 114 layout.marginHeight = 2; 115 client.setLayout( layout ); 116 toolkit.paintBordersFor( client ); 117 section.setClient( client ); 118 119 Table table = toolkit.createTable( client, SWT.NULL ); 121 GridData gd = new GridData( SWT.FILL, SWT.FILL, true, true, 1, 2 ); 122 gd.heightHint = 20; 123 gd.widthHint = 100; 124 table.setLayoutData( gd ); 125 final SectionPart spart = new SectionPart( section ); 126 managedForm.addPart( spart ); 127 viewer = new TableViewer( table ); 128 viewer.addSelectionChangedListener( new ISelectionChangedListener() 129 { 130 public void selectionChanged( SelectionChangedEvent event ) 131 { 132 managedForm.fireSelectionChanged( spart, event.getSelection() ); 133 } 134 } ); 135 viewer.setContentProvider( new ArrayContentProvider() ); 136 viewer.setLabelProvider( new LabelProvider() 137 { 138 public Image getImage( Object element ) 139 { 140 return AbstractUIPlugin.imageDescriptorFromPlugin( Activator.PLUGIN_ID, 141 PluginConstants.IMG_EXTENDED_OPERATION ).createImage(); 142 } 143 } ); 144 145 addButton = toolkit.createButton( client, "Add...", SWT.PUSH ); addButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) ); 148 149 deleteButton = toolkit.createButton( client, "Delete", SWT.PUSH ); 150 deleteButton.setEnabled( false ); 151 deleteButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) ); 152 153 initFromInput(); 154 addListeners(); 155 } 156 157 158 161 private void initFromInput() 162 { 163 viewer.setInput( extendedOperations ); 164 } 165 166 167 170 private void addListeners() 171 { 172 viewer.addSelectionChangedListener( new ISelectionChangedListener() 173 { 174 public void selectionChanged( SelectionChangedEvent event ) 175 { 176 viewer.refresh(); 177 178 deleteButton.setEnabled( !event.getSelection().isEmpty() ); 179 } 180 } ); 181 182 addButton.addSelectionListener( new SelectionAdapter() 183 { 184 public void widgetSelected( SelectionEvent e ) 185 { 186 ExtendedOperation newExtendedOperation = new ExtendedOperation( getNewName() ); 187 extendedOperations.add( newExtendedOperation ); 188 viewer.refresh(); 189 viewer.setSelection( new StructuredSelection( newExtendedOperation ) ); 190 setEditorDirty(); 191 } 192 } ); 193 194 deleteButton.addSelectionListener( new SelectionAdapter() 195 { 196 public void widgetSelected( SelectionEvent e ) 197 { 198 StructuredSelection selection = ( StructuredSelection ) viewer.getSelection(); 199 if ( !selection.isEmpty() ) 200 { 201 ExtendedOperation extendedOperation = ( ExtendedOperation ) selection.getFirstElement(); 202 203 extendedOperations.remove( extendedOperation ); 204 viewer.refresh(); 205 setEditorDirty(); 206 } 207 } 208 } ); 209 } 210 211 212 218 private String getNewName() 219 { 220 int counter = 1; 221 String name = NEW_NAME; 222 boolean ok = false; 223 224 while ( !ok ) 225 { 226 ok = true; 227 name = NEW_NAME + counter; 228 229 for ( ExtendedOperation extendedOperation : extendedOperations ) 230 { 231 if ( extendedOperation.getClassType().equalsIgnoreCase( name ) ) 232 { 233 ok = false; 234 } 235 } 236 237 counter++; 238 } 239 240 return name; 241 } 242 243 244 247 protected void createToolBarActions( IManagedForm managedForm ) 248 { 249 final ScrolledForm form = managedForm.getForm(); 250 251 Action horizontalAction = new Action( "Horizontal layout", Action.AS_RADIO_BUTTON ) { public void run() 254 { 255 sashForm.setOrientation( SWT.HORIZONTAL ); 256 form.reflow( true ); 257 } 258 }; 259 horizontalAction.setChecked( true ); 260 horizontalAction.setToolTipText( "Horizontal Orientation" ); horizontalAction.setImageDescriptor( Activator.imageDescriptorFromPlugin( Activator.PLUGIN_ID, 262 PluginConstants.IMG_HORIZONTAL_ORIENTATION ) ); 263 264 Action verticalAction = new Action( "Vertical Orientation", Action.AS_RADIO_BUTTON ) { public void run() 267 { 268 sashForm.setOrientation( SWT.VERTICAL ); 269 form.reflow( true ); 270 } 271 }; 272 verticalAction.setChecked( false ); 273 verticalAction.setToolTipText( "Vertical Orientation" ); verticalAction.setImageDescriptor( Activator.imageDescriptorFromPlugin( Activator.PLUGIN_ID, 275 PluginConstants.IMG_VERTICAL_ORIENTATION ) ); 276 277 form.getToolBarManager().add( horizontalAction ); 278 form.getToolBarManager().add( verticalAction ); 279 } 280 281 282 285 protected void registerPages( DetailsPart detailsPart ) 286 { 287 detailsPage = new ExtendedOperationDetailsPage( this ); 288 detailsPart.registerPage( ExtendedOperation.class, detailsPage ); 289 } 290 291 292 295 public void setEditorDirty() 296 { 297 ( ( ServerConfigurationEditor ) page.getEditor() ).setDirty( true ); 298 } 299 300 301 304 public void save() 305 { 306 detailsPage.commit( true ); 307 viewer.setInput( extendedOperations ); 308 } 309 } 310 | Popular Tags |