1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
| package sandboxplugin.views;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TableCursor;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.events.ControlListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.ui.IPartListener2;
import org.eclipse.ui.IWorkbenchPartReference;
import org.eclipse.ui.part.ViewPart;
public class TableView extends ViewPart {
public static final String ID = "sandBoxPlugin.view";
private TableViewer viewer;
private Table table;
private TableCursor cursor;
@Override
public void createPartControl(Composite parent) {
this.table = new Table(parent, SWT.NONE);
this.table.setLinesVisible(true);
TableColumn firstColumn = new TableColumn(this.table, SWT.NONE);
firstColumn.setWidth(0);
for (int i = 0; i < 3; i++) {
TableColumn column = new TableColumn(this.table, SWT.NONE);
column.setWidth(50);
column.setAlignment(SWT.CENTER);
}
this.viewer = new TableViewer(this.table);
this.viewer.setContentProvider(new IStructuredContentProvider() {
public Object[] getElements(Object inputElement) {
return (Object[]) inputElement;
}
public void dispose() {
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
});
this.viewer.setLabelProvider(new ITableLabelProvider() {
public Image getColumnImage(Object element, int columnIndex) {
return null;
}
public String getColumnText(Object element, int columnIndex) {
if (columnIndex == 0) {
return null;
}
Object[] data = (Object[]) element;
return data[columnIndex - 1].toString();
}
public void addListener(ILabelProviderListener listener) {
}
public void dispose() {
}
public boolean isLabelProperty(Object element, String property) {
return false;
}
public void removeListener(ILabelProviderListener listener) {
}
});
Object[][] data = new Integer[][] {
{1,2,3},
{4,5,6},
{7,8,9}
};
this.viewer.setInput(data);
cursor = new TableCursor(this.table, SWT.NONE);
getSite().getPage().addPartListener(new IPartListener2() {
public void partVisible(IWorkbenchPartReference partRef) {
}
public void partOpened(IWorkbenchPartReference partRef) {
}
public void partInputChanged(IWorkbenchPartReference partRef) {
}
public void partHidden(IWorkbenchPartReference partRef) {
}
public void partDeactivated(IWorkbenchPartReference partRef) {
cursor.setSelection(0, 0);
cursor.setVisible(false);
}
public void partClosed(IWorkbenchPartReference partRef) {
}
public void partBroughtToTop(IWorkbenchPartReference partRef) {
}
public void partActivated(IWorkbenchPartReference partRef) {
cursor.setVisible(true);
}
});
// listener to adjust table width
table.addControlListener(new ControlListener() {
public void controlResized(ControlEvent e) {
Table table = viewer.getTable();
TableColumn column;
int width = (int) (1.0 * table.getBounds().width
/ (table.getColumnCount() - 1));
int fillingWidth = (int) (1.0 * table.getBounds().width
% (table.getColumnCount() - 1));
for (int i = 1; i < table.getColumnCount(); i++) { // 1st column centering hack
column = table.getColumn(i);
if (i == table.getColumnCount() - 1) {
// fillingWidth for last column
column.setWidth(width + fillingWidth);
} else {
column.setWidth(width);
}
}
// manually redraw the table to allow to resize the items height
table.redraw();
}
public void controlMoved(ControlEvent e) {
}
});
// listener to adjust table height
this.viewer.getControl().addListener(SWT.MeasureItem, new Listener() {
public void handleEvent(Event event) {
Table table = viewer.getTable();
int height = (int) (1.0 * table.getBounds().height
/ table.getItemCount());
event.height = height;
/*
* for a mysterious reason,
* table height shrinking does *not* work
*/
}
});
}
@Override
public void setFocus() {
}
} |
Partager