1/* 2 * Copyright (C) 2007 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.ide.eclipse.ddms.views; 18 19import com.android.ddmlib.Client; 20import com.android.ddmlib.IDevice; 21import com.android.ddmuilib.ImageLoader; 22import com.android.ddmuilib.explorer.DeviceExplorer; 23import com.android.ide.eclipse.ddms.CommonAction; 24import com.android.ide.eclipse.ddms.DdmsPlugin; 25import com.android.ide.eclipse.ddms.DdmsPlugin.ISelectionListener; 26import com.android.ide.eclipse.ddms.i18n.Messages; 27 28import org.eclipse.jface.action.IMenuManager; 29import org.eclipse.jface.action.IToolBarManager; 30import org.eclipse.jface.action.Separator; 31import org.eclipse.swt.graphics.Device; 32import org.eclipse.swt.widgets.Composite; 33import org.eclipse.ui.IActionBars; 34import org.eclipse.ui.ISharedImages; 35import org.eclipse.ui.PlatformUI; 36import org.eclipse.ui.part.ViewPart; 37 38public class FileExplorerView extends ViewPart implements ISelectionListener { 39 40 public static final String ID = "com.android.ide.eclipse.ddms.views.FileExplorerView"; //$NON-NLS-1$ 41 42 private final static String COLUMN_NAME = 43 DdmsPlugin.PLUGIN_ID + ".explorer.name"; //$NON-NLS-1S 44 private final static String COLUMN_SIZE = 45 DdmsPlugin.PLUGIN_ID + ".explorer.size"; //$NON-NLS-1S 46 private final static String COLUMN_DATE = 47 DdmsPlugin.PLUGIN_ID + ".explorer.data"; //$NON-NLS-1S 48 private final static String COLUMN_TIME = 49 DdmsPlugin.PLUGIN_ID + ".explorer.time"; //$NON-NLS-1S 50 private final static String COLUMN_PERMISSIONS = 51 DdmsPlugin.PLUGIN_ID + ".explorer.permissions"; //$NON-NLS-1S 52 private final static String COLUMN_INFO = 53 DdmsPlugin.PLUGIN_ID + ".explorer.info"; //$NON-NLS-1$ 54 55 private DeviceExplorer mExplorer; 56 57 public FileExplorerView() { 58 } 59 60 @Override 61 public void createPartControl(Composite parent) { 62 ImageLoader loader = ImageLoader.getDdmUiLibLoader(); 63 64 DeviceExplorer.COLUMN_NAME = COLUMN_NAME; 65 DeviceExplorer.COLUMN_SIZE = COLUMN_SIZE; 66 DeviceExplorer.COLUMN_DATE = COLUMN_DATE; 67 DeviceExplorer.COLUMN_TIME = COLUMN_TIME; 68 DeviceExplorer.COLUMN_PERMISSIONS = COLUMN_PERMISSIONS; 69 DeviceExplorer.COLUMN_INFO = COLUMN_INFO; 70 71 // device explorer 72 mExplorer = new DeviceExplorer(); 73 74 mExplorer.setCustomImages( 75 PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE), 76 PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER), 77 null /* apk image */, 78 PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT) 79 ); 80 81 // creates the actions 82 CommonAction pushAction = new CommonAction(Messages.FileExplorerView_Push_File) { 83 @Override 84 public void run() { 85 mExplorer.pushIntoSelection(); 86 } 87 }; 88 pushAction.setToolTipText(Messages.FileExplorerView_Push_File_Onto_Device); 89 pushAction.setImageDescriptor(loader.loadDescriptor("push.png")); //$NON-NLS-1$ 90 pushAction.setEnabled(false); 91 92 CommonAction pullAction = new CommonAction(Messages.FileExplorerView_Pull_File) { 93 @Override 94 public void run() { 95 mExplorer.pullSelection(); 96 } 97 }; 98 pullAction.setToolTipText(Messages.FileExplorerView_Pull_File_From_File); 99 pullAction.setImageDescriptor(loader.loadDescriptor("pull.png")); //$NON-NLS-1$ 100 pullAction.setEnabled(false); 101 102 CommonAction deleteAction = new CommonAction(Messages.FileExplorerView_Delete) { 103 @Override 104 public void run() { 105 mExplorer.deleteSelection(); 106 } 107 }; 108 deleteAction.setToolTipText(Messages.FileExplorerView_Delete_The_Selection); 109 deleteAction.setImageDescriptor(loader.loadDescriptor("delete.png")); //$NON-NLS-1$ 110 deleteAction.setEnabled(false); 111 112 CommonAction createNewFolderAction = new CommonAction("New Folder") { 113 @Override 114 public void run() { 115 mExplorer.createNewFolderInSelection(); 116 } 117 }; 118 createNewFolderAction.setToolTipText("New Folder"); 119 createNewFolderAction.setImageDescriptor(loader.loadDescriptor("add.png")); //$NON-NLS-1$ 120 createNewFolderAction.setEnabled(false); 121 122 // set up the actions in the explorer 123 mExplorer.setActions(pushAction, pullAction, deleteAction, createNewFolderAction); 124 125 // and in the ui 126 IActionBars actionBars = getViewSite().getActionBars(); 127 IMenuManager menuManager = actionBars.getMenuManager(); 128 IToolBarManager toolBarManager = actionBars.getToolBarManager(); 129 130 menuManager.add(pullAction); 131 menuManager.add(pushAction); 132 menuManager.add(new Separator()); 133 menuManager.add(deleteAction); 134 menuManager.add(new Separator()); 135 menuManager.add(createNewFolderAction); 136 137 toolBarManager.add(pullAction); 138 toolBarManager.add(pushAction); 139 toolBarManager.add(new Separator()); 140 toolBarManager.add(deleteAction); 141 toolBarManager.add(new Separator()); 142 toolBarManager.add(createNewFolderAction); 143 144 mExplorer.createPanel(parent); 145 146 DdmsPlugin.getDefault().addSelectionListener(this); 147 } 148 149 @Override 150 public void setFocus() { 151 mExplorer.setFocus(); 152 } 153 154 /** 155 * Sent when a new {@link Client} is selected. 156 * 157 * @param selectedClient The selected client. 158 */ 159 @Override 160 public void selectionChanged(Client selectedClient) { 161 // pass 162 } 163 164 /** 165 * Sent when a new {@link Device} is selected. 166 * 167 * @param selectedDevice the selected device. 168 */ 169 @Override 170 public void selectionChanged(IDevice selectedDevice) { 171 mExplorer.switchDevice(selectedDevice); 172 } 173 174 /** 175 * Sent when there is no current selection. 176 */ 177 public void selectionRemoved() { 178 179 } 180 181} 182