package org.herac.tuxguitar.gui.table; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CLabel; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseListener; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; public class TGTableRow { private class MouseListenerCanvas implements MouseListener { public MouseListenerCanvas() { super(); } public void mouseDoubleClick(MouseEvent e) { if (getMouseListenerCanvas() != null) { getMouseListenerCanvas().mouseDoubleClick(e); } } public void mouseDown(MouseEvent e) { if (getMouseListenerCanvas() != null) { getMouseListenerCanvas().mouseDown(e); } } public void mouseUp(MouseEvent e) { if (getMouseListenerCanvas() != null) { getMouseListenerCanvas().mouseUp(e); } } } private class MouseListenerLabel implements MouseListener { public MouseListenerLabel() { super(); } public void mouseDoubleClick(MouseEvent e) { if (getMouseListenerLabel() != null) { getMouseListenerLabel().mouseDoubleClick(e); } } public void mouseDown(MouseEvent e) { if (getMouseListenerLabel() != null) { getMouseListenerLabel().mouseDown(e); } } public void mouseUp(MouseEvent e) { if (getMouseListenerLabel() != null) { getMouseListenerLabel().mouseUp(e); } } } private class PaintListenerCanvas implements PaintListener { public PaintListenerCanvas() { super(); } public void paintControl(PaintEvent e) { if (getPaintListenerCanvas() != null) { getPaintListenerCanvas().paintControl(e); } } } private CLabel instrument; private MouseListener mouseListenerCanvas; private MouseListener mouseListenerLabel; private CLabel name; private CLabel number; private Composite painter; private PaintListener paintListenerCanvas; private Composite row; private TGTable table; public TGTableRow(TGTable table) { this.table = table; this.init(); } public void dispose() { this.row.dispose(); } public CLabel getInstrument() { return this.instrument; } public MouseListener getMouseListenerCanvas() { return this.mouseListenerCanvas; } public MouseListener getMouseListenerLabel() { return this.mouseListenerLabel; } public CLabel getName() { return this.name; } public CLabel getNumber() { return this.number; } public Composite getPainter() { return this.painter; } public PaintListener getPaintListenerCanvas() { return this.paintListenerCanvas; } public void init() { MouseListener mouseListenerLabel = new MouseListenerLabel(); MouseListener mouseListenerCanvas = new MouseListenerCanvas(); PaintListener paintListenerCanvas = new PaintListenerCanvas(); this.row = new Composite(this.table.getRowControl(), SWT.NONE); this.row.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false)); this.number = new CLabel(this.row, SWT.LEFT); this.number.addMouseListener(mouseListenerLabel); this.table.addRowItem(this.table.getColumnNumber(), this.number, true); this.name = new CLabel(this.row, SWT.LEFT); this.name.addMouseListener(mouseListenerLabel); this.table.addRowItem(this.table.getColumnName(), this.name, true); this.instrument = new CLabel(this.row, SWT.LEFT); this.instrument.addMouseListener(mouseListenerLabel); this.table.addRowItem(this.table.getColumnInstrument(), this.instrument, true); this.painter = new Composite(this.row, SWT.DOUBLE_BUFFERED); this.painter.addMouseListener(mouseListenerCanvas); this.painter.addPaintListener(paintListenerCanvas); this.table.addRowItem(this.table.getColumnCanvas(), this.painter, false); this.row.pack(); } public void setBackground(Color background) { this.number.setBackground(background); this.name.setBackground(background); this.instrument.setBackground(background); } public void setMouseListenerCanvas(MouseListener mouseListenerCanvas) { this.mouseListenerCanvas = mouseListenerCanvas; } public void setMouseListenerLabel(MouseListener mouseListenerLabel) { this.mouseListenerLabel = mouseListenerLabel; } public void setPaintListenerCanvas(PaintListener paintListenerCanvas) { this.paintListenerCanvas = paintListenerCanvas; } }