blob: 552576f710a416c3c78705db2c06f7b323522fa9 [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.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Table;
import org.eclipse.wst.xsl.internal.debug.ui.AbstractTableBlock;
import org.eclipse.wst.xsl.internal.debug.ui.Messages;
import org.eclipse.wst.xsl.internal.debug.ui.XSLDebugUIConstants;
import org.eclipse.wst.xsl.internal.debug.ui.XSLDebugUIPlugin;
import org.eclipse.wst.xsl.internal.debug.ui.actions.AbstractStylesheetAction;
import org.eclipse.wst.xsl.internal.debug.ui.actions.AddExternalFileAction;
import org.eclipse.wst.xsl.internal.debug.ui.actions.AddWorkspaceFileAction;
import org.eclipse.wst.xsl.internal.debug.ui.actions.MoveDownAction;
import org.eclipse.wst.xsl.internal.debug.ui.actions.MoveUpAction;
import org.eclipse.wst.xsl.internal.debug.ui.actions.RemoveAction;
import org.eclipse.wst.xsl.launching.config.LaunchPipeline;
public class TransformsBlock extends AbstractTableBlock implements
IStylesheetEntriesChangedListener {
protected static final String DIALOG_SETTINGS_PREFIX = "TransformsBlock"; //$NON-NLS-1$
private StylesheetViewer stylesheetViewer;
private LaunchPipeline pipeline;
public TransformsBlock() {
super();
}
public void createControl(Composite parent) {
Font font = parent.getFont();
Group group = new Group(parent, SWT.NONE);
group.setText(getName());
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
group.setLayoutData(gd);
GridLayout layout = new GridLayout();
layout.numColumns = 3;
group.setLayout(layout);
group.setFont(font);
setControl(group);
stylesheetViewer = new StylesheetViewer(group);
gd = new GridData(SWT.FILL, SWT.FILL, true, true);
stylesheetViewer.getViewer().getTable().setLayoutData(gd);
stylesheetViewer.addEntriesChangedListener(this);
stylesheetViewer.getViewer().getControl().setFont(font);
stylesheetViewer.getViewer().setLabelProvider(
new StylesheetLabelProvider());
stylesheetViewer.getViewer().setContentProvider(
new StylesheetContentProvider());
stylesheetViewer.getViewer().getTable().addKeyListener(
new KeyAdapter() {
@Override
public void keyPressed(KeyEvent event) {
if (event.character == SWT.DEL && event.stateMask == 0) {
RemoveAction ra = new RemoveAction(stylesheetViewer);
ra.run();
updateLaunchConfigurationDialog();
}
}
});
Composite upDownButtonComp = new Composite(group, SWT.NONE);
GridLayout upDownButtonLayout = new GridLayout();
upDownButtonLayout.marginHeight = 0;
upDownButtonLayout.marginWidth = 0;
upDownButtonComp.setLayout(upDownButtonLayout);
gd = new GridData(SWT.FILL, SWT.FILL, false, true);
upDownButtonComp.setLayoutData(gd);
upDownButtonComp.setFont(font);
createArrowButton(upDownButtonComp, new MoveUpAction(stylesheetViewer),
SWT.UP);
Label spacer = new Label(upDownButtonComp, SWT.NONE);
gd = new GridData(SWT.NONE, SWT.FILL, false, true);
spacer.setLayoutData(gd);
createArrowButton(upDownButtonComp,
new MoveDownAction(stylesheetViewer), SWT.DOWN);
Composite pathButtonComp = new Composite(group, SWT.NONE);
GridLayout pathButtonLayout = new GridLayout();
pathButtonLayout.marginHeight = 0;
pathButtonLayout.marginWidth = 0;
pathButtonComp.setLayout(pathButtonLayout);
gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING
| GridData.HORIZONTAL_ALIGN_FILL);
pathButtonComp.setLayoutData(gd);
pathButtonComp.setFont(font);
createButton(pathButtonComp, new AddWorkspaceFileAction(
stylesheetViewer));
createButton(pathButtonComp, new AddExternalFileAction(
stylesheetViewer, DIALOG_SETTINGS_PREFIX));
createButton(pathButtonComp, new RemoveAction(stylesheetViewer));
}
public Viewer getStylesheetViewer() {
return stylesheetViewer == null ? null : stylesheetViewer.getViewer();
}
protected Button createArrowButton(Composite pathButtonComp,
AbstractStylesheetAction action, int updown) {
Button b = new Button(pathButtonComp, SWT.ARROW | updown);
GridData gd = new GridData();
b.setLayoutData(gd);
action.setButton(b);
return b;
}
protected Button createButton(Composite pathButtonComp,
AbstractStylesheetAction action) {
Button button = createPushButton(pathButtonComp, action.getText(), null);
action.setButton(button);
return button;
}
public String getName() {
return Messages.TransformsBlock_Name;
}
public void setPipeline(LaunchPipeline pipeline) {
this.pipeline = pipeline;
}
public void initializeFrom(ILaunchConfiguration configuration) {
stylesheetViewer.getViewer().setInput(pipeline);
if (pipeline.getTransformDefs().size() > 0) {
stylesheetViewer.getViewer()
.setSelection(
new StructuredSelection(pipeline.getTransformDefs()
.get(0)));
}
}
public void performApply(ILaunchConfigurationWorkingCopy configuration) {
}
public void setDefaults(ILaunchConfigurationWorkingCopy configuration) {
}
public void entriesChanged(StylesheetViewer viewer) {
setDirty(true);
updateLaunchConfigurationDialog();
}
@Override
protected void setSortColumn(int column) {
switch (column) {
// case 1:
// sortByName();
// break;
// case 2:
// sortByType();
// break;
}
super.setSortColumn(column);
}
@Override
protected Table getTable() {
return stylesheetViewer == null ? null : stylesheetViewer.getViewer()
.getTable();
}
@Override
protected IDialogSettings getDialogSettings() {
return XSLDebugUIPlugin.getDefault().getDialogSettings();
}
@Override
protected String getQualifier() {
return XSLDebugUIConstants.MAIN_TRANSFORMS_BLOCK;
}
@Override
public void dispose() {
if (stylesheetViewer != null)
stylesheetViewer.removeEntriesChangedListener(this);
super.dispose();
}
}