blob: 4e59a920b3863b2a5f3a83bf54ae896b8194ea62 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012 Mia-Software.
* 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:
* Nicolas Bros (Mia-Software) - Bug 370806 - [table] rewrite the "allowed contents" query selection dialog for v0.2
* Vincent Lorenzo (CEA-LIST) - Bug 372644 - Create Customizable tooltips for the TreeViewer using a CustomizableLabelProvider
*******************************************************************************/
package org.eclipse.emf.facet.efacet.ui.internal.widget;
import java.util.Collection;
import java.util.List;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.emf.ecore.ETypedElement;
import org.eclipse.emf.facet.util.ui.internal.exported.displaysync.AbstractExceptionFreeRunnable;
import org.eclipse.emf.facet.util.ui.internal.exported.displaysync.AbstractVoidExceptionFreeRunnable;
import org.eclipse.emf.facet.util.ui.internal.exported.displaysync.SynchronizedObject;
import org.eclipse.jface.viewers.IOpenListener;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.dialogs.FilteredTree;
public class SynchronizedETypedElementSelectionWidget extends SynchronizedObject<ETypedElementSelectionControlManager> implements
IETypedElementSelectionWidgetInternal {
private final ETypedElementSelectionControlManager control;
protected IETypedElementSelectionWidgetInternal getControl() {
return this.control;
}
public SynchronizedETypedElementSelectionWidget(final ETypedElementSelectionControlManager control) {
super(control, control.getFilteredTree().getDisplay());
this.control = control;
}
public void setAvailableETypedElements(final Collection<? extends ETypedElement> available) {
voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
@Override
public void voidSafeRun() {
getControl().setAvailableETypedElements(available);
}
});
}
public List<ETypedElement> getSelectedETypedElements() {
return safeSyncExec(new AbstractExceptionFreeRunnable<List<ETypedElement>>() {
@Override
public List<ETypedElement> safeRun() {
return getControl().getSelectedETypedElements();
}
});
}
public void setSelectedETypedElements(final Collection<? extends ETypedElement> elementsToSelect) {
voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
@Override
public void voidSafeRun() {
getControl().setSelectedETypedElements(elementsToSelect);
}
});
}
public void addOpenListener(final IOpenListener openListener) {
voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
@Override
public void voidSafeRun() {
getControl().addOpenListener(openListener);
}
});
}
public void addSelectionChangedListener(final ISelectionChangedListener listener) {
voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
@Override
public void voidSafeRun() {
getControl().addSelectionChangedListener(listener);
}
});
}
public IStatus getValidationStatus() {
return safeSyncExec(new AbstractExceptionFreeRunnable<IStatus>() {
@Override
public IStatus safeRun() {
return getControl().getValidationStatus();
}
});
}
public boolean isDisposed() {
return safeSyncExec(new AbstractExceptionFreeRunnable<Boolean>() {
@Override
public Boolean safeRun() {
return Boolean.valueOf(getControl().isDisposed());
}
}).booleanValue();
}
public FilteredTree getFilteredTree() {
// should not be used!
throw new UnsupportedOperationException();
}
public void createContents() {
// //nothing to do
throw new UnsupportedOperationException();
}
public void setSelection(final IStructuredSelection selection) {
voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
@Override
public void voidSafeRun() {
getControl().setSelection(selection);
}
});
}
}