[Title]only enable remove action after device is disconnected.
authorhyunsik.noh <hyunsik.noh@samsung.com>
Wed, 22 Aug 2012 05:48:38 +0000 (14:48 +0900)
committerhyunsik.noh <hyunsik.noh@samsung.com>
Wed, 22 Aug 2012 05:48:38 +0000 (14:48 +0900)
[Type]enhancement
[Module]connection
[Priority]normal
[CQ#]
[Redmine#]6213

Change-Id: Ib72f4f7cdf8e3537d28ebb0bea5a92651c22acd8

org.tizen.common.connection/src/org/tizen/common/connection/explorer/ConnectionExplorerLabelProvider.java
org.tizen.common.connection/src/org/tizen/common/connection/log/AddViewDialog.java
org.tizen.common.connection/src/org/tizen/common/connection/log/LogPanel.java
org.tizen.common.connection/src/org/tizen/common/connection/log/LogTab.java

index a06635d..c9a59c4 100644 (file)
@@ -1,28 +1,28 @@
 /*
-*  Common
-*
-* Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
-*
-* Contact:
-* Hoon Kang <h245.kang@samsung.com>
-* Hyunsik Noh <hyunsik.noh@samsung.com>
-*
+ *  Common
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * Hoon Kang <h245.kang@samsung.com>
+ * Hyunsik Noh <hyunsik.noh@samsung.com>
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*
-* Contributors:
-* - S-Core Co., Ltd
-*
-*/
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
 package org.tizen.common.connection.explorer;
 
 import org.eclipse.jface.viewers.ILabelProviderListener;
@@ -35,95 +35,127 @@ import org.tizen.sdblib.FileListingService;
 import org.tizen.sdblib.FileListingService.FileEntry;
 import org.tizen.sdblib.IDevice;
 
-public class ConnectionExplorerLabelProvider implements ITableLabelProvider {
+public class ConnectionExplorerLabelProvider implements ITableLabelProvider
+{
 
-       private final Image fileImage;
-       private final Image folderImage;
-       private final Image fileLinkImage;
-       private final Image folderLinkImage;
-       private final Image otherImage;
-       private final Image emulatorImage;
-       private final Image deviceImage;
-       public static int index;
+    private final Image fileImage;
+    private final Image folderImage;
+    private final Image fileLinkImage;
+    private final Image folderLinkImage;
+    private final Image otherImage;
+    private final Image emulatorImage;
+    private final Image deviceImage;
+    public static int index;
 
-       public ConnectionExplorerLabelProvider(Display display) {
+    public ConnectionExplorerLabelProvider(Display display)
+    {
 
-               fileImage = ConnectionPlugin.getImageDescriptorFromPlugin("icons/file.gif").createImage();
-               folderImage = ConnectionPlugin.getImageDescriptorFromPlugin("icons/directory.gif").createImage();
-               fileLinkImage = ConnectionPlugin.getImageDescriptorFromPlugin("icons/file_link.gif").createImage();
-               folderLinkImage = ConnectionPlugin.getImageDescriptorFromPlugin("icons/directory_link.gif").createImage();
-               otherImage = ConnectionPlugin.getImageDescriptorFromPlugin("icons/file.gif").createImage();
-               emulatorImage = ConnectionPlugin.getImageDescriptorFromPlugin("icons/emulator.gif").createImage();
-               deviceImage = ConnectionPlugin.getImageDescriptorFromPlugin("icons/device.gif").createImage();
-       }
+        fileImage = ConnectionPlugin.getImageDescriptorFromPlugin("icons/file.gif").createImage();
+        folderImage = ConnectionPlugin.getImageDescriptorFromPlugin("icons/directory.gif")
+                .createImage();
+        fileLinkImage = ConnectionPlugin.getImageDescriptorFromPlugin("icons/file_link.gif")
+                .createImage();
+        folderLinkImage = ConnectionPlugin.getImageDescriptorFromPlugin("icons/directory_link.gif")
+                .createImage();
+        otherImage = ConnectionPlugin.getImageDescriptorFromPlugin("icons/file.gif").createImage();
+        emulatorImage = ConnectionPlugin.getImageDescriptorFromPlugin("icons/emulator.gif")
+                .createImage();
+        deviceImage = ConnectionPlugin.getImageDescriptorFromPlugin("icons/device.gif")
+                .createImage();
+    }
 
-       @Override
-       public Image getColumnImage(Object element, int columnIndex) {
-               if (columnIndex == 0) {
-                       if (element instanceof FileEntry) {
-                               FileEntry entry = (FileEntry) element;
-                               switch (entry.getType()) {
-                               case FileListingService.TYPE_FILE:
-                                       return fileImage;
-                               case FileListingService.TYPE_LINK:
-                                       return fileLinkImage;
-                               case FileListingService.TYPE_DIRECTORY:
-                                       return folderImage;
-                               case FileListingService.TYPE_DIRECTORY_LINK:
-                                       return folderLinkImage;
-                               case FileListingService.TYPE_ROOT_EMULATOR:
-                                       return emulatorImage;
-                               case FileListingService.TYPE_ROOT_DEVICE:
-                                       return deviceImage;
-                               default:
-                                       return otherImage;
-                               }
-                       }
-               }
-               return null;
-       }
+    @Override
+    public Image getColumnImage(Object element, int columnIndex)
+    {
+        if (columnIndex == 0)
+        {
+            if (element instanceof FileEntry)
+            {
+                FileEntry entry = (FileEntry) element;
+                switch (entry.getType())
+                {
+                    case FileListingService.TYPE_FILE:
+                        return fileImage;
+                    case FileListingService.TYPE_LINK:
+                        return fileLinkImage;
+                    case FileListingService.TYPE_DIRECTORY:
+                        return folderImage;
+                    case FileListingService.TYPE_DIRECTORY_LINK:
+                        return folderLinkImage;
+                    case FileListingService.TYPE_ROOT_EMULATOR:
+                        return emulatorImage;
+                    case FileListingService.TYPE_ROOT_DEVICE:
+                        return deviceImage;
+                    default:
+                        return otherImage;
+                }
+            }
+        }
+        return null;
+    }
 
-       @Override
-       public String getColumnText(Object element, int columnIndex) {
-               if (element instanceof FileEntry) {
-                       FileEntry entry = (FileEntry) element;
+    @Override
+    public String getColumnText(Object element, int columnIndex)
+    {
+        if (element instanceof FileEntry)
+        {
+            FileEntry entry = (FileEntry) element;
 
-                       switch (columnIndex) {
-                       case 0:
-                           if(entry.isRoot()) {
-                               return entry.getFileListingService().getDevice().getSerialNumber()
-                                       + " (" + entry.getName() + ")";
-                           }
-                           else {
-                               return entry.getName();
-                           }
-                       default:
-                               return null;
-                       }
-               } else if (element instanceof IDevice) {
-                       IDevice device = (IDevice) element;
-                       return device.getDeviceName();
-               }
-               return null;
-       }
+            switch (columnIndex)
+            {
+                case 0:
+                    if (entry.isRoot())
+                    {
+                        return getDeviceSerialWithName(entry);
+                    } else
+                    {
+                        return entry.getName();
+                    }
+                default:
+                    return null;
+            }
+        } else if (element instanceof IDevice)
+        {
+            IDevice device = (IDevice) element;
+            return device.getDeviceName();
+        }
+        return null;
+    }
 
-       @Override
-       public void addListener(ILabelProviderListener listener) {
-       }
+    @Override
+    public void addListener(ILabelProviderListener listener)
+    {}
 
-       @Override
-       public void dispose() {
-           SWTUtil.tryDispose(fileImage, folderImage, fileLinkImage, folderLinkImage,
-                   otherImage, emulatorImage, deviceImage);
-       }
+    @Override
+    public void dispose()
+    {
+        SWTUtil.tryDispose(fileImage, folderImage, fileLinkImage, folderLinkImage, otherImage,
+                emulatorImage, deviceImage);
+    }
 
-       @Override
-       public boolean isLabelProperty(Object element, String property) {
-               return false;
-       }
+    @Override
+    public boolean isLabelProperty(Object element, String property)
+    {
+        return false;
+    }
 
-       @Override
-       public void removeListener(ILabelProviderListener listener) {
-       }
+    @Override
+    public void removeListener(ILabelProviderListener listener)
+    {}
+
+    public static String getDeviceSerialWithName(IDevice device)
+    {
+        return combineSerialWithName(device.getSerialNumber(), device.getDeviceName());
+    }
+
+    public static String getDeviceSerialWithName(FileEntry entry)
+    {
+        return combineSerialWithName(entry.getFileListingService().getDevice().getSerialNumber(), entry.getName());
+    }
+    
+    private static String combineSerialWithName(String serial, String name)
+    {
+        return String.format("%s (%s)", serial, name);
+    }
 
 }
\ No newline at end of file
index 18d6a6f..6e68172 100644 (file)
@@ -100,9 +100,9 @@ public class AddViewDialog extends Dialog
         {
             dialogName = "Edit LogTab";
             tabName = tab.getLogTabName();
-            if (tab.getDeviceName() == null)
+            if (tab.getDeviceSerialNumber() == null)
                 return;
-            device = tab.getDeviceName();
+            device = tab.getDeviceSerialNumber();
 
             pidKeyword = tab.getPidFilter();
             tagKeyword = tab.getTagFilter();
index 9a0a456..d8dafc0 100644 (file)
@@ -68,6 +68,7 @@ import org.tizen.common.connection.ddmuilib.FileDialogUtils;
 import org.tizen.common.connection.ddmuilib.ITableFocusListener;
 import org.tizen.common.connection.ddmuilib.ITableFocusListener.IFocusedTableActivator;
 import org.tizen.common.connection.ddmuilib.Panel;
+import org.tizen.common.connection.explorer.ConnectionExplorerLabelProvider;
 import org.tizen.common.util.DialogUtil;
 import org.tizen.common.util.NotificationType;
 import org.tizen.common.util.NotifierDialog;
@@ -80,9 +81,14 @@ import org.tizen.sdblib.SmartDevelopmentBridge.IDeviceChangeListener;
 public class LogPanel extends Panel implements IDeviceChangeListener
 {
 
+    //Nothing enabled
     public static final int NO_TAB = 0;
+    //Only remove disabled
     public static final int DEVICE_TAB = 1;
+    //Everything enabled
     public static final int ADDITIONAL_TAB = 2;
+    //Only add, edit disabled
+    public static final int DISCONNECTED_TAB = 3;
     
     private final int ENABLE_ADD = 0x0000001;
     private final int ENABLE_REMOVE = 0x0000010;
@@ -218,14 +224,24 @@ public class LogPanel extends Panel implements IDeviceChangeListener
      */
     private void setEnableAndCheckState(LogTab logTab)
     {
-         if (logTab.isDefault())
-         {
-             setEnabledForActions(LogPanel.DEVICE_TAB);
-         } else
-         {
-             setEnabledForActions(LogPanel.ADDITIONAL_TAB);
-         }
-         setCheckActionState(logTab);
+        String serial = logTab.getDeviceSerialNumber();
+        //if device is disconnected, only remove enabled.
+        if(serial == null)
+        {
+            setEnabledForActions(LogPanel.DISCONNECTED_TAB);
+        }
+        else
+        {
+            if (logTab.isDefault())
+            {
+                setEnabledForActions(LogPanel.DEVICE_TAB);
+            }
+            else
+            {
+                setEnabledForActions(LogPanel.ADDITIONAL_TAB);
+            }
+        }
+        setCheckActionState(logTab);
     }
 
     /**
@@ -254,12 +270,11 @@ public class LogPanel extends Panel implements IDeviceChangeListener
         {
             if (device.isOffline())
                 continue;
-            LogTab dTab = createLogTab(device.getSerialNumber()+" (" + device.getDeviceName() + ")", device, true);
+            LogTab dTab = createLogTab(ConnectionExplorerLabelProvider.getDeviceSerialWithName(device), device, true);
             dTab.start();
         }
     }
-
-
+    
     /**
      * Create LogTab and TabItem and
      * set action and icon status
@@ -614,7 +629,7 @@ public class LogPanel extends Panel implements IDeviceChangeListener
      */
     private boolean checkTabConnection(LogTab tab, String title)
     {
-        String deviceName = tab.getDeviceName();
+        String deviceName = tab.getDeviceSerialNumber();
         if (deviceName == null)
         {
             String tabName = tab.getLogTabName();
@@ -640,7 +655,7 @@ public class LogPanel extends Panel implements IDeviceChangeListener
             return;
         }
 
-        AddViewDialog dlg = new AddViewDialog(parent.getShell(), tab.getDeviceName());
+        AddViewDialog dlg = new AddViewDialog(parent.getShell(), tab.getDeviceSerialNumber());
 
         if (dlg.getDevice() == null)
             return;
@@ -684,6 +699,10 @@ public class LogPanel extends Panel implements IDeviceChangeListener
         LogTab tab = logTabList.get(index);
         removeTab(tab);
         logTabList.remove(tab);
+        if(logTabList.isEmpty())
+        {
+            setEnabledForActions(NO_TAB);
+        }
     }
 
     /**
@@ -816,10 +835,18 @@ public class LogPanel extends Panel implements IDeviceChangeListener
                 {
                     if (parent.isDisposed() == false)
                     {
-                        String deviceSn = device.getSerialNumber();
+                        String name = ConnectionExplorerLabelProvider.getDeviceSerialWithName(device);
                         String title = LogUIMessages.Log_Title_View_Device_Disconnected;
-                        String message = String.format(LogUIMessages.Log_Message_View_Device_Disconnected, deviceSn, deviceSn);
+                        String message = String.format(LogUIMessages.Log_Message_View_Device_Disconnected, name, name);
                         NotifierDialog.notify(title, message, NotificationType.DISCONNECTED);
+                        for( LogTab tab : logTabList)
+                        {
+                            if(device.getSerialNumber().equals(tab.getDeviceSerialNumber()))
+                            {
+                                tab.setDevice(null);
+                            }
+                        }
+                        setEnabledForActions(LogPanel.DISCONNECTED_TAB);
 
                     } else
                     {
@@ -845,7 +872,7 @@ public class LogPanel extends Panel implements IDeviceChangeListener
                     {
                         if (tabFolder.isDisposed() == false)
                         {
-                            LogTab tab = createLogTab(device.getSerialNumber(), device, true);
+                            LogTab tab = createLogTab(ConnectionExplorerLabelProvider.getDeviceSerialWithName(device), device, true);
                             tab.start();
                         } else
                         {
@@ -916,7 +943,11 @@ public class LogPanel extends Panel implements IDeviceChangeListener
         }
         else if (tabType == ADDITIONAL_TAB)
         {
-            enable = ENABLE_ADD | ENABLE_REMOVE | ENABLE_EDIT | ENABLE_SCROLL_LOCK |ENABLE_EXPORT | ENABLE_CLEAR | ENABLE_LEVEL;
+            enable = ENABLE_ADD | ENABLE_REMOVE | ENABLE_EDIT | ENABLE_SCROLL_LOCK | ENABLE_EXPORT | ENABLE_CLEAR | ENABLE_LEVEL;
+        }
+        else if (tabType == DISCONNECTED_TAB)
+        {
+            enable = ENABLE_REMOVE | ENABLE_EXPORT | ENABLE_LEVEL;
         }
 
         return enable;
index bfbe79f..bfd7b6d 100644 (file)
@@ -192,7 +192,7 @@ public class LogTab
         return msgInput;
     }
 
-    public String getDeviceName()
+    public String getDeviceSerialNumber()
     {
         if (device != null)
             return device.getSerialNumber();