1 20 package org.apache.directory.ldapstudio.proxy.view.wizards; 21 22 23 import org.apache.directory.ldapstudio.browser.common.dialogs.SelectConnectionDialog; 24 import org.apache.directory.ldapstudio.browser.core.model.IConnection; 25 import org.apache.directory.ldapstudio.proxy.Activator; 26 import org.apache.directory.ldapstudio.proxy.ProxyConstants; 27 import org.apache.directory.ldapstudio.proxy.view.BaseWidgetUtils; 28 import org.apache.directory.ldapstudio.proxy.view.HistoryUtils; 29 import org.eclipse.core.runtime.Platform; 30 import org.eclipse.jface.wizard.WizardPage; 31 import org.eclipse.swt.SWT; 32 import org.eclipse.swt.events.ModifyEvent; 33 import org.eclipse.swt.events.ModifyListener; 34 import org.eclipse.swt.events.SelectionAdapter; 35 import org.eclipse.swt.events.SelectionEvent; 36 import org.eclipse.swt.events.SelectionListener; 37 import org.eclipse.swt.events.VerifyEvent; 38 import org.eclipse.swt.events.VerifyListener; 39 import org.eclipse.swt.layout.GridData; 40 import org.eclipse.swt.layout.GridLayout; 41 import org.eclipse.swt.widgets.Button; 42 import org.eclipse.swt.widgets.Combo; 43 import org.eclipse.swt.widgets.Composite; 44 import org.eclipse.swt.widgets.Group; 45 import org.eclipse.swt.widgets.Label; 46 import org.eclipse.swt.widgets.Text; 47 import org.eclipse.ui.PlatformUI; 48 import org.eclipse.ui.internal.util.BundleUtility; 49 import org.osgi.framework.Bundle; 50 import org.osgi.framework.BundleException; 51 52 53 59 public class ConnectWizardBrowserAvailablePage extends WizardPage implements ModifyListener, SelectionListener 60 { 61 62 private IConnection selectedConnection; 63 64 private Combo proxyPortCombo; 66 private Button useConnectionButton; 67 private Text connectionText; 68 private Button connectionButton; 69 private Button useThisSettingsButton; 70 private Combo serverHostCombo; 71 private Combo serverPortCombo; 72 73 74 77 public ConnectWizardBrowserAvailablePage() 78 { 79 super( ConnectWizardBrowserAvailablePage.class.getName() ); 80 setTitle( "Connect Wizard" ); 81 setDescription( "Specify the settings for the LDAP Proxy." ); 82 setPageComplete( false ); 83 } 84 85 86 89 public void createControl( Composite parent ) 90 { 91 Composite composite = new Composite( parent, SWT.NONE ); 92 GridLayout gl = new GridLayout( 1, false ); 93 composite.setLayout( gl ); 94 95 Group proxyGroup = BaseWidgetUtils.createGroup( composite, "LDAP Proxy", 1 ); 96 proxyGroup.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) ); 97 Composite proxyGroupComposite = BaseWidgetUtils.createColumnContainer( proxyGroup, 2, 1 ); 98 99 BaseWidgetUtils.createLabel( proxyGroupComposite, "Proxy port:", 1 ); 100 proxyPortCombo = BaseWidgetUtils.createCombo( proxyGroupComposite, new String [0], -1, 1 ); 101 proxyPortCombo.addVerifyListener( new VerifyListener() 102 { 103 public void verifyText( VerifyEvent e ) 104 { 105 if ( !e.text.matches( "[0-9]*" ) ) 106 { 107 e.doit = false; 108 } 109 if ( serverPortCombo.getText().length() > 4 && e.text.length() > 0 ) 110 { 111 e.doit = false; 112 } 113 } 114 } ); 115 116 Group serverGroup = BaseWidgetUtils.createGroup( composite, "LDAP Server", 1 ); 117 serverGroup.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) ); 118 119 useConnectionButton = BaseWidgetUtils.createRadiobutton( serverGroup, 120 "Use settings from an existing connection:", 1 ); 121 122 Composite connectionComposite = BaseWidgetUtils.createColumnContainer( serverGroup, 4, 1 ); 123 124 BaseWidgetUtils.createRadioIndent( connectionComposite, 1 ); 125 BaseWidgetUtils.createLabel( connectionComposite, "Connection:", 1 ); 126 connectionText = BaseWidgetUtils.createReadonlyText( connectionComposite, "", 1 ); 127 connectionButton = BaseWidgetUtils.createButton( connectionComposite, "B&rowse...", 1 ); 128 129 Label connectionInformationLabel = BaseWidgetUtils.createLabel( connectionComposite, 130 "(Warning: This feature requires the LDAP Browser Plugin.)", 1 ); 131 connectionInformationLabel.setLayoutData( new GridData( SWT.RIGHT, SWT.NONE, true, false, 4, 1 ) ); 132 133 useThisSettingsButton = BaseWidgetUtils.createRadiobutton( serverGroup, "Use this settings:", 1 ); 134 135 Composite settingsComposite = BaseWidgetUtils.createColumnContainer( serverGroup, 3, 1 ); 136 BaseWidgetUtils.createRadioIndent( settingsComposite, 1 ); 137 BaseWidgetUtils.createLabel( settingsComposite, "Hostname:", 1 ); 138 serverHostCombo = BaseWidgetUtils.createCombo( settingsComposite, new String [0], -1, 1 ); 139 140 BaseWidgetUtils.createRadioIndent( settingsComposite, 1 ); 141 BaseWidgetUtils.createLabel( settingsComposite, "Port:", 1 ); 142 serverPortCombo = BaseWidgetUtils.createCombo( settingsComposite, new String [0], -1, 1 ); 143 serverPortCombo.addVerifyListener( new VerifyListener() 144 { 145 public void verifyText( VerifyEvent e ) 146 { 147 if ( !e.text.matches( "[0-9]*" ) ) 148 { 149 e.doit = false; 150 } 151 if ( serverPortCombo.getText().length() > 4 && e.text.length() > 0 ) 152 { 153 e.doit = false; 154 } 155 } 156 } ); 157 158 setControl( parent ); 159 160 checkBrowserPluginAvailability(); 161 loadDialogHistory(); 162 initListeners(); 163 setUiEnableState(); 164 } 165 166 167 private void checkBrowserPluginAvailability() 168 { 169 if ( !isPluginAvailable( "org.apache.directory.ldapstudio.browser.core" ) 170 || !isPluginAvailable( "org.apache.directory.ldapstudio.browser.common" ) ) 171 { 172 useConnectionButton.setEnabled( false ); 173 connectionButton.setEnabled( false ); 174 connectionText.setEnabled( false ); 175 } 176 } 177 178 179 182 private void loadDialogHistory() 183 { 184 proxyPortCombo.setItems( HistoryUtils.load( ProxyConstants.DIALOGSETTING_KEY_PROXY_PORT_HISTORY ) ); 185 serverHostCombo.setItems( HistoryUtils.load( ProxyConstants.DIALOGSETTING_KEY_SERVER_HOST_HISTORY ) ); 186 serverPortCombo.setItems( HistoryUtils.load( ProxyConstants.DIALOGSETTING_KEY_SERVER_PORT_HISTORY ) ); 187 188 boolean useConnection = Activator.getDefault().getDialogSettings().getBoolean( 189 ProxyConstants.DIALOGSETTING_KEY_SERVER_USE_CONNECTION ); 190 useConnectionButton.setSelection( useConnection ); 191 useThisSettingsButton.setSelection( !useConnection ); 192 } 193 194 195 198 public void saveDialogHistory() 199 { 200 HistoryUtils.save( ProxyConstants.DIALOGSETTING_KEY_PROXY_PORT_HISTORY, proxyPortCombo.getText() ); 201 HistoryUtils.save( ProxyConstants.DIALOGSETTING_KEY_SERVER_HOST_HISTORY, serverHostCombo.getText() ); 202 HistoryUtils.save( ProxyConstants.DIALOGSETTING_KEY_SERVER_PORT_HISTORY, serverPortCombo.getText() ); 203 204 Activator.getDefault().getDialogSettings().put( ProxyConstants.DIALOGSETTING_KEY_SERVER_USE_CONNECTION, 205 useConnectionButton.getSelection() ); 206 } 207 208 209 212 private void initListeners() 213 { 214 proxyPortCombo.addModifyListener( this ); 215 useConnectionButton.addSelectionListener( new SelectionAdapter() 216 { 217 public void widgetSelected( SelectionEvent e ) 218 { 219 validate(); 220 setUiEnableState(); 221 } 222 } ); 223 connectionButton.addSelectionListener( new SelectionAdapter() 224 { 225 public void widgetSelected( SelectionEvent e ) 226 { 227 SelectConnectionDialog dialog = new SelectConnectionDialog( PlatformUI.getWorkbench() 228 .getActiveWorkbenchWindow().getShell(), "Select Connection", null ); 229 dialog.open(); 230 IConnection connection = dialog.getSelectedConnection(); 231 setConnection( connection ); 232 validate(); 233 } 234 } ); 235 useThisSettingsButton.addSelectionListener( new SelectionAdapter() 236 { 237 public void widgetSelected( SelectionEvent e ) 238 { 239 validate(); 240 setUiEnableState(); 241 } 242 } ); 243 serverHostCombo.addModifyListener( this ); 244 serverPortCombo.addModifyListener( this ); 245 } 246 247 248 251 private void setUiEnableState() 252 { 253 if ( ( useConnectionButton.isEnabled() ) && ( useConnectionButton.getSelection() ) ) 254 { 255 connectionText.setEnabled( true ); 256 connectionButton.setEnabled( true ); 257 serverHostCombo.setEnabled( false ); 258 serverPortCombo.setEnabled( false ); 259 } 260 else 261 { 262 connectionText.setEnabled( false ); 263 connectionButton.setEnabled( false ); 264 serverHostCombo.setEnabled( true ); 265 serverPortCombo.setEnabled( true ); 266 } 267 } 268 269 270 279 public boolean isPluginAvailable( String bundleId ) 280 { 281 Bundle pluginBundle = Platform.getBundle( bundleId ); 282 283 if ( pluginBundle == null ) 284 { 285 return false; 286 } 287 288 if ( BundleUtility.isActive( pluginBundle ) ) 289 { 290 return true; 291 } 292 else 293 { 294 try 295 { 296 pluginBundle.start(); 297 } 298 catch ( BundleException e ) 299 { 300 return false; 301 } 302 303 return BundleUtility.isActive( pluginBundle ); 304 } 305 } 306 307 308 public void setConnection( IConnection connection ) 309 { 310 this.selectedConnection = connection; 311 connectionText.setText( this.selectedConnection != null ? this.selectedConnection.getName() : "" ); 312 } 313 314 315 321 public int getLocalPort() 322 { 323 int port = 0; 324 325 try 326 { 327 port = Integer.parseInt( proxyPortCombo.getText() ); 328 } 329 catch ( NumberFormatException e ) 330 { 331 } 332 333 return port; 334 } 335 336 337 343 public String getRemoteHost() 344 { 345 if ( useConnectionButton.getSelection() ) 346 { 347 return selectedConnection.getHost(); 348 } 349 else 350 { 351 return serverHostCombo.getText(); 352 } 353 } 354 355 356 362 public int getRemotePort() 363 { 364 int port = 0; 365 366 if ( useConnectionButton.getSelection() ) 367 { 368 port = selectedConnection.getPort(); 369 } 370 else 371 { 372 try 373 { 374 port = Integer.parseInt( serverPortCombo.getText() ); 375 } 376 catch ( NumberFormatException e ) 377 { 378 } 379 } 380 381 return port; 382 } 383 384 385 388 public void modifyText( ModifyEvent e ) 389 { 390 validate(); 391 } 392 393 394 397 public void widgetDefaultSelected( SelectionEvent e ) 398 { 399 validate(); 400 } 401 402 403 406 public void widgetSelected( SelectionEvent e ) 407 { 408 validate(); 409 } 410 411 412 415 private void validate() 416 { 417 String errorMessage = null; 418 419 if ( useConnectionButton.getSelection() ) 420 { 421 if ( selectedConnection == null ) 422 { 423 errorMessage = "Please select a connection."; 424 } 425 } 426 else 427 { 428 if ( "".equals( serverPortCombo.getText() ) ) 429 { 430 errorMessage = "Please enter a port for the LDAP Server. The default LDAP port is 389."; 431 } 432 if ( "".equals( serverHostCombo.getText() ) ) 433 { 434 errorMessage = "Please enter a hostname for the LDAP Server."; 435 } 436 } 437 438 if ( "".equals( proxyPortCombo.getText() ) ) 439 { 440 errorMessage = "Please enter a port for the LDAP Proxy."; 441 } 442 443 setErrorMessage( errorMessage ); 444 setPageComplete( getErrorMessage() == null ); 445 } 446 } 447 | Popular Tags |