/******************************************************************************* * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others. All rights reserved. * This program and the accompanying materials are made available under the terms * of the Eclipse Public License v1.0 which accompanies this distribution, and is * available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Wind River Systems - initial API and implementation *******************************************************************************/ package org.eclipse.tcf.te.tcf.filesystem.ui.internal.celleditor; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.ICellModifier; import org.eclipse.jface.viewers.TextCellEditor; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.events.FocusListener; import org.eclipse.swt.widgets.Tree; import org.eclipse.tcf.te.tcf.filesystem.ui.internal.handlers.RenameFilesHandler; import org.eclipse.tcf.te.ui.interfaces.IViewerCellEditorFactory; /** * FSViewerCellEditorFactory implements <code>IViewerCellEditorFactory</code> to add * cell editors to Target Explorer for renaming files or folders in the file system tree viewer. */ public class FSViewerCellEditorFactory implements IViewerCellEditorFactory, FocusListener { // The tree viewer to add cell editing. private TreeViewer viewer; // The cell editors used to rename a file/folder. private TextCellEditor cellEditor; // The cell modifier used to modify a file/folder's name. private ICellModifier cellModifer; /** * Create an instance. */ public FSViewerCellEditorFactory() { } /* * (non-Javadoc) * @see org.eclipse.tcf.te.ui.views.interfaces.IViewerCellEditorFactory#init(org.eclipse.jface.viewers.TreeViewer) */ @Override public void init(TreeViewer aViewer) { viewer = aViewer; cellEditor = new TextCellEditor(aViewer.getTree(), SWT.BORDER); cellEditor.setValidator(new FSCellValidator(aViewer)); cellEditor.addListener(new FSCellListener(cellEditor)); cellModifer = new FSCellModifier(); Tree tree = aViewer.getTree(); tree.addFocusListener(this); } /* * (non-Javadoc) * @see org.eclipse.tcf.te.ui.views.interfaces.IViewerCellEditorFactory#getCellEditors() */ @Override public CellEditor[] getCellEditors() { return new CellEditor[] { cellEditor }; } /* * (non-Javadoc) * @see org.eclipse.tcf.te.ui.views.interfaces.IViewerCellEditorFactory#getCellModifier() */ @Override public ICellModifier getCellModifier() { return cellModifer; } /* * (non-Javadoc) * @see org.eclipse.tcf.te.ui.views.interfaces.IViewerCellEditorFactory#getColumnProperties() */ @Override public String[] getColumnProperties() { return new String[] { FSCellModifier.PROPERTY_NAME }; } /* * (non-Javadoc) * @see org.eclipse.swt.events.FocusListener#focusGained(org.eclipse.swt.events.FocusEvent) */ @Override public void focusGained(FocusEvent e) { // Set the currently focused viewer. RenameFilesHandler.setCurrentViewer(viewer); } /* * (non-Javadoc) * @see org.eclipse.swt.events.FocusListener#focusLost(org.eclipse.swt.events.FocusEvent) */ @Override public void focusLost(FocusEvent e) { } }