1 20 21 package org.apache.directory.ldapstudio.browser.ui.views.connection; 22 23 24 import org.apache.directory.ldapstudio.browser.common.actions.SelectionUtils; 25 import org.apache.directory.ldapstudio.browser.common.widgets.connection.ConnectionUniversalListener; 26 import org.apache.directory.ldapstudio.browser.core.jobs.OpenConnectionsJob; 27 import org.apache.directory.ldapstudio.browser.core.model.IConnection; 28 import org.apache.directory.ldapstudio.browser.ui.views.browser.BrowserView; 29 import org.apache.directory.ldapstudio.browser.ui.views.modificationlogs.ModificationLogsView; 30 import org.eclipse.jface.viewers.DoubleClickEvent; 31 import org.eclipse.jface.viewers.IDoubleClickListener; 32 import org.eclipse.jface.viewers.ISelectionChangedListener; 33 import org.eclipse.jface.viewers.SelectionChangedEvent; 34 import org.eclipse.ui.IWorkbenchPage; 35 import org.eclipse.ui.PartInitException; 36 import org.eclipse.ui.PlatformUI; 37 38 39 45 public class ConnectionViewUniversalListener extends ConnectionUniversalListener 46 { 47 48 49 protected ConnectionView view; 50 51 53 private ISelectionChangedListener viewerSelectionListener = new ISelectionChangedListener() 54 { 55 public void selectionChanged( SelectionChangedEvent event ) 56 { 57 IConnection[] connections = SelectionUtils.getConnections( event.getSelection() ); 58 if ( connections.length == 1 ) 59 { 60 ensureViewVisible( connections[0] ); 61 } 62 } 63 }; 64 65 66 private IDoubleClickListener viewerDoubleClickListener = new IDoubleClickListener() 67 { 68 public void doubleClick( DoubleClickEvent event ) 69 { 70 IConnection[] connections = SelectionUtils.getConnections( event.getSelection() ); 71 if ( connections.length == 1 ) 72 { 73 toggleConnection( connections[0] ); 74 } 75 } 76 }; 77 78 79 84 public ConnectionViewUniversalListener( ConnectionView view ) 85 { 86 super( view.getMainWidget().getViewer() ); 87 this.view = view; 88 89 viewer.addSelectionChangedListener( viewerSelectionListener ); 91 viewer.addDoubleClickListener( viewerDoubleClickListener ); 92 } 93 94 95 98 public void dispose() 99 { 100 this.view = null; 101 super.dispose(); 102 } 103 104 105 111 private void ensureViewVisible( IConnection selection ) 112 { 113 if ( view != null ) 114 { 115 try 116 { 117 PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView( BrowserView.getId(), 118 null, IWorkbenchPage.VIEW_VISIBLE ); 119 } 120 catch ( PartInitException e ) 121 { 122 } 123 catch ( NullPointerException e ) 124 { 125 } 126 127 try 128 { 129 PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView( ModificationLogsView.getId(), 130 null, IWorkbenchPage.VIEW_VISIBLE ); 131 } 132 catch ( PartInitException e ) 133 { 134 } 135 catch ( NullPointerException e ) 136 { 137 } 138 } 139 } 140 141 142 147 private void toggleConnection( IConnection connection ) 148 { 149 if ( connection.isOpened() ) 150 { 151 if ( connection.canClose() ) 152 { 153 connection.close(); 154 } 155 } 156 else 157 { 158 OpenConnectionsJob ocj = new OpenConnectionsJob( connection ); 159 ocj.execute(); 160 } 161 } 162 163 } 164 | Popular Tags |