// Path: core/client/src/main/java/de/danner_web/studip_client/view/components/PluginMessageDetailsView.java
// public class PluginMessageDetailsView extends JDialog {
// 
// 	private static final long serialVersionUID = -1438615198174407287L;
// 
// 	// Default size
// 	private static final int HEIGHT = 300;
// 	private static final int WIDTH = 500;
// 
// 	private PluginMessage message;
// 
// 	public PluginMessageDetailsView(final PluginMessage message) {
// 		// Hacks back the "x" button in Gnome3
// 		super(null, "", Dialog.ModalityType.MODELESS);
// 		this.message = message;
// 
// 		// Set Icon
// 		try {
// 			BufferedImage image = ImageIO.read(ResourceLoader.getURL(Template.FAVICON));
// 			this.setIconImage(image);
// 		} catch (IOException e) {
// 			// Nichts tun
// 		}
// 
// 		// Default size and center
// 		setPreferredSize(new Dimension(WIDTH, HEIGHT));
// 		setSize(new Dimension(WIDTH, HEIGHT));
// 		setLocationRelativeTo(null);
// 
// 		// Content
// 		setTitle("Ankündigungsdetails");
// 		add(createHeader(), BorderLayout.NORTH);
// 		add(createBody(), BorderLayout.CENTER);
// 
// 		// AcceptButton
// 		if (message instanceof AcceptPluginMessage) {
// 			ModernButton acceptButton = new ModernButton("Ok");
// 			acceptButton.addMouseListener(new MouseAdapter() {
// 				@Override
// 				public void mouseClicked(MouseEvent e) {
// 					((AcceptPluginMessage) message).getAcceptListener().onClick(message);
// 					close();
// 				}
// 			});
// 			add(acceptButton, BorderLayout.SOUTH);
// 		}
// 
// 		pack();
// 		setVisible(true);
// 	}
// 
// 	/**
// 	 * private method to create the header info as JPanel for the deatil view of
// 	 * a news
// 	 * 
// 	 * @return JPanel with topic, author and time on it
// 	 */
// 	private JPanel createHeader() {
// 		JPanel header = new JPanel() {
// 			private static final long serialVersionUID = -7595565968707652304L;
// 
// 			@Override
// 			public void paint(Graphics g) {
// 				super.paint(g);
// 				g.setColor(Template.COLOR_LIGHTER_GRAY);
// 				g.drawLine(0, getHeight() - 1, getWidth() - 1, getHeight() - 1);
// 			}
// 		};
// 		header.setBackground(Color.WHITE);
// 		header.setLayout(new BorderLayout());
// 		header.setBorder(new EmptyBorder(10, 10, 10, 10));
// 
// 		JPanel left = new JPanel();
// 		left.setBackground(Color.WHITE);
// 		left.add(new JLabel(message.getHeader()));
// 
// 		header.add(left, BorderLayout.LINE_START);
// 
// 		return header;
// 	}
// 
// 	/**
// 	 * private method to create the body info as LightScrollPane for the deatil
// 	 * view of a news
// 	 * 
// 	 * @return LightScrollPane with body rendered html content
// 	 */
// 	private JScrollPane createBody() {
// 		JEditorPane body = new JEditorPane();
// 		body.setContentType("text/html");
// 		body.setPreferredSize(new Dimension(WIDTH, HEIGHT));
// 		body.setMargin(new Insets(15, 15, 15, 15));
// 		body.setText(message.getText());
// 
// 		// enable hyperlinks
// 		body.setEditable(false);
// 		body.setEnabled(true);
// 		body.addHyperlinkListener(new HyperlinkListener() {
// 			@Override
// 			public void hyperlinkUpdate(HyperlinkEvent hle) {
// 				if (HyperlinkEvent.EventType.ACTIVATED.equals(hle.getEventType())) {
// 					Desktop desktop = Desktop.getDesktop();
// 					try {
// 						desktop.browse(hle.getURL().toURI());
// 					} catch (Exception ex) {
// 						ex.printStackTrace();
// 					}
// 				}
// 			}
// 		});
// 		return new ModernScrollPane(body);
// 	}
// 
// 	private void close() {
// 		this.dispose();
// 	}
// }


import java.util.ArrayList;
import java.util.List;
import de.danner_web.studip_client.view.components.PluginMessageDetailsView;
package de.danner_web.studip_client.data;



public abstract class PluginMessage {

	private List<ClickListener> listeners = new ArrayList<ClickListener>();
	
	private ClickListener showDetailView = new ClickListener() {

		@Override
		public void onClick(PluginMessage message) {
			new PluginMessageDetailsView(message);
		}
	};
	
	public PluginMessage(ClickListener listener) {
		if (listener != null) {
			listeners.add(listener);
		}
	}

	public void setShowDetailView(boolean b) {
		if (b) {
			if(!this.listeners.contains(showDetailView)){
				this.listeners.add(showDetailView);
			}
		} else {
// Path: core/client/src/main/java/de/danner_web/studip_client/view/components/PluginMessageDetailsView.java
// public class PluginMessageDetailsView extends JDialog {
// 
// 	private static final long serialVersionUID = -1438615198174407287L;
// 
// 	// Default size
// 	private static final int HEIGHT = 300;
// 	private static final int WIDTH = 500;
// 
// 	private PluginMessage message;
// 
// 	public PluginMessageDetailsView(final PluginMessage message) {
// 		// Hacks back the "x" button in Gnome3
// 		super(null, "", Dialog.ModalityType.MODELESS);
// 		this.message = message;
// 
// 		// Set Icon
// 		try {
// 			BufferedImage image = ImageIO.read(ResourceLoader.getURL(Template.FAVICON));
// 			this.setIconImage(image);
// 		} catch (IOException e) {
// 			// Nichts tun
// 		}
// 
// 		// Default size and center
// 		setPreferredSize(new Dimension(WIDTH, HEIGHT));
// 		setSize(new Dimension(WIDTH, HEIGHT));
// 		setLocationRelativeTo(null);
// 
// 		// Content
// 		setTitle("Ankündigungsdetails");
// 		add(createHeader(), BorderLayout.NORTH);
// 		add(createBody(), BorderLayout.CENTER);
// 
// 		// AcceptButton
// 		if (message instanceof AcceptPluginMessage) {
// 			ModernButton acceptButton = new ModernButton("Ok");
// 			acceptButton.addMouseListener(new MouseAdapter() {
// 				@Override
// 				public void mouseClicked(MouseEvent e) {
// 					((AcceptPluginMessage) message).getAcceptListener().onClick(message);
// 					close();
// 				}
// 			});
// 			add(acceptButton, BorderLayout.SOUTH);
// 		}
// 
// 		pack();
// 		setVisible(true);
// 	}
// 
// 	/**
// 	 * private method to create the header info as JPanel for the deatil view of
// 	 * a news
// 	 * 
// 	 * @return JPanel with topic, author and time on it
// 	 */
// 	private JPanel createHeader() {
// 		JPanel header = new JPanel() {
// 			private static final long serialVersionUID = -7595565968707652304L;
// 
// 			@Override
// 			public void paint(Graphics g) {
// 				super.paint(g);
// 				g.setColor(Template.COLOR_LIGHTER_GRAY);
// 				g.drawLine(0, getHeight() - 1, getWidth() - 1, getHeight() - 1);
// 			}
// 		};
// 		header.setBackground(Color.WHITE);
// 		header.setLayout(new BorderLayout());
// 		header.setBorder(new EmptyBorder(10, 10, 10, 10));
// 
// 		JPanel left = new JPanel();
// 		left.setBackground(Color.WHITE);
// 		left.add(new JLabel(message.getHeader()));
// 
// 		header.add(left, BorderLayout.LINE_START);
// 
// 		return header;
// 	}
// 
// 	/**
// 	 * private method to create the body info as LightScrollPane for the deatil
// 	 * view of a news
// 	 * 
// 	 * @return LightScrollPane with body rendered html content
// 	 */
// 	private JScrollPane createBody() {
// 		JEditorPane body = new JEditorPane();
// 		body.setContentType("text/html");
// 		body.setPreferredSize(new Dimension(WIDTH, HEIGHT));
// 		body.setMargin(new Insets(15, 15, 15, 15));
// 		body.setText(message.getText());
// 
// 		// enable hyperlinks
// 		body.setEditable(false);
// 		body.setEnabled(true);
// 		body.addHyperlinkListener(new HyperlinkListener() {
// 			@Override
// 			public void hyperlinkUpdate(HyperlinkEvent hle) {
// 				if (HyperlinkEvent.EventType.ACTIVATED.equals(hle.getEventType())) {
// 					Desktop desktop = Desktop.getDesktop();
// 					try {
// 						desktop.browse(hle.getURL().toURI());
// 					} catch (Exception ex) {
// 						ex.printStackTrace();
// 					}
// 				}
// 			}
// 		});
// 		return new ModernScrollPane(body);
// 	}
// 
// 	private void close() {
// 		this.dispose();
// 	}
// }


// Path: core/client/src/main/java/de/danner_web/studip_client/data/PluginMessage.java
import java.util.ArrayList;
import java.util.List;
import de.danner_web.studip_client.view.components.PluginMessageDetailsView;

package de.danner_web.studip_client.data;



public abstract class PluginMessage {

	private List<ClickListener> listeners = new ArrayList<ClickListener>();
	
	private ClickListener showDetailView = new ClickListener() {

		@Override
		public void onClick(PluginMessage message) {
			new PluginMessageDetailsView(message);
		}
	};
	
	public PluginMessage(ClickListener listener) {
		if (listener != null) {
			listeners.add(listener);
		}
	}

	public void setShowDetailView(boolean b) {
		if (b) {
			if(!this.listeners.contains(showDetailView)){
				this.listeners.add(showDetailView);
			}
		} else {
			if(this.listeners.contains(showDetailView)){