summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureChangeLinkedImage.java
blob: faa3e306d16a12649ae25caaa8b4997a40c4761c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
package org.openslx.dozmod.gui.window;

import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.SwingUtilities;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import org.apache.log4j.Logger;
import org.openslx.bwlp.thrift.iface.ImageSummaryRead;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.control.table.ImageTable;
import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.gui.helper.UiFeedback;
import org.openslx.dozmod.gui.window.layout.LectureChangeLinkedImageLayout;

/**
 * Window for modifying the custom permissions of an lecture.  
 */
@SuppressWarnings("serial")
public class LectureChangeLinkedImage extends LectureChangeLinkedImageLayout implements UiFeedback {

	private static final Logger LOGGER = Logger.getLogger(LectureChangeLinkedImage.class);

	private boolean okUsed = false;
	private ImageTable imageTable;

	private LectureChangeLinkedImage me;



	/**
	 * Don't use this constructor, use static function open instead.
	 */
	protected LectureChangeLinkedImage(final Window modalParent) {
		super(modalParent);
		me = this;

		/**
		 * 	initialise the ImageListViewer 
		 */
		imageListViewer.refreshList(false, 1);
		imageTable = imageListViewer.getImageTable();

		imageTable.setColumnVisible(ImageTable.COL_LASTCHANGE , false);
		imageTable.setColumnVisible(ImageTable.COL_OS , false);
		imageTable.setColumnVisible(ImageTable.COL_SIZE , false);
		imageTable.setColumnVisible(ImageTable.COL_TEMPLATE , false);

		// finally the table listeners
		imageTable.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {

			}
			@Override
			public void mousePressed(MouseEvent e) {
				processClick(e);
			}
			@Override
			public void mouseReleased(MouseEvent e) {
				processClick(e);
			}
			private void processClick(MouseEvent e) {
				// left double click => open details
				if (SwingUtilities.isLeftMouseButton(e) && e.getClickCount() == 2) {
					if (imageIsValid()) {
						okUsed = true;
						dispose();
					} else
					{
						Gui.showMessageBox(me, "Ausgewähltes Image ist ungültig!", MessageType.ERROR, LOGGER , null);
					}
				}

			}
		});


		imageTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
			@Override
			public void valueChanged(ListSelectionEvent e) {
				btnOk.setEnabled(imageIsValid());
			}
		});

		/**
		 * ActionListeners for the buttons.
		 */
		btnOk.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				okUsed = true;
				dispose();
			}
		});
		btnClose.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				dispose();				
			}
		});
	}

	private boolean imageIsValid(){
		return imageTable.getSelectedItem().isValid;
	}

	/**
	 * Set window visible and return resulting ImageSummaryRead
	 * @return ImageSummaryRead of selected Image
	 */
	private ImageSummaryRead runAndReturn(){
		setVisible(true);
		if (okUsed){
			return imageTable.getSelectedItem();
		} else {
			return null;
		}
	}

	/**
	 * Create new LectureChangeLinkedImage
	 * @param modalParent parent window of the popup window
	 * @return ImageSummaryRead of selected image or null, if abort has been used
	 */
	public static ImageSummaryRead open(Window modalParent) {
		return new LectureChangeLinkedImage(modalParent).runAndReturn();
	}

	@Override
	public boolean wantConfirmQuit() {
		return false;
	}

	@Override
	public void escapePressed() {
		dispose();
	}
}