connectivity/com.nokia.carbide.remoteConnections/src/com/nokia/carbide/remoteconnections/view/ConnectionsView.java
changeset 699 fe13162b76cf
parent 687 593d05f9d5ca
child 700 9441b6037cb6
equal deleted inserted replaced
698:9162f4cfad65 699:fe13162b76cf
    16 */
    16 */
    17 
    17 
    18 
    18 
    19 package com.nokia.carbide.remoteconnections.view;
    19 package com.nokia.carbide.remoteconnections.view;
    20 
    20 
       
    21 import java.util.ArrayList;
       
    22 import java.util.Collection;
       
    23 import java.util.HashMap;
       
    24 import java.util.List;
       
    25 import java.util.Map;
       
    26 
       
    27 import org.eclipse.jface.action.Action;
       
    28 import org.eclipse.jface.action.IMenuListener;
       
    29 import org.eclipse.jface.action.IMenuManager;
       
    30 import org.eclipse.jface.action.IToolBarManager;
       
    31 import org.eclipse.jface.action.LegacyActionTools;
       
    32 import org.eclipse.jface.action.MenuManager;
       
    33 import org.eclipse.jface.resource.ImageDescriptor;
       
    34 import org.eclipse.jface.resource.JFaceResources;
       
    35 import org.eclipse.jface.viewers.CellEditor;
       
    36 import org.eclipse.jface.viewers.ColumnLabelProvider;
       
    37 import org.eclipse.jface.viewers.ColumnViewer;
       
    38 import org.eclipse.jface.viewers.ColumnViewerEditor;
       
    39 import org.eclipse.jface.viewers.ColumnViewerEditorActivationEvent;
       
    40 import org.eclipse.jface.viewers.ColumnViewerEditorActivationStrategy;
       
    41 import org.eclipse.jface.viewers.DoubleClickEvent;
       
    42 import org.eclipse.jface.viewers.EditingSupport;
       
    43 import org.eclipse.jface.viewers.IDoubleClickListener;
       
    44 import org.eclipse.jface.viewers.ISelection;
       
    45 import org.eclipse.jface.viewers.ISelectionChangedListener;
       
    46 import org.eclipse.jface.viewers.IStructuredSelection;
       
    47 import org.eclipse.jface.viewers.SelectionChangedEvent;
       
    48 import org.eclipse.jface.viewers.TextCellEditor;
       
    49 import org.eclipse.jface.viewers.TreeColumnViewerLabelProvider;
       
    50 import org.eclipse.jface.viewers.TreeNode;
       
    51 import org.eclipse.jface.viewers.TreeNodeContentProvider;
       
    52 import org.eclipse.jface.viewers.TreeViewer;
       
    53 import org.eclipse.jface.viewers.TreeViewerColumn;
       
    54 import org.eclipse.jface.viewers.TreeViewerEditor;
       
    55 import org.eclipse.jface.viewers.Viewer;
       
    56 import org.eclipse.jface.viewers.ViewerSorter;
       
    57 import org.eclipse.swt.SWT;
       
    58 import org.eclipse.swt.events.KeyAdapter;
       
    59 import org.eclipse.swt.events.KeyEvent;
       
    60 import org.eclipse.swt.graphics.Color;
       
    61 import org.eclipse.swt.graphics.Image;
       
    62 import org.eclipse.swt.widgets.Composite;
       
    63 import org.eclipse.swt.widgets.Display;
       
    64 import org.eclipse.swt.widgets.Menu;
       
    65 import org.eclipse.swt.widgets.TreeColumn;
       
    66 import org.eclipse.swt.widgets.TreeItem;
       
    67 import org.eclipse.ui.IActionBars;
       
    68 import org.eclipse.ui.ISharedImages;
       
    69 import org.eclipse.ui.PlatformUI;
       
    70 import org.eclipse.ui.part.ViewPart;
       
    71 
    21 import com.nokia.carbide.remoteconnections.Messages;
    72 import com.nokia.carbide.remoteconnections.Messages;
    22 import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator;
    73 import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator;
    23 import com.nokia.carbide.remoteconnections.interfaces.*;
    74 import com.nokia.carbide.remoteconnections.interfaces.IConnectedService;
       
    75 import com.nokia.carbide.remoteconnections.interfaces.IConnection;
       
    76 import com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager;
    24 import com.nokia.carbide.remoteconnections.interfaces.IConnectedService.IStatus;
    77 import com.nokia.carbide.remoteconnections.interfaces.IConnectedService.IStatus;
    25 import com.nokia.carbide.remoteconnections.interfaces.IConnectedService.IStatusChangedListener;
    78 import com.nokia.carbide.remoteconnections.interfaces.IConnectedService.IStatusChangedListener;
    26 import com.nokia.carbide.remoteconnections.interfaces.IConnectedService.IStatus.EStatus;
    79 import com.nokia.carbide.remoteconnections.interfaces.IConnectedService.IStatus.EStatus;
    27 import com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager.IConnectionsManagerListener;
    80 import com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager.IConnectionsManagerListener;
       
    81 import com.nokia.carbide.remoteconnections.internal.IConnection2;
    28 import com.nokia.carbide.remoteconnections.internal.registry.Registry;
    82 import com.nokia.carbide.remoteconnections.internal.registry.Registry;
    29 import com.nokia.carbide.remoteconnections.settings.ui.SettingsWizard;
    83 import com.nokia.carbide.remoteconnections.settings.ui.SettingsWizard;
    30 import com.nokia.cpp.internal.api.utils.core.TextUtils;
    84 import com.nokia.cpp.internal.api.utils.core.TextUtils;
    31 
    85 
    32 import org.eclipse.jface.action.*;
       
    33 import org.eclipse.jface.resource.ImageDescriptor;
       
    34 import org.eclipse.jface.resource.JFaceResources;
       
    35 import org.eclipse.jface.viewers.*;
       
    36 import org.eclipse.swt.SWT;
       
    37 import org.eclipse.swt.events.*;
       
    38 import org.eclipse.swt.graphics.Color;
       
    39 import org.eclipse.swt.graphics.Image;
       
    40 import org.eclipse.swt.widgets.*;
       
    41 import org.eclipse.ui.*;
       
    42 import org.eclipse.ui.part.ViewPart;
       
    43 
       
    44 import java.util.*;
       
    45 import java.util.List;
       
    46 
       
    47 
    86 
    48 /**
    87 /**
    49  * The view part for Remote connections
    88  * The view part for Remote connections
    50  */
    89  */
       
    90 @SuppressWarnings("deprecation")
    51 public class ConnectionsView extends ViewPart {
    91 public class ConnectionsView extends ViewPart {
    52 
    92 
    53 	private TreeViewer viewer;
    93 	private TreeViewer viewer;
    54 	private IConnectionsManagerListener connectionStoreChangedListener;
    94 	private IConnectionsManagerListener connectionStoreChangedListener;
    55 	private Map<IConnectedService, IStatusChangedListener> serviceToListenerMap;
    95 	private Map<IConnectedService, IStatusChangedListener> serviceToListenerMap;
   143 
   183 
   144 		private NameEditingSupport(ColumnViewer viewer) {
   184 		private NameEditingSupport(ColumnViewer viewer) {
   145 			super(viewer);
   185 			super(viewer);
   146 			editor = new TextCellEditor((Composite) viewer.getControl(), SWT.BORDER);
   186 			editor = new TextCellEditor((Composite) viewer.getControl(), SWT.BORDER);
   147 		}
   187 		}
   148 
   188 		
   149 		@Override
   189 		@Override
   150 		protected boolean canEdit(Object element) {
   190 		protected boolean canEdit(Object element) {
   151 			if (((TreeNode) element).getValue() instanceof IConnection)
   191 			Object object = ((TreeNode) element).getValue();
       
   192 			if (object instanceof IConnection && !isDynamicConnection(object))
   152 				return true;
   193 				return true;
   153 			return false;
   194 			return false;
   154 		}
   195 		}
   155 
   196 
   156 		@Override
   197 		@Override
   539 		};
   580 		};
   540 		action.setId(NEW_ACTION);
   581 		action.setId(NEW_ACTION);
   541 		actions.add(action);
   582 		actions.add(action);
   542 		action.setEnabled(!Registry.instance().getConnectionTypes().isEmpty());
   583 		action.setEnabled(!Registry.instance().getConnectionTypes().isEmpty());
   543 		
   584 		
   544 		action = new Action(Messages.getString("ConnectionsView.EditActionLabel"), CONNECTION_EDIT_IMGDESC) { //$NON-NLS-1$
   585 		String editLabel = Messages.getString("ConnectionsView.EditActionLabel");
       
   586 		action = new Action(editLabel, CONNECTION_EDIT_IMGDESC) { //$NON-NLS-1$
   545 			@Override
   587 			@Override
   546 			public void run() {
   588 			public void run() {
   547 				ISelection selection = viewer.getSelection();
   589 				ISelection selection = viewer.getSelection();
   548 				if (selection.isEmpty())
   590 				if (selection.isEmpty())
   549 					return;
   591 					return;
   569 				Object value = node.getValue();
   611 				Object value = node.getValue();
   570 				if (value instanceof IConnection) {
   612 				if (value instanceof IConnection) {
   571 					viewer.editElement(node, 0);
   613 					viewer.editElement(node, 0);
   572 				}
   614 				}
   573 			}
   615 			}
       
   616 
       
   617 			@Override
       
   618 			public boolean isEnabled() {
       
   619 				return selectionCanBeEdited();
       
   620 			}
   574 		};
   621 		};
   575 		action.setId(RENAME_ACTION);
   622 		action.setId(RENAME_ACTION);
   576 		action.setAccelerator(SWT.F2);
   623 		action.setAccelerator(SWT.F2);
   577 		action.setText(Messages.getString("ConnectionsView.RenameMenuLabel") +  //$NON-NLS-1$
   624 		action.setText(Messages.getString("ConnectionsView.RenameMenuLabel") +  //$NON-NLS-1$
   578 				"\t" +  //$NON-NLS-1$
   625 				"\t" +  //$NON-NLS-1$
   614 				Object value = node.getValue();
   661 				Object value = node.getValue();
   615 				if (value instanceof IConnection) {
   662 				if (value instanceof IConnection) {
   616 					Registry.instance().removeConnection((IConnection) value);
   663 					Registry.instance().removeConnection((IConnection) value);
   617 					Registry.instance().storeConnections();
   664 					Registry.instance().storeConnections();
   618 				}
   665 				}
       
   666 			}
       
   667 
       
   668 			@Override
       
   669 			public boolean isEnabled() {
       
   670 				return selectionCanBeEdited();
   619 			}
   671 			}
   620 		};
   672 		};
   621 		action.setAccelerator(SWT.DEL);
   673 		action.setAccelerator(SWT.DEL);
   622 		action.setId(DELETE_ACTION);
   674 		action.setId(DELETE_ACTION);
   623 		actions.add(action);
   675 		actions.add(action);
   752 
   804 
   753 	private boolean isConnectionInUse(IConnection connection) {
   805 	private boolean isConnectionInUse(IConnection connection) {
   754 		return getFirstInUseStatus(connection) != null;
   806 		return getFirstInUseStatus(connection) != null;
   755 	}
   807 	}
   756 
   808 
       
   809 	private boolean isDynamicConnection(Object object) {
       
   810 		return object instanceof IConnection2 && ((IConnection2) object).isDynamic();
       
   811 	}
       
   812 
       
   813 	private boolean selectionCanBeEdited() {
       
   814 		ISelection selection = viewer.getSelection();
       
   815 		if (selection.isEmpty())
       
   816 			return false;
       
   817 		TreeNode node = (TreeNode) ((IStructuredSelection) selection).getFirstElement();
       
   818 		return !isDynamicConnection(node.getValue());
       
   819 	}
   757 }
   820 }
   758 
   821