Skip to content

Commit 226a24b

Browse files
committed
display marker position
1 parent f0558bc commit 226a24b

1 file changed

Lines changed: 27 additions & 1 deletion

File tree

org.eclipse.ui.views.midi/src/org/eclipse/ui/views/midi/MidiPlaybackControl.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,11 @@
55
import javax.sound.midi.Sequencer;
66

77
import org.eclipse.swt.SWT;
8+
import org.eclipse.swt.events.PaintEvent;
9+
import org.eclipse.swt.events.PaintListener;
810
import org.eclipse.swt.events.SelectionAdapter;
911
import org.eclipse.swt.events.SelectionEvent;
12+
import org.eclipse.swt.graphics.GC;
1013
import org.eclipse.swt.graphics.Image;
1114
import org.eclipse.swt.layout.GridData;
1215
import org.eclipse.swt.layout.GridLayout;
@@ -35,10 +38,32 @@ public MidiPlaybackControl(Composite parent, Sequencer sequencer) {
3538

3639
createButtonRow();
3740
createSliderRow();
41+
addPaintListener(new PaintListener() {
42+
43+
@Override
44+
public void paintControl(PaintEvent e) {
45+
drawMarker(e);
46+
}
47+
});
3848

3949
rewind();
4050
}
4151

52+
private void drawMarker(PaintEvent e) {
53+
if (mark > 0) {
54+
//how to obtain the platform specific button width??
55+
//OS.GetSystemMetrics (OS.SM_CXHSCROLL);
56+
int buttonWidth = 17;
57+
int baseX = slider.getLocation().x + buttonWidth - 4;
58+
int baseY = slider.getLocation().y - 5;
59+
int effectiveWidth = slider.getSize().x - 3 * buttonWidth;
60+
baseX += effectiveWidth * ((float) mark) / (slider.getMaximum() - slider.getMinimum());
61+
62+
e.gc.setBackground(e.display.getSystemColor(SWT.COLOR_BLACK));
63+
e.gc.fillPolygon(new int[] { baseX, baseY, baseX + 8, baseY, (baseX + 8 / 2), baseY + 4 });
64+
}
65+
}
66+
4267
private void createButtonRow() {
4368
Composite rowParent = new Composite(this, SWT.NONE);
4469
rowParent.setLayout(new GridLayout(5, false));
@@ -91,9 +116,10 @@ public void widgetSelected(SelectionEvent e) {
91116
@Override
92117
public void widgetSelected(SelectionEvent e) {
93118
mark = getValue();
94-
goToMark.setEnabled(true);
119+
goToMark.setEnabled(mark>0);
95120
goToMark.setToolTipText(MessageFormat.format("Reset to mark ({0})", display(mark)));
96121
focusPlayButton();
122+
redraw();//force marker update
97123
}
98124
});
99125

0 commit comments

Comments
 (0)