Philipe you have to set the minsize of the scrolledcomposite to a size that
you want the squeeze to stop.

e.g.

ScrolledComposite.setMinsize(-1, timelineModel.getTracks().size() * 10)

try this:

import java.util.concurrent.TimeUnit;

import org.eclipse.nebula.widgets.timeline.ILane;
import org.eclipse.nebula.widgets.timeline.ITimeline;
import org.eclipse.nebula.widgets.timeline.ITrack;
import org.eclipse.nebula.widgets.timeline.TimelineDataBinding;
import org.eclipse.nebula.widgets.timeline.jface.TimelineViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class TimeLineApp {

private static ITimeline fModel;

public static void main(String[] args) {
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("Nebula Timeline");

shell.setLayout(new GridLayout(1, false));

final ScrolledComposite scrolledComposite = new ScrolledComposite(shell,
SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
scrolledComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,
true, 1, 1));
scrolledComposite.setExpandHorizontal(true);
scrolledComposite.setExpandVertical(true);

final Control control = createControl(scrolledComposite);

scrolledComposite.setContent(control);
final int height = fModel.getTracks().size() * 50;
scrolledComposite.setMinSize(-1, height);

shell.open();

while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}

public static Control createControl(Composite parent) {
final TimelineViewer timelineViewer = new TimelineViewer(parent, SWT.NULL);
fModel = (ITimeline) timelineViewer.getInput();
new TimelineDataBinding(timelineViewer, fModel, 300);

createRandomContent(fModel);

timelineViewer.refresh();

return timelineViewer.getControl();
}

private static void createRandomContent(ITimeline model) {

final ITrack track1 = model.createTrack("Task 1");
final ITrack track2 = model.createTrack("Task 2");
final ITrack track3 = model.createTrack("Task 3");
final ITrack track4 = model.createTrack("Task 4");
final ITrack track5 = model.createTrack("Task 5");
final ITrack track6 = model.createTrack("Task 6");

final ILane taskLane1 = track1.createLane();
final ILane taskLane2 = track2.createLane();
final ILane taskLane3 = track3.createLane();
final ILane taskLane4 = track4.createLane();
final ILane taskLane5 = track5.createLane();
final ILane taskLane6 = track6.createLane();

int compTime = 5;
int period = 5;
int lastPosition = 0;
for (int i = 0; i < 4; i++) {
taskLane1.createEvent("", "task 1", lastPosition, compTime,
TimeUnit.MICROSECONDS);
lastPosition += period + compTime;
}

compTime = 2;
period = 2;
lastPosition = 0;
for (int i = 0; i < 10; i++) {
taskLane2.createEvent("", "task 2", lastPosition, compTime,
TimeUnit.MICROSECONDS);
lastPosition += period + compTime;
}

compTime = 2;
period = 2;
lastPosition = 0;
for (int i = 0; i < 10; i++) {
taskLane3.createEvent("", "task 3", lastPosition, compTime,
TimeUnit.MICROSECONDS);
lastPosition += period + compTime;
}

compTime = 2;
period = 2;
lastPosition = 0;
for (int i = 0; i < 10; i++) {
taskLane4.createEvent("", "task 4", lastPosition, compTime,
TimeUnit.MICROSECONDS);
lastPosition += period + compTime;
}

compTime = 2;
period = 2;
lastPosition = 0;
for (int i = 0; i < 10; i++) {
taskLane5.createEvent("", "task 5", lastPosition, compTime,
TimeUnit.MICROSECONDS);
lastPosition += period + compTime;
}

compTime = 2;
period = 2;
lastPosition = 0;
for (int i = 0; i < 10; i++) {
taskLane6.createEvent("", "task 6", lastPosition, compTime,
TimeUnit.MICROSECONDS);
lastPosition += period + compTime;
}

}

}



On Tue, May 5, 2020 at 8:42 PM Wim Jongman <wim.jong...@remainsoftware.com>
wrote:

> Hey Philip,
>
>
>
> A snippet typically has a “main” method.
>
>
>
> Cheers,
>
>
>
> Wim
>
>
>
> *From:* nebula-dev-boun...@eclipse.org <nebula-dev-boun...@eclipse.org> *On
> Behalf Of *philipcokon...@yahoo.com
> *Sent:* dinsdag 5 mei 2020 17:13
> *To:* Nebula Dev <nebula-dev@eclipse.org>; Laurent Caron <
> laurent.ca...@gmail.com>
> *Subject:* Re: [nebula-dev] Nebula Timeline Widget Behaviour
>
>
>
> Hi Laurent,
>
>
>
> Thank you for the reply. Here is a snippet:
>
>
>
>
>
> public Control createControl(Composite parent) {
>
> TimelineViewer timelineViewer = new TimelineViewer(parent, SWT.NULL);
>
> final ITimeline model = (ITimeline) timelineViewer.getInput();
>
> new TimelineDataBinding(timelineViewer, model, 300);
>
>
>
> createRandomContent(model);
>
>
>
> return timelineViewer.getControl();
>
> }
>
>
>
> private void createRandomContent(ITimeline model) {
>
>
>
> final ITrack track1 = model.createTrack("Task 1");
>
> final ITrack track2 = model.createTrack("Task 2");
>
> // final ITrack track3 = model.createTrack("Task 3");
>
> // final ITrack track4 = model.createTrack("Task 4");
>
> // final ITrack track5 = model.createTrack("Task 5");
>
> // final ITrack track6 = model.createTrack("Task 6");
>
>
>
> final ILane taskLane1 = track1.createLane();
>
> final ILane taskLane2 = track2.createLane();
>
> // final ILane taskLane3 = track3.createLane();
>
> // final ILane taskLane4 = track4.createLane();
>
> // final ILane taskLane5 = track5.createLane();
>
> // final ILane taskLane6 = track6.createLane();
>
>
>
> int compTime = 5;
>
> int period = 5;
>
> int lastPosition = 0;
>
> for (int i = 0; i < 4; i++) {
>
> taskLane1.createEvent("", "task 1", lastPosition, compTime,
> TimeUnit.MICROSECONDS);
>
> lastPosition += period + compTime;
>
> }
>
>
>
> compTime = 2;
>
> period = 2;
>
> lastPosition = 0;
>
> for (int i = 0; i < 10; i++) {
>
> taskLane2.createEvent("", "task 2", lastPosition, compTime,
> TimeUnit.MICROSECONDS);
>
> lastPosition += period + compTime;
>
> }
>
>
>
> // compTime = 2;
>
> // period = 2;
>
> // lastPosition = 0;
>
> // for (int i = 0; i < 10; i++) {
>
> // taskLane3.createEvent("", "task 3", lastPosition, compTime,
> TimeUnit.MICROSECONDS);
>
> // lastPosition += period + compTime;
>
> // }
>
> //
>
> // compTime = 2;
>
> // period = 2;
>
> // lastPosition = 0;
>
> // for (int i = 0; i < 10; i++) {
>
> // taskLane4.createEvent("", "task 4", lastPosition, compTime,
> TimeUnit.MICROSECONDS);
>
> // lastPosition += period + compTime;
>
> // }
>
> //
>
> // compTime = 2;
>
> // period = 2;
>
> // lastPosition = 0;
>
> // for (int i = 0; i < 10; i++) {
>
> // taskLane5.createEvent("", "task 5", lastPosition, compTime,
> TimeUnit.MICROSECONDS);
>
> // lastPosition += period + compTime;
>
> // }
>
> //
>
> // compTime = 2;
>
> // period = 2;
>
> // lastPosition = 0;
>
> // for (int i = 0; i < 10; i++) {
>
> // taskLane6.createEvent("", "task 6", lastPosition, compTime,
> TimeUnit.MICROSECONDS);
>
> // lastPosition += period + compTime;
>
> // }
>
>
>
> }
>
>
>
> I have attached two images to help you visualize what I am saying. The
> Timeline widget's parent is a ScrolledComposite. Using the code as is will
> result in this image:
>
>
>
> [image: Inline image]
>
>
>
> But removing the comments will give this result:
>
>
>
>
>
> [image: Inline image]
>
> What I want is for all the events in the second image to maintain the same
> thickness as in the first image and the to be able to scroll down the
> timeline if necessary to view the whole information.
>
>
>
> Thank you.
>
>
>
> Best regards,
>
>
>
> Philip
>
>
>
> On Tuesday, 5 May 2020, 15:28:31 CEST, Laurent Caron <
> laurent.ca...@gmail.com> wrote:
>
>
>
>
>
> Hi Philip,
>
>
>
> Can you post a little snippet so we can reproduce this behaviour ?
>
>
>
> Thank you,
>
>
>
> Laurent
>
>
>
> Le mar. 5 mai 2020 à 08:40, philipcokon...@yahoo.com <
> philipcokon...@yahoo.com> a écrit :
>
> Hi,
>
>
>
> I am currently using the Nebula Timeline widget in an application that I
> have just started to work on. I am trying to make the widget scroll
> vertically when the height of the widget is too small to hold all the
> tracks and events I want to display. But I noticed that the default
> behaviour is to shrink and expand the heights of the events instead thus
> making them almost invisible or just reducing them to lines.
>
>
>
> Is there a way around this behaviour? How do I make the widget scroll
> vertically and set the height of the events to a constant value?
>
>
>
> Thank you.
>
>
>
>
>
> Best regards,
>
> Philip
>
> _______________________________________________
> nebula-dev mailing list
> nebula-dev@eclipse.org
> To unsubscribe from this list, visit
> https://www.eclipse.org/mailman/listinfo/nebula-dev
>
> _______________________________________________
> nebula-dev mailing list
> nebula-dev@eclipse.org
> To unsubscribe from this list, visit
> https://www.eclipse.org/mailman/listinfo/nebula-dev
>
_______________________________________________
nebula-dev mailing list
nebula-dev@eclipse.org
To unsubscribe from this list, visit 
https://www.eclipse.org/mailman/listinfo/nebula-dev

Reply via email to