diff options
author | Jonathan Bauer | 2015-07-24 18:32:28 +0200 |
---|---|---|
committer | Jonathan Bauer | 2015-07-24 18:32:28 +0200 |
commit | 4cfde69c476e2a0c13606dcd251dc07a5149b695 (patch) | |
tree | 0b9bcc06b36c9f49fb4935970529ddcb69b8d56a /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java | |
parent | [client] getTable for ImageCustomPermissionPage (soon not needed anymore!!!!!... (diff) | |
download | tutor-module-4cfde69c476e2a0c13606dcd251dc07a5149b695.tar.gz tutor-module-4cfde69c476e2a0c13606dcd251dc07a5149b695.tar.xz tutor-module-4cfde69c476e2a0c13606dcd251dc07a5149b695.zip |
[client] rework tables to jtables for ImageListWindow
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java | 281 |
1 files changed, 142 insertions, 139 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java index 2392409e..bd820ff7 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java @@ -1,13 +1,19 @@ package org.openslx.dozmod.gui.window; -import java.util.List; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.ArrayList; + +import javax.swing.RowFilter; +import javax.swing.RowSorter; +import javax.swing.RowSorter.SortKey; +import javax.swing.SortOrder; +import javax.swing.SwingUtilities; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import javax.swing.table.TableRowSorter; import org.apache.log4j.Logger; -import org.eclipse.jface.viewers.DoubleClickEvent; -import org.eclipse.jface.viewers.IDoubleClickListener; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.window.Window; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.events.KeyAdapter; @@ -21,101 +27,49 @@ import org.openslx.bwlp.thrift.iface.ImageSummaryRead; import org.openslx.bwlp.thrift.iface.UserInfo; import org.openslx.dozmod.gui.Gui; import org.openslx.dozmod.gui.MainWindow; -import org.openslx.dozmod.gui.helper.ImageListComparator; -import org.openslx.dozmod.gui.helper.ImageListFilter; +import org.openslx.dozmod.gui.helper.ImageTableModel; import org.openslx.dozmod.gui.helper.MessageType; -import org.openslx.dozmod.gui.helper.TableHelper; +import org.openslx.dozmod.gui.helper.TableColumnAdjuster; import org.openslx.dozmod.gui.window.layout.ImageListWindowLayout; import org.openslx.dozmod.gui.wizard.ImageWizard; import org.openslx.dozmod.thrift.ImageCache; -import org.openslx.dozmod.thrift.Session; import org.openslx.dozmod.thrift.UserCache; import org.openslx.dozmod.util.FormatHelper; -import org.openslx.thrifthelper.ThriftManager; -import org.openslx.util.QuickTimer; -import org.openslx.util.QuickTimer.Task; public class ImageListWindow extends ImageListWindowLayout { private final static Logger LOGGER = Logger.getLogger(ImageListWindow.class); + TableRowSorter<ImageTableModel> sorter = new TableRowSorter<ImageTableModel>(); public ImageListWindow(final Shell mainShell) { super(mainShell); - - // Comparator for column sorting - ImageListComparator comparator = new ImageListComparator(); - tableViewer.setComparator(comparator); - // creating the columns with sorting functionality through comparator - TableHelper.createImageTableColumns(tableViewer); - + + SwingUtilities.invokeLater(new Runnable() { + public void run() { + ImageTableModel itm = new ImageTableModel(); + sorter.setSortsOnUpdates(true); + sorter.setModel(itm); + ArrayList<SortKey> list = new ArrayList<SortKey>(); + list.add( new RowSorter.SortKey(0, SortOrder.ASCENDING) ); + sorter.setSortKeys(list); + jtable.setRowSorter(sorter); + jtable.setModel(itm); + } + }); // filter the objects in the table depending on the search field searchTextField.addKeyListener(new KeyAdapter() { public void keyReleased(KeyEvent ke) { - filter.setSearchText(searchTextField.getText()); - tableViewer.refresh(); - } - }); - - // apply object filtering - filter = new ImageListFilter(); - tableViewer.addFilter(filter); - - // the listeners to set the detailed info of the selected image - tableViewer.addSelectionChangedListener(new ISelectionChangedListener() { - @Override - public void selectionChanged(SelectionChangedEvent event) { - IStructuredSelection selection = (IStructuredSelection) event.getSelection(); - ImageSummaryRead image = (ImageSummaryRead) selection.getFirstElement(); - if (image == null) - return; - // -- Set details -- - // set the image name - setFieldText(imageSelectedNameLabel, image.getImageName()); - // set the image - setFieldText(idInfo, image.getImageBaseId()); - // set the current version of the image - setFieldText(versionInfo, image.getCurrentVersionId()); - // set the time, the image has last been updated - lastUpdateInfo.setText(FormatHelper.shortDate(image.getUpdateTime())); - // info about the image permissions - ImagePermissions perms = image.getUserPermissions(); - if (perms == null) - perms = image.getDefaultPermissions(); - if (perms != null) - setFieldText(permissionInfo, perms.toString()); - // the owner id of the selected image - UserInfo user = UserCache.find(image.getOwnerId()); - setFieldText(ownerInfo, FormatHelper.userName(user)); - - // set the template info - if (image.isTemplate) { - templateInfo.setText("ja"); - } else { - templateInfo.setText("Nein"); - } - } - - private void setFieldText(Text control, String content) { - if (content == null) { - control.setText("<null>"); - } else { - control.setText(content); - } - } - }); - - // Double click entry -> open details window - tableViewer.addDoubleClickListener(new IDoubleClickListener() { - @Override - public void doubleClick(DoubleClickEvent event) { - IStructuredSelection selection = (IStructuredSelection) event.getSelection(); - ImageSummaryRead image = (ImageSummaryRead) selection.getFirstElement(); - if (image == null) - return; - ImageDetailsWindow popup = MainWindow.openPopup(ImageDetailsWindow.class, true, false); - if (popup != null) - popup.setImage(image.getImageBaseId()); + Gui.asyncExec(new Runnable() { + public void run() { + RowFilter<ImageTableModel, Object> filter = null; + try { + filter = RowFilter.regexFilter(".*" + searchTextField.getText() + ".*"); + } catch (java.util.regex.PatternSyntaxException e) { + return; + } + sorter.setRowFilter(filter); + }}); } }); @@ -137,72 +91,92 @@ public class ImageListWindow extends ImageListWindowLayout { } }); - //deleteImageVersion - deleteButton.addSelectionListener(new SelectionAdapter() { + + // return to mainMenu + backButton.addSelectionListener(new SelectionAdapter() { @Override - public void widgetSelected(final SelectionEvent e) { - IStructuredSelection selection = (IStructuredSelection) tableViewer.getSelection(); - if (selection == null) { - MainWindow.showMessageBox("SELECIT ONULL!", MessageType.ERROR, LOGGER, null); - return; + public void widgetSelected(SelectionEvent e) { +// MainWindow.showPage(MainMenuWindow.class); + refreshList(true); + } + }); + + // SWING TABLE STUFF + jtable.getSelectionModel().addListSelectionListener(new ListSelectionListener() { + + @Override + public void valueChanged(ListSelectionEvent e) { + ImageTableModel model = (ImageTableModel) jtable.getModel(); + int rowIndex = jtable.getSelectedRow(); + ImageSummaryRead image = null; + if (rowIndex != -1) { + image = model.get(jtable.convertRowIndexToModel(jtable.getSelectedRow())); + LOGGER.debug(image.toString()); + } else { + LOGGER.error("No selection!"); } - final ImageSummaryRead image = (ImageSummaryRead) selection.getFirstElement(); - if (image == null) { - MainWindow.showMessageBox("IMAGE ONULL!", MessageType.ERROR, LOGGER, null); + final ImageSummaryRead finalImage = image; + if (image == null) return; - } - LOGGER.debug("Trying to delete: " + image); - - QuickTimer.scheduleOnce(new Task() { - @Override - public void fire() { - Throwable t = null; - try { - ThriftManager.getSatClient().deleteImageVersion(Session.getSatelliteToken(), - image.getCurrentVersionId()); - } catch (Exception e) { - t = e; - } - final Throwable t2 = t; - Gui.display.asyncExec(new Runnable() { - @Override - public void run() { - deleteCallback(image, t2); - } - }); + Gui.asyncExec(new Runnable() { + public void run() { + updateDetailPane(finalImage); } }); } }); - - // return to mainMenu - backButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - MainWindow.showPage(MainMenuWindow.class); - } + jtable.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent me) { + if (me.getClickCount() == 2) { + // your valueChanged overridden method + ImageTableModel model = (ImageTableModel) jtable.getModel(); + int rowIndex = jtable.getSelectedRow(); + ImageSummaryRead image = null; + if (rowIndex != -1) { + image = model.get(jtable.convertRowIndexToModel(rowIndex)); + LOGGER.debug(image.toString()); + } else { + LOGGER.error("No selection!"); + } + final ImageSummaryRead finalImage = image; + if (finalImage == null) + return; + Gui.asyncExec(new Runnable() { + public void run() { + ImageDetailsWindow popup = MainWindow.openPopup(ImageDetailsWindow.class, true, false); + if (popup != null) + popup.setImage(finalImage.getImageBaseId()); + } + }); + } + } }); + } private void refreshList(final boolean forceRefresh) { if (isDisposed()) return; - tableViewer.getTable().setEnabled(false); - QuickTimer.scheduleOnce(new Task() { + SwingUtilities.invokeLater(new Runnable() { @Override - public void fire() { - final List<ImageSummaryRead> imageList = ImageCache.get(forceRefresh); - Gui.asyncExec(new Runnable() { - @Override - public void run() { - if (isDisposed()) - return; - tableViewer.setInput(imageList); - tableViewer.refresh(); - tableViewer.getTable().setEnabled(true); - newButton.setFocus(); - } - }); + public void run() { + ImageTableModel itm = (ImageTableModel) jtable.getModel(); + itm.setItems(ImageCache.get(forceRefresh)); + itm.fireTableDataChanged(); + + if (sorter.getSortKeys().isEmpty()) { + ArrayList<SortKey> list = new ArrayList<SortKey>(); + list.add( new RowSorter.SortKey(0, SortOrder.ASCENDING) ); + sorter.setSortKeys(list); + LOGGER.debug("Sortkeys: " + sorter.getSortKeys().get(0).getColumn()); + } else { + LOGGER.debug("Existing: " + sorter.getSortKeys().get(0).getColumn()); + } + + sorter.sort(); + TableColumnAdjuster tca = new TableColumnAdjuster(jtable); + tca.adjustColumns(); + } }); } @@ -226,8 +200,37 @@ public class ImageListWindow extends ImageListWindowLayout { } } - public ImageSummaryRead getCurrentImageSummaryRead() { - IStructuredSelection selection = (IStructuredSelection) tableViewer.getSelection(); - return (ImageSummaryRead) selection.getFirstElement(); + public void updateDetailPane(ImageSummaryRead image) { + // -- Set details -- + // set the image name + setFieldText(imageSelectedNameLabel, image.getImageName()); + // set the image + setFieldText(idInfo, image.getImageBaseId()); + // set the current version of the image + setFieldText(versionInfo, image.getCurrentVersionId()); + // set the time, the image has last been updated + lastUpdateInfo.setText(FormatHelper.shortDate(image.getUpdateTime())); + // info about the image permissions + ImagePermissions perms = image.getUserPermissions(); + if (perms == null) + perms = image.getDefaultPermissions(); + if (perms != null) + setFieldText(permissionInfo, perms.toString()); + // the owner id of the selected image + UserInfo user = UserCache.find(image.getOwnerId()); + setFieldText(ownerInfo, FormatHelper.userName(user)); + // set the template info + if (image.isTemplate) { + templateInfo.setText("ja"); + } else { + templateInfo.setText("Nein"); + } + } + private void setFieldText(Text control, String content) { + if (content == null) { + control.setText("<null>"); + } else { + control.setText(content); + } } } |