/* * Copyright (C) 2007 The Android Open Source Project * * 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. */ package com.android.ide.eclipse.ddms.views; import com.android.ddmuilib.ITableFocusListener; import com.android.ddmuilib.TablePanel; import com.android.ddmuilib.ITableFocusListener.IFocusedTableActivator; import org.eclipse.jface.action.Action; import org.eclipse.swt.dnd.Clipboard; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IActionBars; import org.eclipse.ui.actions.ActionFactory; /** * Base class for view containing Table that needs to support copy, and select all. */ public abstract class TableView extends SelectionDependentViewPart { /** Activator for the current Table that has the focus */ IFocusedTableActivator mActivator = null; private Clipboard mClipboard; private Action mCopyAction; private Action mSelectAllAction; /** * Setup the listener for the Table objects of <code>Panel</code>, and setup * the copy and select all actions. * @param panel The panel to setup * @param parent The parent composite of the Panel's content. */ void setupTableFocusListener(TablePanel panel, Composite parent) { panel.setTableFocusListener(new ITableFocusListener() { public void focusGained(IFocusedTableActivator activator) { mActivator = activator; mCopyAction.setEnabled(true); mSelectAllAction.setEnabled(true); } public void focusLost(IFocusedTableActivator activator) { if (activator == mActivator) { mActivator = null; mCopyAction.setEnabled(false); mSelectAllAction.setEnabled(false); } } }); // setup the copy action mClipboard = new Clipboard(parent.getDisplay()); IActionBars actionBars = getViewSite().getActionBars(); actionBars.setGlobalActionHandler(ActionFactory.COPY.getId(), mCopyAction = new Action("Copy") { @Override public void run() { if (mActivator != null) { mActivator.copy(mClipboard); } } }); // setup the select all action actionBars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(), mSelectAllAction = new Action("Select All") { @Override public void run() { if (mActivator != null) { mActivator.selectAll(); } } }); } @Override public void dispose() { super.dispose(); mClipboard.dispose(); } }