summaryrefslogblamecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java
blob: 0e3aa56c428a6f013e11c2fe0bd0f66669bbbc89 (plain) (tree)
1
2
3
4
5
6

                                      



                                   






                                               
 
                               
                                                      
                                  
                                                     
                                                         
                                                                  
                                            


                                                            

                                                                                     
                                                                                       
 

                                  
 









                                                                                                     
                                 









                                                                                                                      
                                                           


                                                                           

                         
                                                                
                                 


















                                                                                                                              


                         













































                                                                                   
 
         
 
                                                              
                                                           
                                 
                                           
                                                                                              

                                                                           
 

                                                                                           
                                                                                                






                                                                                                             
                                                                                              

                                                    

                         

         
                 
                                      



                            
                                   
                                   

         












































                                                                                   
 
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);
	// }
	// }
}