blob: 7927c85407532b3fa786e49cf3c530353a4ebe6d [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.tabs.main;
import org.eclipse.core.runtime.ListenerList;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.wst.xsl.internal.debug.ui.actions.AbstractStylesheetAction;
import org.eclipse.wst.xsl.launching.config.LaunchAttribute;
public class ParameterViewer
{
private final TableViewer viewer;
private final ListenerList fListeners = new ListenerList();
public ParameterViewer(Table table)
{
viewer = new TableViewer(table);
}
public TableViewer getViewer()
{
return viewer;
}
private ParametersContentProvider getParametersContentProvider()
{
return (ParametersContentProvider) viewer.getContentProvider();
}
public Shell getShell()
{
return viewer.getControl().getShell();
}
public boolean isEnabled()
{
return true;
}
public boolean updateSelection(int actionType, IStructuredSelection selection)
{
switch (actionType)
{
case AbstractStylesheetAction.ADD:
return true;
case AbstractStylesheetAction.REMOVE:
case AbstractStylesheetAction.MOVE:
default:
break;
}
return selection.size() > 0;
}
public IStructuredSelection getSelectedEntries()
{
IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
return selection;
}
public void addParameter(LaunchAttribute parameter)
{
getParametersContentProvider().addParameter(parameter);
notifyChanged();
}
public void removeEntries(LaunchAttribute[] entries)
{
getParametersContentProvider().removeParameters(entries);
notifyChanged();
}
public LaunchAttribute[] getParameters()
{
return getParametersContentProvider().getParameters();
}
public void addParametersChangedListener(IParametersChangedListener listener)
{
fListeners.add(listener);
}
public void removeParametersChangedListener(IParametersChangedListener listener)
{
fListeners.remove(listener);
}
private void notifyChanged()
{
Object[] listeners = fListeners.getListeners();
for (Object element : listeners)
{
((IParametersChangedListener) element).parametersChanged(this);
}
}
}