package com.netifera.platform.host.filesystem.ui.actions; import org.eclipse.jface.action.Action; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; public class AbstractFileSystemAction extends Action implements ISelectionChangedListener { private ISelectionProvider selectionProvider; private IStructuredSelection selection; public AbstractFileSystemAction(ISelectionProvider selectionProvider) { setSelectionProvider(selectionProvider); } public void setSelectionProvider(ISelectionProvider selectionProvider) { if(this.selectionProvider != null) { this.selectionProvider.removeSelectionChangedListener(this); } this.selectionProvider = selectionProvider; selectionProvider.addSelectionChangedListener(this); } public void selectionChanged(SelectionChangedEvent event) { selection = (IStructuredSelection) event.getSelection(); setEnabled(!selection.isEmpty()); } public IStructuredSelection getSelection() { return selection; } /* * FIXME * we're not cleaning the selection listener, it seems */ /* public void dispose() { super.disposed(); if (selectionProvider != null) selectionProvider.removeSelectionChangedListener(this); }*/ }