|
|
package org.openslx.dozmod.gui.window;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
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.openslx.bwlp.thrift.iface.ImageSummaryRead;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.helper.ImageTableModel;
import org.openslx.dozmod.gui.helper.TableColumnAdjuster;
import org.openslx.dozmod.gui.window.layout.ImageListWindowLayout;
import org.openslx.dozmod.thrift.ImageCache;
public class ImageListWindow extends ImageListWindowLayout {
private final static Logger LOGGER = Logger.getLogger(ImageListWindow.class);
TableRowSorter<ImageTableModel> sorter = new TableRowSorter<ImageTableModel>();
public ImageListWindow() {
super();
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);
imageTable.setRowSorter(sorter);
imageTable.setModel(itm);
// SWING TABLE STUFF
imageTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
int rowIndex = imageTable.getSelectedRow();
if (rowIndex == -1)
return;
ImageTableModel model = (ImageTableModel) imageTable.getModel();
final ImageSummaryRead image = model.get(imageTable.convertRowIndexToModel(rowIndex));
LOGGER.debug(image);
if (image == null)
return;
Gui.asyncExec(new Runnable() {
public void run() {
// updateDetailPane(image);
}
});
}
});
imageTable.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent me) {
if (me.getClickCount() == 2) {
int rowIndex = imageTable.getSelectedRow();
if (rowIndex == -1)
return;
ImageTableModel model = (ImageTableModel) imageTable.getModel();
final ImageSummaryRead image = model.get(imageTable.convertRowIndexToModel(rowIndex));
LOGGER.debug(image);
if (image == null)
return;
// Gui.asyncExec(new Runnable() {
// public void run() {
// ImageDetailsWindow popup =
// MainWindow.showPage(ImageDetailsWindow.class);
// if (popup != null)
// popup.setImage(image.getImageBaseId());
// }
// });
}
}
});
// // filter the objects in the table depending on the search field
// searchTextField.addKeyListener(new KeyAdapter() {
// @Override
// public void keyReleased(KeyEvent ke) {
// final String term = searchTextField.getText();
// SwingUtilities.invokeLater(new Runnable() {
// @Override
// public void run() {
// RowFilter<ImageTableModel, Object> filter = null;
// try {
// filter = RowFilter.regexFilter(".*" + term + ".*");
// } catch (java.util.regex.PatternSyntaxException e) {
// return;
// }
// sorter.setRowFilter(filter);
// }});
// }
// });
//
// newButton.addSelectionListener(new SelectionAdapter() {
// @Override
// public void widgetSelected(SelectionEvent e) {
// ImageWizard wizard = new ImageWizard(false);
// WizardDialog wd = new WizardDialog(getShell(), wizard);
// refreshList(wd.open() == Window.OK);
// }
// });
//
//// editButton.addSelectionListener(new SelectionAdapter() {
//// @Override
//// public void widgetSelected(SelectionEvent e) {
//// ImageWizard wizard = new ImageWizard(true);
//// WizardDialog wd = new WizardDialog(getShell(), wizard);
//// refreshList(wd.open() == Window.OK);
//// }
//// });
//
//
// // return to mainMenu
// backButton.addSelectionListener(new SelectionAdapter() {
// @Override
// public void widgetSelected(SelectionEvent e) {
//// MainWindow.showPage(MainMenuWindow.class);
// refreshList(true);
// }
// });
}
private void refreshList(final boolean forceRefresh) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
ImageTableModel itm = (ImageTableModel) imageTable.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(imageTable);
tca.adjustColumns();
}
});
}
@Override
public boolean requestHide() {
return true;
}
@Override
public void requestShow() {
refreshList(false);
}
// private void deleteCallback(ImageSummaryRead image, Throwable t) {
// if (t == null) {
// Gui.showMessageBox("Deleted image with UUID '" + image + "'.",
// MessageType.INFO,
// LOGGER, t);
// } else {
// Gui.showMessageBox("Failed to delete image!", MessageType.ERROR, LOGGER,
// t);
// }
// }
//
// private 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);
// }
// }
}
|