Initial version of E4 based SC Viewer application
This commit is contained in:
@ -0,0 +1,108 @@
|
||||
package com.minres.scviewer.e4.application.parts;
|
||||
|
||||
import java.beans.PropertyChangeEvent;
|
||||
import java.beans.PropertyChangeListener;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.eclipse.e4.core.di.annotations.Optional;
|
||||
import org.eclipse.e4.core.services.events.IEventBroker;
|
||||
import org.eclipse.e4.ui.di.Focus;
|
||||
import org.eclipse.e4.ui.di.UIEventTopic;
|
||||
import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
|
||||
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.TreeViewer;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
|
||||
import com.minres.scviewer.database.IWaveformDb;
|
||||
import com.minres.scviewer.e4.application.provider.TxDbContentProvider;
|
||||
import com.minres.scviewer.e4.application.provider.TxDbLabelProvider;
|
||||
|
||||
public class DesignBrowser implements ISelectionChangedListener {
|
||||
|
||||
@Inject IEventBroker eventBroker;
|
||||
|
||||
@Inject ESelectionService selectionService;
|
||||
|
||||
private TreeViewer contentOutlineViewer;
|
||||
|
||||
private PropertyChangeListener l = new PropertyChangeListener() {
|
||||
@Override
|
||||
public void propertyChange(PropertyChangeEvent evt) {
|
||||
if("CHILDS".equals(evt.getPropertyName())){
|
||||
contentOutlineViewer.getTree().getDisplay().asyncExec(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
contentOutlineViewer.refresh();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@PostConstruct
|
||||
public void createComposite(Composite parent) {
|
||||
parent.setLayout(new GridLayout(1, false));
|
||||
contentOutlineViewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
|
||||
contentOutlineViewer.addSelectionChangedListener(this);
|
||||
contentOutlineViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
|
||||
contentOutlineViewer.setContentProvider(new TxDbContentProvider());
|
||||
contentOutlineViewer.setLabelProvider(new TxDbLabelProvider());
|
||||
contentOutlineViewer.setUseHashlookup(true);
|
||||
}
|
||||
|
||||
@Focus
|
||||
public void setFocus() {
|
||||
contentOutlineViewer.getTree().setFocus();
|
||||
setSelection(contentOutlineViewer.getSelection());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void selectionChanged(SelectionChangedEvent event) {
|
||||
setSelection(event.getSelection());
|
||||
}
|
||||
|
||||
protected void setSelection(ISelection iSelection) {
|
||||
IStructuredSelection selection = (IStructuredSelection)iSelection;
|
||||
switch(selection.size()){
|
||||
case 0:
|
||||
eventBroker.post(WaveformViewerPart.ACTIVE_NODE, null);
|
||||
break;
|
||||
case 1:
|
||||
eventBroker.post(WaveformViewerPart.ACTIVE_NODE, selection.getFirstElement());
|
||||
selectionService.setSelection(selection.getFirstElement());
|
||||
break;
|
||||
default:
|
||||
eventBroker.post(WaveformViewerPart.ACTIVE_NODE, selection.getFirstElement());
|
||||
selectionService.setSelection(selection.toList());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Inject @Optional
|
||||
public void getStatusEvent(@UIEventTopic(WaveformViewerPart.ACTIVE_DATABASE) IWaveformDb database) {
|
||||
Object input = contentOutlineViewer.getInput();
|
||||
if(input!=null && input instanceof List<?>)
|
||||
((List<IWaveformDb>)input).get(0).removePropertyChangeListener(l);
|
||||
contentOutlineViewer.setInput(Arrays.asList(new IWaveformDb[]{database}));
|
||||
// Set up the tree viewer
|
||||
database.addPropertyChangeListener(l);
|
||||
}
|
||||
/*
|
||||
* TODO: needs top be implemented
|
||||
@Inject @Optional
|
||||
public void getStatusEvent(@UIEventTopic(WaveformViewerPart.ACTIVE_NODE_PATH) String path) {
|
||||
|
||||
}
|
||||
*/
|
||||
};
|
Reference in New Issue
Block a user