/*************************************************************************************
* Copyright (c) 2008-2012 Red Hat, 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:
* JBoss by Red Hat - Initial implementation.
************************************************************************************/
package org.jboss.tools.arquillian.ui.internal.wizards;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IMember;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaConventions;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.dom.AbstractTypeDeclaration;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jdt.core.dom.IMethodBinding;
import org.eclipse.jdt.core.dom.ITypeBinding;
import org.eclipse.jdt.core.dom.NodeFinder;
import org.eclipse.jdt.internal.corext.dom.ASTNodes;
import org.eclipse.jdt.internal.corext.refactoring.util.RefactoringASTParser;
import org.eclipse.jdt.internal.junit.util.LayoutUtil;
import org.eclipse.jdt.internal.ui.javaeditor.ASTProvider;
import org.eclipse.jdt.ui.JavaElementLabels;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.ColumnViewerEditor;
import org.eclipse.jface.viewers.ColumnViewerEditorActivationEvent;
import org.eclipse.jface.viewers.ColumnViewerEditorActivationStrategy;
import org.eclipse.jface.viewers.FocusCellOwnerDrawHighlighter;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.jface.viewers.TableViewerEditor;
import org.eclipse.jface.viewers.TableViewerFocusCellManager;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.jface.window.Window;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.Text;
import org.jboss.tools.arquillian.ui.ArquillianUIActivator;
import org.jboss.tools.arquillian.ui.internal.dialogs.ArquillianResourcesSelectionDialog;
import org.jboss.tools.arquillian.ui.internal.dialogs.ArquillianTypesSelectionDialog;
/**
*
* @author snjeza
*
*/
public class NewArquillianJUnitTestCaseDeploymentPage extends WizardPage {
private static final int WEB_INF_RESOURCE_COLUMN_WIDTH = 120;
private static final int HEIGHT_HINT = 150;
public static final String ORG_JBOSS_TOOLS_ARQUILLIAN_UI_DEPLOYMENT_PAGE = "org.jboss.tools.arquillian.ui.deploymentPage";
public static String[] archiveTypes = { "jar", "war", "ear" };
private Text methodNameText;
private Combo archiveTypeCombo;
private Button beansXmlButton;
private Text archiveNameText;
private IJavaElement javaElement;
private TableViewer typesViewer;
private TableViewer resourcesViewer;
private Text deploymentNameText;
private Text deploymentOrderText;
private Image checkboxOn;
private Image checkboxOff;
private TableViewerColumn webinfColumn;
private List<IType> types;
private List<ProjectResource> resources;
private Combo insertionPointCombo;
private IJavaElement[] elements;
private List<IJavaElement> insertPositions;
private IType type;
private ITypeBinding typeBinding;
private CompilationUnit compilationUnit;
public NewArquillianJUnitTestCaseDeploymentPage() {
this(null);
}
public NewArquillianJUnitTestCaseDeploymentPage(IJavaElement javaElement) {
super(ORG_JBOSS_TOOLS_ARQUILLIAN_UI_DEPLOYMENT_PAGE); //$NON-NLS-1$
setTitle("Create Arquillian Deployment Method");
setDescription("Create Arquillian Deployment Method");
this.javaElement = javaElement;
types = new ArrayList<IType>();
resources = new ArrayList<ProjectResource>();
}
@Override
public void createControl(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout(2,false));
GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
composite.setLayoutData(gd);
Dialog.applyDialogFont(composite);
setControl(composite);
// method name
Label methodNameLabel = new Label(composite, SWT.NONE);
methodNameLabel.setText("Method name:");
methodNameText = new Text(composite, SWT.BORDER);
methodNameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// deployment name
Label deploymentNameLabel = new Label(composite, SWT.NONE);
deploymentNameLabel.setText("Deployment name:");
deploymentNameText = new Text(composite, SWT.BORDER);
deploymentNameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// deployment order
Label deploymentOrderLabel = new Label(composite, SWT.NONE);
deploymentOrderLabel.setText("Deployment order:");
deploymentOrderText = new Text(composite, SWT.BORDER);
deploymentOrderText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
deploymentOrderText.addListener(SWT.Verify, new Listener() {
public void handleEvent(Event e) {
String string = e.text;
char[] chars = new char[string.length()];
string.getChars(0, chars.length, chars, 0);
for (int i = 0; i < chars.length; i++) {
if (!('0' <= chars[i] && chars[i] <= '9')) {
Display.getCurrent().beep();
e.doit = false;
return;
}
}
}
});
// archive type
Label archiveTypeLabel = new Label(composite, SWT.NONE);
archiveTypeLabel.setText("Archive type:");
archiveTypeCombo = new Combo(composite, SWT.READ_ONLY);
archiveTypeCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
archiveTypeCombo.setItems(archiveTypes);
//archive name
Label archiveNameLabel = new Label(composite, SWT.NONE);
archiveNameLabel.setText("Archive name:");
archiveNameText = new Text(composite, SWT.BORDER);
archiveNameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// beans.xml
beansXmlButton = new Button(composite, SWT.CHECK);
gd = new GridData();
gd.horizontalSpan = 2;
beansXmlButton.setText("Add an empty beans.xml file");
// FIXME
methodNameText.setText("createDeployment");
archiveTypeCombo.select(0);
archiveNameText.setText("test");
beansXmlButton.setSelection(true);
methodNameText.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
String text = methodNameText.getText();
setErrorMessage(null);
if (text.isEmpty()) {
setErrorMessage("The deployment method name is required.");
return;
}
IJavaElement context = null;
if (javaElement != null) {
context = javaElement;
}
IJavaProject javaProject = getJavaProject();
if (javaProject != null) {
context = javaProject;
}
if (context != null) {
IStatus status = validateMethodName(text, context);
if (!status.isOK()) {
setErrorMessage(status.getMessage());
}
}
}
});
archiveTypeCombo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
refreshResourceViewer();
}
});
createTypesControls(composite);
createResourcesControls(composite);
if (javaElement instanceof ICompilationUnit && getType((ICompilationUnit)javaElement) != null) {
// archive type
Label insertionPointLabel = new Label(composite, SWT.NONE);
insertionPointLabel.setText("Insertion point:");
insertionPointCombo = new Combo(composite, SWT.READ_ONLY);
insertionPointCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
type = getType((ICompilationUnit) javaElement);
try {
elements = type.getChildren();
} catch (JavaModelException e1) {
elements = new IJavaElement[0];
}
List<String> items = new ArrayList<String>();
items.add("First member");
items.add("Last member");
insertPositions= new ArrayList<IJavaElement>();
insertPositions.add(elements.length > 0 ? elements[0]: null); // first
insertPositions.add(null); // last
for (int i = 0; i < elements.length; i++) {
IJavaElement curr = elements[i];
String methodLabel= JavaElementLabels.getElementLabel(curr, JavaElementLabels.M_PARAMETER_TYPES);
items.add("After '" + methodLabel + "'");
try {
insertPositions.add(findSibling(curr, elements));
} catch (JavaModelException e1) {
ArquillianUIActivator.log(e1);
insertPositions.add(null);
}
}
insertPositions.add(null);
insertionPointCombo.setItems(items.toArray(new String[0]));
insertionPointCombo.select(0);
if (javaElement != null) {
String text = methodNameText.getText();
IJavaProject javaProject = getJavaProject();
IJavaElement context = null;
if (javaProject != null) {
context = javaProject;
}
IStatus status = validateMethodName(text, context);
if (!status.isOK()) {
setErrorMessage(status.getMessage());
}
}
}
}
public IJavaElement getElementPosition() {
return insertPositions.get(insertionPointCombo.getSelectionIndex());
}
private IJavaElement findSibling(IJavaElement curr, IJavaElement[] elements) throws JavaModelException {
IJavaElement res= null;
int methodStart= ((IMember) curr).getSourceRange().getOffset();
for (int i= elements.length-1; i >= 0; i--) {
IMember member= (IMember) elements[i];
if (methodStart >= member.getSourceRange().getOffset()) {
return res;
}
res= member;
}
return null;
}
private IType getType(ICompilationUnit icu) {
IType[] types = null;
try {
types = icu.getTypes();
} catch (JavaModelException e) {
ArquillianUIActivator.log(e);
}
if (types != null && types.length > 0) {
return types[0];
}
return null;
}
private void createResourcesControls(Composite composite) {
Group group = new Group(composite, SWT.NONE);
group.setLayout(new GridLayout(2, false));
group.setFont(composite.getFont());
group.setText("Resources");
GridData gd = new GridData(GridData.FILL_BOTH);
gd.horizontalSpan = 2;
gd.heightHint = HEIGHT_HINT;
group.setLayoutData(gd);
//resourcesViewer = CheckboxTableViewer.newCheckList(group, SWT.CHECK | SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
resourcesViewer = new TableViewer(group, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.FULL_SELECTION);
Table table = resourcesViewer.getTable();
gd = new GridData(SWT.FILL, SWT.FILL, true, true);
table.setLayoutData(gd);
table.setHeaderVisible(true);
table.setLinesVisible(true);
String[] columnHeaders = new String[] { "Path", "WEB-INF resource?"};
int[] columnWidths = new int[] {250, WEB_INF_RESOURCE_COLUMN_WIDTH};
TableViewerColumn pathColumn = new TableViewerColumn(resourcesViewer, SWT.NONE);
pathColumn.setLabelProvider(new ResourceLabelProvider(0));
pathColumn.getColumn().setText(columnHeaders[0]);
pathColumn.getColumn().setResizable(false);
pathColumn.getColumn().setMoveable(false);
pathColumn.getColumn().setWidth(columnWidths[0]);
//pathColumn.setEditingSupport(new ResourceEditingSupport(resourcesViewer, 0));
webinfColumn = new TableViewerColumn(resourcesViewer, SWT.NONE);
webinfColumn.setLabelProvider(new ResourceLabelProvider(1));
webinfColumn.getColumn().setText(columnHeaders[1]);
webinfColumn.getColumn().setResizable(false);
webinfColumn.getColumn().setMoveable(false);
if (ArquillianUIActivator.WAR.equals(archiveTypeCombo.getText())) {
webinfColumn.getColumn().setWidth(WEB_INF_RESOURCE_COLUMN_WIDTH);
} else {
webinfColumn.getColumn().setWidth(0);
}
webinfColumn.setEditingSupport(new ResourceEditingSupport(resourcesViewer, 1));
configureViewer(resourcesViewer);
resourcesViewer.setContentProvider(new ResourceContentProvider());
createButtons(group, resourcesViewer, resources);
}
private void configureViewer(final TableViewer viewer) {
TableViewerFocusCellManager focusCellManager = new TableViewerFocusCellManager(viewer, new FocusCellOwnerDrawHighlighter(viewer));
ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(viewer) {
protected boolean isEditorActivationEvent(
ColumnViewerEditorActivationEvent event) {
ViewerCell cell = viewer.getColumnViewerEditor().getFocusCell();
if (cell != null && cell.getColumnIndex() == 1) {
return super.isEditorActivationEvent(event);
}
return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
|| event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION
|| (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED && event.keyCode == SWT.CR)
|| event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
}
};
TableViewerEditor.create(viewer, focusCellManager, actSupport, ColumnViewerEditor.TABBING_HORIZONTAL
| ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
| ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);
}
private void createTypesControls(Composite composite) {
Group group = new Group(composite, SWT.NONE);
group.setLayout(new GridLayout(2, false));
group.setFont(composite.getFont());
group.setText("Classes");
GridData gd = new GridData(GridData.FILL_BOTH);
gd.horizontalSpan = 2;
gd.heightHint = HEIGHT_HINT;
group.setLayoutData(gd);
//typesViewer = CheckboxTableViewer.newCheckList(group, SWT.CHECK | SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
typesViewer = new TableViewer(group, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.FULL_SELECTION);
gd= new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL);
typesViewer.getTable().setLayoutData(gd);
typesViewer.setLabelProvider(new TypeLabelProvider());
typesViewer.setContentProvider(new TypeContentProvider());
createButtons(group, typesViewer, types);
}
private void createButtons(Group group, final TableViewer viewer, final List<?> elements) {
GridData gd;
Composite buttonContainer= new Composite(group, SWT.NONE);
gd= new GridData(GridData.FILL_VERTICAL);
buttonContainer.setLayoutData(gd);
GridLayout buttonLayout= new GridLayout();
buttonLayout.marginWidth= 0;
buttonLayout.marginHeight= 0;
buttonContainer.setLayout(buttonLayout);
Button addButton = new Button(buttonContainer, SWT.PUSH);
addButton.setText("Add...");
gd= new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING);
addButton.setLayoutData(gd);
LayoutUtil.setButtonDimensionHint(addButton);
final Button removeButton = new Button(buttonContainer, SWT.PUSH);
removeButton.setText("Remove");
gd= new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING);
removeButton.setLayoutData(gd);
LayoutUtil.setButtonDimensionHint(removeButton);
final Button removeAllButton = new Button(buttonContainer, SWT.PUSH);
removeAllButton.setText("Remove All");
gd= new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING);
removeAllButton.setLayoutData(gd);
removeAllButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
elements.clear();
if (viewer == typesViewer) {
viewer.setInput(elements.toArray(new IType[0]));
}
if (viewer == resourcesViewer) {
viewer.setInput(elements.toArray(new ProjectResource[0]));
}
viewer.refresh();
updateButtons(viewer, elements, removeButton, removeAllButton);
}
});
LayoutUtil.setButtonDimensionHint(removeAllButton);
viewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
updateButtons(viewer, elements, removeButton, removeAllButton);
}
});
updateButtons(viewer, elements, removeButton, removeAllButton);
removeButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
ISelection selection = viewer.getSelection();
if (selection instanceof IStructuredSelection) {
IStructuredSelection sel = (IStructuredSelection) selection;
Object[] selectedElements = sel.toArray();
for (Object element:selectedElements) {
elements.remove(element);
}
}
if (viewer == typesViewer) {
viewer.setInput(elements.toArray(new IType[0]));
}
if (viewer == resourcesViewer) {
viewer.setInput(elements.toArray(new ProjectResource[0]));
}
viewer.refresh();
updateButtons(viewer, elements, removeButton, removeAllButton);
}
});
addButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if (viewer == typesViewer) {
ArquillianTypesSelectionDialog dialog = new ArquillianTypesSelectionDialog(getShell(), getJavaProject(), types);
dialog.create();
if (dialog.open() == Window.OK) {
Object[] results = dialog.getResult();
if (results != null) {
for (Object result:results) {
if (result instanceof IType) {
types.add((IType) result);
}
}
}
viewer.setInput(types.toArray(new IType[0]));
viewer.refresh();
updateButtons(viewer, elements, removeButton, removeAllButton);
}
}
if (viewer == resourcesViewer) {
List<IPath> res = new ArrayList<IPath>();
for (ProjectResource resource:resources) {
res.add(resource.getPath());
}
ArquillianResourcesSelectionDialog dialog = new ArquillianResourcesSelectionDialog(getShell(), getJavaProject(), res);
dialog.create();
if (dialog.open() == Window.OK) {
Object[] results = dialog.getResult();
if (results != null) {
for (Object result:results) {
if (result instanceof IPath) {
resources.add(new ProjectResource((IPath) result, false));
}
}
}
viewer.setInput(resources.toArray(new ProjectResource[0]));
viewer.refresh();
updateButtons(viewer, elements, removeButton, removeAllButton);
}
}
}
});
}
protected void updateButtons(TableViewer viewer, List<?> elements, Button removeButton, Button removeAllButton) {
removeAllButton.setEnabled(elements.size() > 0);
removeButton.setEnabled(!viewer.getSelection().isEmpty());
}
protected IJavaProject getJavaProject() {
if (javaElement != null) {
return javaElement.getJavaProject();
}
IWizardPage page = getWizard().getPages()[0];
if (page instanceof NewArquillianJUnitTestCasePageOne) {
NewArquillianJUnitTestCasePageOne pageOne = (NewArquillianJUnitTestCasePageOne) page;
IPackageFragmentRoot root = pageOne.getPackageFragmentRoot();
if (root != null) {
return root.getJavaProject();
}
}
return null;
}
private IStatus validateMethodName(String name, IJavaElement context) {
String[] sourceComplianceLevels= getSourceComplianceLevels(context);
IStatus status = JavaConventions.validateMethodName(name, sourceComplianceLevels[0], sourceComplianceLevels[1]);
if (status.isOK() && javaElement != null) {
try {
getTypeBinding();
if (typeBinding != null) {
IMethodBinding[] declaredMethods = typeBinding.getDeclaredMethods();
for (int i = 0; i < declaredMethods.length; i++) {
if (declaredMethods[i].getName().equals(name) && declaredMethods[i].getParameterTypes().length == 0) {
status = new Status(IStatus.ERROR, ArquillianUIActivator.PLUGIN_ID, "The '" + name + "' method already exists.");
}
}
}
} catch (JavaModelException e) {
ArquillianUIActivator.log(e);
}
}
return status;
}
private ITypeBinding getTypeBinding() throws JavaModelException {
if (typeBinding == null && type != null) {
RefactoringASTParser parser= new RefactoringASTParser(ASTProvider.SHARED_AST_LEVEL);
compilationUnit = parser.parse(type.getCompilationUnit(), true);
final AbstractTypeDeclaration declaration= (AbstractTypeDeclaration) ASTNodes.getParent(NodeFinder.perform(compilationUnit, type.getNameRange()),
AbstractTypeDeclaration.class);
if (declaration != null) {
typeBinding= declaration.resolveBinding();
}
}
return typeBinding;
}
private static String[] getSourceComplianceLevels(IJavaElement context) {
if (context != null) {
IJavaProject javaProject= context.getJavaProject();
if (javaProject != null) {
return new String[] {
javaProject.getOption(JavaCore.COMPILER_SOURCE, true),
javaProject.getOption(JavaCore.COMPILER_COMPLIANCE, true)
};
}
}
return new String[] {
JavaCore.getOption(JavaCore.COMPILER_SOURCE),
JavaCore.getOption(JavaCore.COMPILER_COMPLIANCE)
};
}
@Override
public IWizardPage getPreviousPage() {
IWizard wizard = getWizard();
if (wizard instanceof NewArquillianJUnitTestWizard) {
NewArquillianJUnitTestWizard arquillianWizard = (NewArquillianJUnitTestWizard) wizard;
NewArquillianJUnitTestCasePageOne pageOne = arquillianWizard.getNewArquillianJUnitTestCasePageOne();
if (pageOne.getClassUnderTest() != null) {
return super.getPreviousPage();
} else {
return arquillianWizard.getNewArquillianJUnitTestCasePageOne();
}
}
return super.getPreviousPage();
}
public String getMethodName() {
return methodNameText.getText();
}
public String getDeploymentName() {
return deploymentNameText.getText();
}
public String getDeploymentOrder() {
return deploymentOrderText.getText();
}
public String getArchiveType() {
return archiveTypeCombo.getText();
}
public String getArchiveName() {
return archiveNameText.getText();
}
public boolean addBeansXml() {
return beansXmlButton.getSelection();
}
public IType[] getTypes() {
return types.toArray(new IType[0]);
}
public ProjectResource[] getResources() {
return resources.toArray(new ProjectResource[0]);
}
@Override
public void dispose() {
super.dispose();
if (checkboxOn != null) {
checkboxOn.dispose();
checkboxOn = null;
}
if (checkboxOff != null) {
checkboxOff.dispose();
checkboxOff = null;
}
}
public Image getCheckOnImage() {
if (checkboxOn == null) {
checkboxOn = ArquillianUIActivator.imageDescriptorFromPlugin(ArquillianUIActivator.PLUGIN_ID, "/icons/xpl/complete_tsk.gif").createImage();
}
return checkboxOn;
}
public Image getCheckOffImage() {
if (checkboxOff == null) {
checkboxOff = ArquillianUIActivator.imageDescriptorFromPlugin(ArquillianUIActivator.PLUGIN_ID, "/icons/xpl/incomplete_tsk.gif").createImage();
}
return checkboxOff;
}
private void refreshResourceViewer() {
if (resourcesViewer != null && !resourcesViewer.getControl().isDisposed()) {
if (ArquillianUIActivator.WAR.equals(archiveTypeCombo.getText())) {
webinfColumn.getColumn().setWidth(WEB_INF_RESOURCE_COLUMN_WIDTH);
} else {
webinfColumn.getColumn().setWidth(0);
}
resourcesViewer.refresh(true);
}
}
private class ResourceLabelProvider extends ColumnLabelProvider {
private int columnIndex;
public ResourceLabelProvider(int i) {
this.columnIndex = i;
}
public String getText(Object element) {
if (element instanceof ProjectResource) {
switch (columnIndex) {
case 0:
return ((ProjectResource) element).getPath().toString();
}
}
return null;
}
@Override
public Image getImage(Object element) {
if (element == null || !ArquillianUIActivator.WAR.equals(archiveTypeCombo.getText())) {
return null;
}
ProjectResource resourceDeployment = (ProjectResource) element;
if (columnIndex == 1) {
return resourceDeployment.isDeployAsWebInfResource() ? getCheckOnImage() : getCheckOffImage();
}
return null;
}
}
public IType getType() {
return type;
}
public String getDelimiter() {
if (type != null) {
try {
return type.getPackageFragment().findRecommendedLineSeparator();
} catch (JavaModelException e) {
ArquillianUIActivator.log(e);
}
}
return null;
}
public boolean isAddComments() {
// TODO Auto-generated method stub
return false;
}
public boolean isForce() {
// TODO Auto-generated method stub
return false;
}
}