use of org.eclipse.gemoc.timeline.model.TimelineWindow in project gemoc-studio by eclipse.
the class AbstractTimelineView method createPartControl.
@Override
public void createPartControl(Composite parent) {
final Composite container;
if (hasDetailViewer()) {
final SashForm mainSashForm = new SashForm(parent, SWT.HORIZONTAL);
container = mainSashForm;
detailViewer = createDetailViewer(container);
} else {
container = parent;
}
timelineViewer = new ScrollingGraphicalViewer();
Composite timelineComposite = new Composite(container, SWT.NONE);
timelineComposite.setLayout(new FillLayout(SWT.HORIZONTAL | SWT.VERTICAL));
if (hasDetailViewer()) {
((SashForm) container).setWeights(new int[] { DETAIL_RATIO, TIMELINE_RATIO });
}
GridLayout layout = new GridLayout(1, false);
timelineComposite.setLayout(layout);
timelineViewer.createControl(timelineComposite);
timelineSlider = new Slider(timelineComposite, SWT.HORIZONTAL);
GridData gridData = new GridData();
gridData.horizontalAlignment = SWT.FILL;
timelineSlider.setLayoutData(gridData);
gridData.grabExcessHorizontalSpace = true;
rootEditPart = new ScalableFreeformRootEditPart();
rootEditPart.setViewer(timelineViewer);
timelineViewer.setRootEditPart(rootEditPart);
gridData = new GridData();
gridData.horizontalAlignment = SWT.FILL;
gridData.grabExcessHorizontalSpace = true;
gridData.verticalAlignment = SWT.FILL;
gridData.grabExcessVerticalSpace = true;
timelineViewer.getControl().setLayoutData(gridData);
timelineViewer.setEditPartFactory(getTimelineEditPartFactory());
timelineWindow = new TimelineWindow(provider);
timelineViewer.setContents(timelineWindow);
timelineSlider.setPageIncrement(timelineWindow.getLength());
timelineSlider.setThumb(timelineWindow.getLength());
timelineSlider.setSelection(timelineWindow.getStart());
if (provider != null) {
timelineSlider.setMaximum(timelineWindow.getMaxTimelineIndex() + nbVirtualChoices);
timelineSlider.setVisible(timelineWindow.getLength() < timelineWindow.getMaxTimelineIndex() + nbVirtualChoices);
} else {
timelineSlider.setVisible(false);
}
timelineSlider.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e) {
if (follow) {
toggleFollow();
}
timelineWindow.setStart(timelineSlider.getSelection());
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {
if (follow) {
toggleFollow();
}
timelineWindow.setStart(timelineSlider.getSelection());
}
});
timelineWindowListener = new TimelineWindowListener();
timelineWindow.addTimelineWindowListener(timelineWindowListener);
if (provider != null) {
provider.addTimelineListener(timelineWindowListener);
}
timelineViewer.getControl().setBackground(ColorConstants.listBackground);
if (hasDetailViewer()) {
timelineViewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
final ISelection selection = event.getSelection();
if (selection instanceof IStructuredSelection) {
final Object firstElement = ((IStructuredSelection) selection).getFirstElement();
if (firstElement instanceof PossibleStepEditPart) {
final PossibleStepEditPart possibleStepEditPart = (PossibleStepEditPart) firstElement;
detailViewer.setInput(possibleStepEditPart.getModel().getPossibleStep());
}
}
}
});
}
timelineViewer.getControl().addKeyListener(new TimelineKeyListener());
final TimelineMouseListener listener = new TimelineMouseListener();
timelineViewer.getControl().addMouseListener(listener);
timelineViewer.getControl().addMouseMoveListener(listener);
timelineViewer.getControl().addMouseWheelListener(new TimelineMouseWheelListener());
rootEditPart.getZoomManager().addZoomListener(new ZoomListener() {
@Override
public void zoomChanged(double zoom) {
timelineWindow.setLength(getWindowLength());
}
});
timelineViewer.getControl().addControlListener(new ControlListener() {
@Override
public void controlResized(ControlEvent e) {
timelineWindow.setLength(getWindowLength());
final Canvas canevas = (Canvas) timelineViewer.getControl();
canevas.getHorizontalBar().setVisible(false);
}
@Override
public void controlMoved(ControlEvent e) {
// nothing to do here
}
});
final ICommandService cmdService = (ICommandService) getSite().getService(ICommandService.class);
String commandID = getFollowCommandID();
if (commandID != null) {
final Command followCommand = cmdService.getCommand(commandID);
if (followCommand != null) {
final State state = followCommand.getState(RegistryToggleState.STATE_ID);
follow = state != null && ((Boolean) state.getValue()).booleanValue();
}
}
createMenuManager();
}
use of org.eclipse.gemoc.timeline.model.TimelineWindow in project gemoc-studio by eclipse.
the class TimelineEditPartFactory method createEditPart.
@Override
public EditPart createEditPart(EditPart context, Object model) {
final EditPart res;
if (model instanceof PossibleStep) {
res = new PossibleStepEditPart(withLabel);
} else if (model instanceof Connection) {
res = new ConnectionEditPart();
} else if (model instanceof Choice) {
res = new ChoiceEditPart();
} else if (model instanceof Branch) {
res = new BranchEditPart();
} else if (model instanceof TimelineWindow) {
res = new TimelineWindowEditPart();
} else {
throw new IllegalStateException("don't know what to do with " + model.getClass().getName());
}
res.setModel(model);
return res;
}
Aggregations