diff options
author | Jonathan Bauer | 2015-07-21 12:22:55 +0200 |
---|---|---|
committer | Jonathan Bauer | 2015-07-21 12:22:55 +0200 |
commit | d5be2796ec1514d36ce834f20e3fc8c20872beef (patch) | |
tree | a8a86652673d94dbf255ec5dd0432c7ac7be74b0 | |
parent | [client] fix OS combo box not scaling in width (diff) | |
download | tutor-module-d5be2796ec1514d36ce834f20e3fc8c20872beef.tar.gz tutor-module-d5be2796ec1514d36ce834f20e3fc8c20872beef.tar.xz tutor-module-d5be2796ec1514d36ce834f20e3fc8c20872beef.zip |
[client] checkbox in tablecolumns [WIP] far from ready
4 files changed, 188 insertions, 98 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/TableHelper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/TableHelper.java index 933831af..e37e6319 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/TableHelper.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/TableHelper.java @@ -1,28 +1,38 @@ package org.openslx.dozmod.gui.helper; +import java.util.HashMap; + import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; +import org.eclipse.jface.viewers.ViewerCell; +import org.eclipse.jface.window.Window; +import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.TableEditor; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.TableItem; import org.openslx.bwlp.thrift.iface.ImageSummaryRead; import org.openslx.bwlp.thrift.iface.LectureSummary; import org.openslx.bwlp.thrift.iface.OperatingSystem; import org.openslx.bwlp.thrift.iface.UserInfo; +import org.openslx.dozmod.gui.wizard.ImageWizard; import org.openslx.dozmod.thrift.MetaDataCache; import org.openslx.dozmod.thrift.UserCache; import org.openslx.dozmod.util.FormatHelper; public final class TableHelper { - private TableHelper() { - } /** - * Create the columns for the table in the lecture main window. - * Comparator has to be set beforehand. - * @param table the tableViewer + * Create the columns for the table in the lecture main window. Comparator + * has to be set beforehand. + * + * @param table + * the tableViewer */ public static void createLectureTableColumns(TableViewer table) { createSortedColumn(table, "Name", 150, 0, new ColumnLabelProvider() { @@ -33,26 +43,29 @@ public final class TableHelper { } }); - createSortedColumn(table, "Verantwortlicher", 130, 1, new ColumnLabelProvider() { - @Override - public String getText(Object element) { - LectureSummary lecture = (LectureSummary) element; - String ownerId = lecture.getOwnerId(); - UserInfo user = UserCache.find(ownerId); - if (user == null){ - return "Unknown"; - }else { - return user.getLastName() + ", " + user.getFirstName(); - } - } - }); + createSortedColumn(table, "Verantwortlicher", 130, 1, + new ColumnLabelProvider() { + @Override + public String getText(Object element) { + LectureSummary lecture = (LectureSummary) element; + String ownerId = lecture.getOwnerId(); + UserInfo user = UserCache.find(ownerId); + if (user == null) { + return "Unknown"; + } else { + return user.getLastName() + ", " + + user.getFirstName(); + } + } + }); } /** - * Create the columns for the table in the image main window. - * Comparator has to be set beforehand. + * Create the columns for the table in the image main window. Comparator has + * to be set beforehand. * - * @param table the tableViewer + * @param table + * the tableViewer */ public static void createImageTableColumns(TableViewer table) { createSortedColumn(table, "Name", 150, 0, new ColumnLabelProvider() { @@ -77,28 +90,31 @@ public final class TableHelper { } }); - createSortedColumn(table, "Verantwortlicher", 130, 2, new ColumnLabelProvider() { - @Override - public String getText(Object element) { - ImageSummaryRead image = (ImageSummaryRead) element; - String ownerId = image.getOwnerId(); - UserInfo user = UserCache.find(ownerId); - if (user == null){ - return "Unknown"; - }else { - return user.getLastName() + ", " + user.getFirstName(); - } - } - }); + createSortedColumn(table, "Verantwortlicher", 130, 2, + new ColumnLabelProvider() { + @Override + public String getText(Object element) { + ImageSummaryRead image = (ImageSummaryRead) element; + String ownerId = image.getOwnerId(); + UserInfo user = UserCache.find(ownerId); + if (user == null) { + return "Unknown"; + } else { + return user.getLastName() + ", " + + user.getFirstName(); + } + } + }); - createSortedColumn(table, "Letztes Update", 110, 3, new ColumnLabelProvider() { - @Override - public String getText(Object element) { - ImageSummaryRead image = (ImageSummaryRead) element; + createSortedColumn(table, "Letztes Update", 110, 3, + new ColumnLabelProvider() { + @Override + public String getText(Object element) { + ImageSummaryRead image = (ImageSummaryRead) element; - return FormatHelper.shortDate(image.getUpdateTime()); - } - }); + return FormatHelper.shortDate(image.getUpdateTime()); + } + }); createSortedColumn(table, "Größe", 80, 4, new ColumnLabelProvider() { @Override @@ -112,50 +128,31 @@ public final class TableHelper { /** * Create the columns for the custom permission wizard page + * * @param permissionTableViewer */ public static void createImagePermissionTableColumns( - TableViewer permissionTableViewer) { - createUnsortedColumn(permissionTableViewer, "User", 150, new ColumnLabelProvider() { - @Override - public String getText(Object element) { - // TODO correct? - UserInfo user = (UserInfo) element; - return user.firstName + " " + user.lastName; - } + final TableViewer permissionTableViewer, final ColumnLabelProvider colprov) { + createUnsortedColumn(permissionTableViewer, "User", 150, + new ColumnLabelProvider() { + @Override + public String getText(Object element) { + UserInfo user = (UserInfo) element; + return FormatHelper.userName(user); + } }); - createUnsortedColumn(permissionTableViewer, "Link", 90, new ColumnLabelProvider() { - @Override - public String getText(Object element) { - // TODO what to show? - return " "; - } - }); + createUnsortedColumn(permissionTableViewer, "Link", 90, + colprov); - createUnsortedColumn(permissionTableViewer, "Download", 90, new ColumnLabelProvider() { - @Override - public String getText(Object element) { - // TODO what to show? - return " "; - } - }); + createUnsortedColumn(permissionTableViewer, "Download", 90, + colprov); - createUnsortedColumn(permissionTableViewer, "Edit", 90, new ColumnLabelProvider() { - @Override - public String getText(Object element) { - // TODO what to show? - return " "; - } - }); + createUnsortedColumn(permissionTableViewer, "Edit", 90, + colprov); - createUnsortedColumn(permissionTableViewer, "Admin", 90, new ColumnLabelProvider() { - @Override - public String getText(Object element) { - // TODO what to show? - return " "; - } - }); + createUnsortedColumn(permissionTableViewer, "Admin", 90, + colprov); }; @@ -164,28 +161,35 @@ public final class TableHelper { * * @param tableViewer * @param colName - * @param width column width - * @param colNumber index of the column - * @param provider the column label provider + * @param width + * column width + * @param colNumber + * index of the column + * @param provider + * the column label provider */ - private static void createSortedColumn(TableViewer tableViewer, String colName, int width, int colNumber, + private static void createSortedColumn(TableViewer tableViewer, + String colName, int width, int colNumber, ColumnLabelProvider provider) { TableViewerColumn col = new TableViewerColumn(tableViewer, SWT.NONE); col.getColumn().setWidth(width); col.getColumn().setText(colName); col.setLabelProvider(provider); // for column sorting - col.getColumn().addSelectionListener(getSelectionAdapter(col, colNumber, tableViewer)); + col.getColumn().addSelectionListener( + getSelectionAdapter(col, colNumber, tableViewer)); } /** * Create a column for the given table viewer without sorting functionality + * * @param tableViewer * @param colName * @param width * @param provider */ - private static void createUnsortedColumn(TableViewer tableViewer, String colName, int width, ColumnLabelProvider provider) { + private static void createUnsortedColumn(TableViewer tableViewer, + String colName, int width, ColumnLabelProvider provider) { TableViewerColumn col = new TableViewerColumn(tableViewer, SWT.NONE); col.getColumn().setWidth(width); col.getColumn().setText(colName); @@ -193,18 +197,21 @@ public final class TableHelper { } // selection listener for column sorting - private static SelectionListener getSelectionAdapter(final TableViewerColumn col, - final int colNumber, final TableViewer table) { - SelectionAdapter selectionAdapter = new SelectionAdapter() { + private static SelectionListener getSelectionAdapter( + final TableViewerColumn col, final int colNumber, + final TableViewer table) { + return new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { int dir = 0; if (table.getComparator() instanceof ImageListComparator) { - ImageListComparator comparator = (ImageListComparator) table.getComparator(); + ImageListComparator comparator = (ImageListComparator) table + .getComparator(); comparator.setColumn(colNumber); dir = comparator.getDirection(); } else if (table.getComparator() instanceof LectureListComparator) { - LectureListComparator comparator = (LectureListComparator) table.getComparator(); + LectureListComparator comparator = (LectureListComparator) table + .getComparator(); comparator.setColumn(colNumber); dir = comparator.getDirection(); } @@ -213,6 +220,38 @@ public final class TableHelper { table.refresh(); } }; - return selectionAdapter; + } + private static final Button createButton(Composite parent, int style) { + Button newButton = new Button(parent, style); + newButton.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + Button o = (Button)e.getSource(); + System.out.println(o.toString()); + } + }); + return newButton; + } + private static final ColumnLabelProvider newCheckboxedColumnLabelProvider() { + return new ColumnLabelProvider() { + private HashMap<Object, Button> buttons = new HashMap<Object, Button>(); + @Override + public void update(ViewerCell cell) { + TableItem item = (TableItem) cell.getItem(); + Button button; + if (buttons.containsKey(cell.getElement())) { + button = buttons.get(cell.getElement()); + } else { + button = createButton((Composite) cell + .getViewerRow().getControl(), SWT.CHECK); + buttons.put(cell.getElement(), button); + } + TableEditor editor = new TableEditor(item.getParent()); + editor.grabHorizontal = true; + editor.grabVertical = true; + editor.setEditor(button, item, cell.getColumnIndex()); + editor.layout(); + } + }; } } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java index d5caa4af..adbe352c 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java @@ -47,8 +47,8 @@ public class ImageWizard extends Wizard { imageUploadPage = new ImageUploadPage(uploadWizardState, editExistingImage); imageMetaDataPage = new ImageMetaDataPage(uploadWizardState); imageCustomPermissionPage = new ImageCustomPermissionPage(); - addPage(imageUploadPage); - addPage(imageMetaDataPage); +// addPage(imageUploadPage); +// addPage(imageMetaDataPage); addPage(imageCustomPermissionPage); } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageCustomPermissionPageLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageCustomPermissionPageLayout.java index e8341a87..eb353b56 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageCustomPermissionPageLayout.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageCustomPermissionPageLayout.java @@ -42,9 +42,7 @@ public class ImageCustomPermissionPageLayout extends WizardPage { // table Table vmTable = new Table(container, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); - GridData tableGridData = new GridData(SWT.FILL, SWT.FILL, true, true); - tableGridData.horizontalSpan = 2; - vmTable.setLayoutData(tableGridData); + vmTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); vmTable.setHeaderVisible(true); vmTable.setLinesVisible(true); diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageCustomPermissionPage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageCustomPermissionPage.java index ee6db9b1..3fe8c97f 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageCustomPermissionPage.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageCustomPermissionPage.java @@ -1,11 +1,21 @@ package org.openslx.dozmod.gui.wizard.page; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import org.apache.log4j.Logger; +import org.eclipse.jface.viewers.ColumnLabelProvider; +import org.eclipse.jface.viewers.ViewerCell; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.TableEditor; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.TableItem; +import org.openslx.bwlp.thrift.iface.ImagePermissions; import org.openslx.bwlp.thrift.iface.UserInfo; import org.openslx.dozmod.gui.helper.TableHelper; import org.openslx.dozmod.gui.wizard.layout.ImageCustomPermissionPageLayout; @@ -20,19 +30,62 @@ public class ImageCustomPermissionPage extends ImageCustomPermissionPageLayout { * wizard page for setting custom permissions */ public ImageCustomPermissionPage() { - super(); + super(); // needed? } + @SuppressWarnings("serial") @Override public void createControl(Composite parent) { super.createControl(parent); - - TableHelper.createImagePermissionTableColumns(permissionTableViewer); + ImagePermissions perms = new ImagePermissions(true, true, false, false); + TableHelper.createImagePermissionTableColumns(permissionTableViewer, + new ColumnLabelProvider() { + private HashMap<Object, Button> buttons = new HashMap<Object, Button>(); + private final Button createButton(Composite parent, int style) { + Button newButton = new Button(parent, style); + newButton.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + Button o = (Button)e.getSource(); + System.out.println(o.toString()); + } + }); + return newButton; + } + @Override + public void update(ViewerCell cell) { + TableItem item = (TableItem) cell.getItem(); + Button button; + if (buttons.containsKey(cell.getElement())) { + button = buttons.get(cell.getElement()); + } else { + button = createButton((Composite) cell + .getViewerRow().getControl(), SWT.CHECK); + buttons.put(cell.getElement(), button); + } + TableEditor editor = new TableEditor(item.getParent()); + editor.grabHorizontal = true; + editor.grabVertical = true; + editor.setEditor(button, item, cell.getColumnIndex()); + editor.layout(); + } + }); List<UserInfo> userList = UserCache.getAll(); - + List<HashMap<String, ImagePermissions>> perms2 = new ArrayList<HashMap<String, ImagePermissions>>(); + for (final UserInfo user : userList) { + perms2.add(new HashMap<String, ImagePermissions>() {{ + put(user.getUserId(), new ImagePermissions(true, true, false, false)); + }}); + } + permissionTableViewer.setInput(userList); permissionTableViewer.refresh(); + + for (TableColumn tc : permissionTableViewer.getTable().getColumns()) { + tc.pack(); + } + addUser.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { |