1 20 21 package org.apache.directory.ldapstudio.browser.ui.editors.schemabrowser; 22 23 24 import org.apache.directory.ldapstudio.browser.common.BrowserCommonActivator; 25 import org.apache.directory.ldapstudio.browser.common.widgets.connection.ConnectionContentProvider; 26 import org.apache.directory.ldapstudio.browser.common.widgets.connection.ConnectionLabelProvider; 27 import org.apache.directory.ldapstudio.browser.core.BrowserCorePlugin; 28 import org.apache.directory.ldapstudio.browser.core.events.ConnectionUpdateEvent; 29 import org.apache.directory.ldapstudio.browser.core.events.ConnectionUpdateListener; 30 import org.apache.directory.ldapstudio.browser.core.events.EventRegistry; 31 import org.apache.directory.ldapstudio.browser.core.model.IConnection; 32 import org.eclipse.jface.action.ContributionItem; 33 import org.eclipse.jface.util.Assert; 34 import org.eclipse.jface.viewers.ComboViewer; 35 import org.eclipse.jface.viewers.ISelection; 36 import org.eclipse.jface.viewers.ISelectionChangedListener; 37 import org.eclipse.jface.viewers.IStructuredSelection; 38 import org.eclipse.jface.viewers.SelectionChangedEvent; 39 import org.eclipse.jface.viewers.StructuredSelection; 40 import org.eclipse.swt.SWT; 41 import org.eclipse.swt.widgets.Composite; 42 import org.eclipse.swt.widgets.Control; 43 import org.eclipse.swt.widgets.Menu; 44 import org.eclipse.swt.widgets.ToolBar; 45 import org.eclipse.swt.widgets.ToolItem; 46 47 48 54 public class ConnectionComboContributionItem extends ContributionItem implements ConnectionUpdateListener 55 { 56 57 private SchemaPage schemaPage; 58 59 60 private boolean inChange; 61 62 63 private ComboViewer comboViewer; 64 65 66 private ToolItem toolitem; 67 68 69 74 public ConnectionComboContributionItem( SchemaPage schemaPage ) 75 { 76 this.schemaPage = schemaPage; 77 this.inChange = false; 78 } 79 80 81 88 private Control createControl( Composite parent ) 89 { 90 comboViewer = new ComboViewer( parent, SWT.DROP_DOWN | SWT.READ_ONLY ); 91 comboViewer.setLabelProvider( new ConnectionLabelProvider() ); 92 comboViewer.setContentProvider( new ConnectionContentProvider() ); 93 comboViewer.setInput( BrowserCorePlugin.getDefault().getConnectionManager() ); 94 comboViewer.addSelectionChangedListener( new ISelectionChangedListener() 95 { 96 public void selectionChanged( SelectionChangedEvent event ) 97 { 98 if ( !inChange ) 101 { 102 IConnection connection = getConnection(); 103 schemaPage.getSchemaBrowser().setInput( new SchemaBrowserInput( connection, null ) ); 104 } 105 } 106 } ); 107 108 EventRegistry.addConnectionUpdateListener( this, BrowserCommonActivator.getDefault().getEventRunner() ); 109 110 toolitem.setWidth( comboViewer.getCombo().computeSize( SWT.DEFAULT, SWT.DEFAULT, true ).x ); 112 113 return comboViewer.getCombo(); 114 } 115 116 117 120 public void dispose() 121 { 122 EventRegistry.removeConnectionUpdateListener( this ); 123 comboViewer = null; 124 } 125 126 127 133 public final void fill( Composite parent ) 134 { 135 createControl( parent ); 136 } 137 138 139 146 public final void fill( Menu parent, int index ) 147 { 148 Assert.isTrue( false, "Can't add a control to a menu" ); } 150 151 152 161 public void fill( ToolBar parent, int index ) 162 { 163 toolitem = new ToolItem( parent, SWT.SEPARATOR, index ); 164 Control control = createControl( parent ); 165 toolitem.setControl( control ); 166 } 167 168 169 172 public void connectionUpdated( ConnectionUpdateEvent connectionUpdateEvent ) 173 { 174 if ( comboViewer != null ) 175 { 176 this.comboViewer.refresh(); 177 } 178 } 179 180 181 186 public IConnection getConnection() 187 { 188 ISelection selection = comboViewer.getSelection(); 189 if ( !selection.isEmpty() ) 190 { 191 return ( IConnection ) ( ( IStructuredSelection ) selection ).getFirstElement(); 192 } 193 194 return null; 195 } 196 197 198 203 public void setConnection( IConnection connection ) 204 { 205 ISelection newSelection = new StructuredSelection( connection ); 206 ISelection oldSelection = comboViewer.getSelection(); 207 if ( !newSelection.equals( oldSelection ) ) 208 { 209 inChange = true; 210 comboViewer.setSelection( newSelection ); 211 inChange = false; 212 } 213 } 214 215 216 219 public void updateEnabledState() 220 { 221 comboViewer.getCombo().setEnabled( !schemaPage.isShowDefaultSchema() ); 222 } 223 224 } | Popular Tags |