blob: d19b75be0bf42931fefbed8d30d84a2b25079b2d [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007 Chase Technology Ltd - http://www.chasetechnology.co.uk
* 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:
* Doug Satchwell (Chase Technology Ltd) - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.xsl.internal.debug.ui.actions;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.actions.SelectionListenerAction;
import org.eclipse.wst.xsl.internal.debug.ui.tabs.main.ParameterViewer;
/**
* A convenient base class for add/remove parameter actions.
*
* @author Doug Satchwell
*/
public abstract class AbstractParameterAction extends SelectionListenerAction
{
private ParameterViewer viewer;
private Button button;
private Shell shell;
protected AbstractParameterAction(String text, ParameterViewer viewer)
{
super(text);
setViewer(viewer);
}
/**
* Set the viewer.
*
* @param viewer the parametere viewer
*/
public void setViewer(ParameterViewer viewer)
{
if (this.viewer != null)
{
this.viewer.removeSelectionChangedListener(this);
}
this.viewer = viewer;
if (viewer != null)
{
viewer.addSelectionChangedListener(this);
update();
}
}
protected ParameterViewer getViewer()
{
return viewer;
}
/**
* Set the button associated with the action.
*
* @param button the button
*/
public void setButton(Button button)
{
this.button = button;
button.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent evt)
{
run();
}
});
button.setEnabled(isEnabled());
}
@Override
public void setEnabled(boolean enabled)
{
super.setEnabled(enabled);
if (button != null)
{
button.setEnabled(enabled);
}
}
protected void update()
{
selectionChanged((IStructuredSelection) getViewer().getSelection());
}
protected Shell getShell()
{
if (shell == null)
{
shell = getViewer().getShell();
}
return shell;
}
/**
* Set the shell that will be used for opening a dialog.
*
* @param shell the shell to use
*/
public void setShell(Shell shell)
{
this.shell = shell;
}
@Override
protected boolean updateSelection(IStructuredSelection selection)
{
return getViewer().updateSelection(getActionType(), selection);
}
protected int getActionType()
{
return AbstractStylesheetAction.DEFAULT;
}
}