M
Marcus W
Ich hab eine etwas umfangreichere Gui Anwendung, die zig unterschiedliche Tabellen beinhaltet.
Da ich nicht gerne code zig fach kopier, würde mich interessieren ob es einen Sinnvollen ansatz (oop) gibt, der mir erlaubt die Tabellen mithilfe einer eigenen klasse zu erzeugen.
Momentan habe ich für jede Tabelle einen Konstrukt in der Art (Siehe Code). Mir gefällt es aber eigentlich überhaupt nicht, ziemlich den selben code, zig mal zu kopieren und zu ändern.
Alternativ könnte ich mir einen initTable() vorstellen, der die LableProvider usw, dynamisch zusammenbaut anhand eines Objects in dem ich die Tabelleneigenschaften speicher, somit wäre das ganze zumindestens nicht jedesmal komplett zu kopieren. Aber so richtig oop ist das ja eher nicht.
Ich hätte gerne etwas wie:
TableViewerLog logs = new TableViewerLogs();
public TableViewerLogs implements TableViewerInterface{
// hier die Eigenschaften meiner Speziellen log Tabelle
}
public interface TableViewerInterface extends TableViewer{
// hier die Allgemeinen Dinge, wie implementierung der Sortierfunktion usw.
}
Geht das irgendwie / bzw geht es besser als mein möglicher Ansatz einen initTable(TableEigenschaften eigenschaften){} mit meinen gewünschten Tabellen Eigenschaften zu füttern udn die Tabelle dan da dynamisch zusammenzubauen!?
Danke
Aktueller Code:
Da ich nicht gerne code zig fach kopier, würde mich interessieren ob es einen Sinnvollen ansatz (oop) gibt, der mir erlaubt die Tabellen mithilfe einer eigenen klasse zu erzeugen.
Momentan habe ich für jede Tabelle einen Konstrukt in der Art (Siehe Code). Mir gefällt es aber eigentlich überhaupt nicht, ziemlich den selben code, zig mal zu kopieren und zu ändern.
Alternativ könnte ich mir einen initTable() vorstellen, der die LableProvider usw, dynamisch zusammenbaut anhand eines Objects in dem ich die Tabelleneigenschaften speicher, somit wäre das ganze zumindestens nicht jedesmal komplett zu kopieren. Aber so richtig oop ist das ja eher nicht.
Ich hätte gerne etwas wie:
TableViewerLog logs = new TableViewerLogs();
public TableViewerLogs implements TableViewerInterface{
// hier die Eigenschaften meiner Speziellen log Tabelle
}
public interface TableViewerInterface extends TableViewer{
// hier die Allgemeinen Dinge, wie implementierung der Sortierfunktion usw.
}
Geht das irgendwie / bzw geht es besser als mein möglicher Ansatz einen initTable(TableEigenschaften eigenschaften){} mit meinen gewünschten Tabellen Eigenschaften zu füttern udn die Tabelle dan da dynamisch zusammenzubauen!?
Danke
Aktueller Code:
Code:
TableViewer tableViewer_1 = new TableViewer(composite_3, SWT.BORDER
| SWT.FULL_SELECTION);
tableViewer_1.getTable().setBounds(10, 10, 445, 262);
initLogTable(tableViewer_1);
private void initLogTable(TableViewer tableViewer) {
Table table = tableViewer.getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);
tableViewer.setContentProvider(ArrayContentProvider.getInstance());
TableViewerColumn viewerNameColumn = new TableViewerColumn(tableViewer,
SWT.NONE);
viewerNameColumn.getColumn().setText("Datum");
viewerNameColumn.getColumn().setWidth(120);
viewerNameColumn.setLabelProvider(new CellLabelProvider() {
@Override
public void update(ViewerCell cell) {
DateFormat formatter = new SimpleDateFormat(
"dd.MM.yy - hh:mm:ss");
cell.setText(formatter.format(((Log) cell.getElement())
.getDate()));
}
});
TableViewerColumn viewerNameColumn2 = new TableViewerColumn(
tableViewer, SWT.NONE);
viewerNameColumn2.getColumn().setText("User");
viewerNameColumn2.getColumn().setWidth(65);
viewerNameColumn2.setLabelProvider(new CellLabelProvider() {
@Override
public void update(ViewerCell cell) {
cell.setText(((Log) cell.getElement()).getUser());
}
});
TableViewerColumn viewerNameColumn3 = new TableViewerColumn(
tableViewer, SWT.NONE);
viewerNameColumn3.getColumn().setText("Action");
viewerNameColumn3.getColumn().setWidth(230);
viewerNameColumn3.setLabelProvider(new CellLabelProvider() {
@Override
public void update(ViewerCell cell) {
cell.setText(((Log) cell.getElement()).getAction());
}
});
ArrayList<Log> logs = new ArrayList<Log>();
logs.add(new Log("Test Aktion 1", "Marcus"));
logs.add(new Log("Test Aktion 2", "Marcus"));
logs.add(new Log("Test Aktion 3", "Marcus"));
logs.add(new Log("Test Aktion 4", "Marcus"));
logs.add(new Log("Test Aktion 5", "Marcus"));
logs.add(new Log("Test Aktion 1", "Daniel"));
logs.add(new Log("Test Aktion 2", "Daniel"));
logs.add(new Log("Test Aktion 3", "Daniel"));
logs.add(new Log("Test Aktion 4", "Daniel"));
tableViewer.setInput(logs);
}