diff options
Diffstat (limited to 'dozentenmodul/src/main/java')
4 files changed, 158 insertions, 65 deletions
diff --git a/dozentenmodul/src/main/java/gui/intro/About_GUI.java b/dozentenmodul/src/main/java/gui/intro/About_GUI.java index fb75c66d..095498ed 100644 --- a/dozentenmodul/src/main/java/gui/intro/About_GUI.java +++ b/dozentenmodul/src/main/java/gui/intro/About_GUI.java @@ -17,8 +17,8 @@ import javax.swing.UnsupportedLookAndFeelException; import javax.swing.border.EmptyBorder; import models.Version; - import util.GuiOrganizer; +import util.ResourceLoader; @SuppressWarnings("serial") public class About_GUI extends JFrame { @@ -66,8 +66,7 @@ public class About_GUI extends JFrame { imgLabel.setBounds(30, 18, 294, 80); // Pfadangabe des Logos - ImageIcon icon = new ImageIcon(getClass().getResource( - "/img/Logo_bwLehrpool.png"), "Logo"); + ImageIcon icon = ResourceLoader.getIcon("/img/Logo_bwLehrpool.png", "Logo"); // Skalierung des Logos Image scaled = icon.getImage().getScaledInstance(270, 64, 0); imgLabel.setIcon(new ImageIcon(scaled)); diff --git a/dozentenmodul/src/main/java/gui/intro/Login_GUI.java b/dozentenmodul/src/main/java/gui/intro/Login_GUI.java index 76ece985..e46c4136 100644 --- a/dozentenmodul/src/main/java/gui/intro/Login_GUI.java +++ b/dozentenmodul/src/main/java/gui/intro/Login_GUI.java @@ -35,6 +35,7 @@ import org.openslx.imagemaster.thrift.iface.UserInfo; import thrift.MasterThriftConnection; import thrift.ThriftConnection; import util.GuiOrganizer; +import util.ResourceLoader; import config.Config; @SuppressWarnings("serial") @@ -46,7 +47,7 @@ public class Login_GUI extends JFrame { JLabel lblConnectionInfo = new JLabel(""); boolean isClientReturnedCorrectly = false; JCheckBox chckbxBenutzernameSpeichern; - + /** * Launch the application. */ @@ -63,7 +64,7 @@ public class Login_GUI extends JFrame { "Fehler", JOptionPane.ERROR_MESSAGE); return; } - + // Aufruf und Anzeige des Login Fensters Login_GUI frame = new Login_GUI(); frame.setVisible(true); @@ -104,12 +105,10 @@ public class Login_GUI extends JFrame { // Aktion die beim Schliessen durchgefuehrt werden soll setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - //Größe setzen und mittig ausrichten + // Größe setzen und mittig ausrichten setBounds(0, 0, 603, 400); GuiOrganizer.centerGUI(this); - - - + // Erzeugen eines Panels contentPane = new JPanel(); // Hintergrund Farbe des Panels setzen @@ -125,14 +124,14 @@ public class Login_GUI extends JFrame { imgLabel.setBounds(150, 11, 350, 142); // Pfadangabe des Logos - ImageIcon icon = new ImageIcon(getClass().getResource( - "/img/Logo_bwLehrpool.png"), "Logo"); + ImageIcon icon = ResourceLoader.getIcon("/img/Logo_bwLehrpool.png", + "Logo"); // Skalierung des Logos Image scaled = icon.getImage().getScaledInstance(270, 64, 0); imgLabel.setIcon(new ImageIcon(scaled)); // Hinzufuegen des Logos in das Fenster contentPane.add(imgLabel); - + chckbxBenutzernameSpeichern = new JCheckBox("Benutzername speichern"); chckbxBenutzernameSpeichern.setBounds(292, 222, 237, 23); contentPane.add(chckbxBenutzernameSpeichern); @@ -141,7 +140,7 @@ public class Login_GUI extends JFrame { JLabel LabelUser = new JLabel("bwIDM-Benutzername:"); LabelUser.setBounds(111, 164, 134, 20); contentPane.add(LabelUser); - + // Erzeugen und Hinzufuegen des Passwortfeldes lblpass = new JPasswordField(); lblpass.setToolTipText("Bitte geben Sie Ihr bwIDM-Passwort ein."); @@ -160,8 +159,9 @@ public class Login_GUI extends JFrame { // Lese Information aus der Konfigurationsdatei lblusername.setText(Config.getString("main", "Benutzername", "")); - chckbxBenutzernameSpeichern.setSelected(Config.getBoolean("main", "Benutzername speichern", false)); - + chckbxBenutzernameSpeichern.setSelected(Config.getBoolean("main", + "Benutzername speichern", false)); + lblusername.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { performLogin(); @@ -175,14 +175,14 @@ public class Login_GUI extends JFrame { JLabel LabelPass = new JLabel("bwIDM-Passwort:"); LabelPass.setBounds(111, 195, 134, 20); contentPane.add(LabelPass); - + lblConnectionInfo.setHorizontalAlignment(SwingConstants.LEFT); lblConnectionInfo.setBounds(111, 290, 418, 20); lblConnectionInfo.setEnabled(true); lblConnectionInfo.setText("Info: Bereit für Login"); - + contentPane.add(lblConnectionInfo); - + // Erzeugen, Hinzufuegen und definierung der Aktion des Buttons JButton BtnLogin = new JButton("Login"); BtnLogin.addActionListener(new ActionListener() { @@ -195,12 +195,7 @@ public class Login_GUI extends JFrame { BtnLogin.setBounds(292, 252, 237, 23); contentPane.add(BtnLogin); - - - - - - //GuiOrganizer.centerGUI(this); + // GuiOrganizer.centerGUI(this); }// end LoginGUI() // Versuche den Benutzer einzuloggen @@ -209,76 +204,79 @@ public class Login_GUI extends JFrame { // Connect to Master MasterThriftConnection thrift = new MasterThriftConnection(); Client client = thrift.getMasterThriftConnection(); - + if (client == null) { // Thrift connection to master could not be established setStatus(Color.red, "Fehler: Masterserver nicht erreichbar.", null); return; } - + String passText = new String(lblpass.getPassword()); UserInfo user = null; // Log user in try { - setStatus(Color.black, "Authentifiziere - warte auf Antwort von Server...", null); - + setStatus(Color.black, + "Authentifiziere - warte auf Antwort von Server...", null); + result = client.authenticate(lblusername.getText(), passText); - + // Sanity checks if (result.authToken == null || result.sessionId == null) { setStatus(Color.red, "Antwort des Masterservers korrupt.", null); return; } - - //User-Info + + // User-Info System.out.println("Authentifizierung erfolgreich"); user = client.getUserFromToken(result.authToken); } catch (org.openslx.imagemaster.thrift.iface.AuthenticationException e) { - setStatus(Color.red, "Fehler: Zugangsdaten nicht akzeptiert.", - "Benutzeranmeldung fehlgeschlagen: Bitte Benutzername und Passwort überprüfen.\n" + setStatus( + Color.red, + "Fehler: Zugangsdaten nicht akzeptiert.", + "Benutzeranmeldung fehlgeschlagen: Bitte Benutzername und Passwort überprüfen.\n" + e.message); e.printStackTrace(); return; } catch (TException e) { - setStatus(Color.red, "Kommunikation mit Masterserver fehlgeschlagen.", Arrays.toString(e.getStackTrace())); + setStatus(Color.red, + "Kommunikation mit Masterserver fehlgeschlagen.", + Arrays.toString(e.getStackTrace())); return; } - - //set Information + + // set Information SessionData.session.setAuthToken(result.authToken); SessionData.session.setSessionID(result.sessionId); SessionData.session.setServerAdress(result.serverAddress); - - //Satellite-Connection + + // Satellite-Connection setStatus(Color.black, "Hole Verbindungsdaten von Server...", null); // set connection to bwLehrpoolSuiteServer ThriftConnection bwthrift = new ThriftConnection(); server.Server.Client bwClient = bwthrift.getThriftConnection(); models.Client.clientcon.setClient(bwClient); - - //User-Info - System.out.println("Session-ID: " + result.sessionId - + "\nToken: " + result.authToken); + + // User-Info + System.out.println("Session-ID: " + result.sessionId + "\nToken: " + + result.authToken); setStatus(Color.green, "Daten erhalten.", null); - String hochschule = user.eMail.substring(user.eMail - .indexOf("@") + 1); + String hochschule = user.eMail.substring(user.eMail.indexOf("@") + 1); - person.verantwortlicher.setUsername(lblusername.getText() - .substring(0, lblusername.getText().indexOf("@"))); + person.verantwortlicher.setUsername(lblusername.getText().substring(0, + lblusername.getText().indexOf("@"))); person.verantwortlicher.setName(user.lastName); person.verantwortlicher.setVorname(user.firstName); person.verantwortlicher.setEMail(user.eMail); person.verantwortlicher.setHochschule(hochschule); - - //Spaeter ueber result.getRole zum Beispiel die Rolle holen + // Spaeter ueber result.getRole zum Beispiel die Rolle holen person.verantwortlicher.setRole("Dozent"); - //person.verantwortlicher.setRole("Admin"); - //person.verantwortlicher.setRole("Student"); - //person.verantwortlicher.setRole("GetToTheChopper!"); - + // person.verantwortlicher.setRole("Admin"); + // person.verantwortlicher.setRole("Student"); + // person.verantwortlicher.setRole("GetToTheChopper!"); + if (chckbxBenutzernameSpeichern.isSelected()) { Config.setString("main", "Benutzername", lblusername.getText()); Config.setBoolean("main", "Benutzername speichern", true); @@ -312,25 +310,27 @@ public class Login_GUI extends JFrame { setVisible(false); } } - + }// end performLogin - + /** * Set connection status message, optionally show message box. - * @param color Color to display status message in. - * @param shortMessage The message to display. - * @param longMessage Optional message to show in a message box. null means don't show. + * + * @param color + * Color to display status message in. + * @param shortMessage + * The message to display. + * @param longMessage + * Optional message to show in a message box. null means don't + * show. */ private void setStatus(Color color, String shortMessage, String longMessage) { System.out.println(shortMessage); lblConnectionInfo.setForeground(color); lblConnectionInfo.setText(shortMessage); if (longMessage != null) - JOptionPane.showMessageDialog( - null, - longMessage, - "Anmeldung fehlgeschlagen", - JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, longMessage, + "Anmeldung fehlgeschlagen", JOptionPane.ERROR_MESSAGE); } }// end class diff --git a/dozentenmodul/src/main/java/gui/intro/MainMenue_GUI.java b/dozentenmodul/src/main/java/gui/intro/MainMenue_GUI.java index f06393c2..1c41ed1f 100644 --- a/dozentenmodul/src/main/java/gui/intro/MainMenue_GUI.java +++ b/dozentenmodul/src/main/java/gui/intro/MainMenue_GUI.java @@ -23,7 +23,6 @@ import java.net.URI; import java.net.URISyntaxException; import javax.swing.ButtonGroup; -import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; @@ -48,6 +47,7 @@ import models.Links; import models.SessionData; import models.person; import util.GuiOrganizer; +import util.ResourceLoader; import util.OpenLinks; @SuppressWarnings("serial") @@ -337,8 +337,7 @@ public class MainMenue_GUI extends JFrame { + "werden. Diese könnten z.B. konkret \"Web-Entwicklung\" oder \"Künstliche <br>" + "Intelligenz\" lauten und referenzieren dabei auf das allgemeine Image <br>" + "\"Programmieren\".</html>"); - lblGrafik.setIcon(new ImageIcon(MainMenue_GUI.class - .getResource("/img/e4_n_imgs2_bwl_vmc_v2.png"))); + lblGrafik.setIcon(ResourceLoader.getIcon("/img/e4_n_imgs2_bwl_vmc_v2.png")); // ToolTipp lange anzeigen - 60sec ToolTipManager.sharedInstance().setDismissDelay(60000); diff --git a/dozentenmodul/src/main/java/util/ResourceLoader.java b/dozentenmodul/src/main/java/util/ResourceLoader.java new file mode 100644 index 00000000..06200e5a --- /dev/null +++ b/dozentenmodul/src/main/java/util/ResourceLoader.java @@ -0,0 +1,95 @@ +package util; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.font.FontRenderContext; +import java.awt.geom.Rectangle2D; +import java.awt.image.BufferedImage; +import java.net.URL; + +import javax.swing.ImageIcon; + +/** + * Helper class for loading resources. + * This should be error safe loaders with a fall back in case the + * requested resource can't be found, or isn't of the expected type. + */ +public class ResourceLoader { + + /** + * Load the given resource as an ImageIcon. + * This is guaranteed to never throw an Exception and always return + * an ImageIcon. If the requested resource could not be loaded, + * an icon is generated, containing an error message. If even that + * fails, an empty icon is returned. + * @param path Resource path to load + * @param description Icon description + * @return ImageIcon instance + */ + public static ImageIcon getIcon(String path, String description) { + URL url = ResourceLoader.class.getResource(path); + if (url == null) { + System.out.println("Resource not found: " + path); + } else { + try { + return new ImageIcon(url, description); + } catch (Exception e) { + System.out.println("Resource not loadable: " + path); + } + } + // If we reach here loading failed, create image containing error + // message + try { + return errorIcon("Invalid Resource: " + path); + } catch (Throwable t) { + return new ImageIcon(); + } + } + + /** + * Load the given resource as an ImageIcon. + * This is guaranteed to never throw an Exception and always return + * an ImageIcon. If the requested resource could not be loaded, + * an icon is generated, containing an error message. If even that + * fails, an empty icon is returned. + * @param path Resource path to load + * @return ImageIcon instance + */ + public static ImageIcon getIcon(String path) + { + return getIcon(path, path); + } + + /** + * Helper that will create an icon with given text. + * @param errorText Text to render to icon + * @return the icon + */ + private static ImageIcon errorIcon(String errorText) { + Font font = new Font("Tahoma", Font.PLAIN, 20); + + // get dimensions of text + FontRenderContext frc = new FontRenderContext(null, true, true); + Rectangle2D bounds = font.getStringBounds(errorText, frc); + int w = (int) bounds.getWidth(); + int h = (int) bounds.getHeight(); + + // create a BufferedImage object + BufferedImage image = new BufferedImage(w, h, + BufferedImage.TYPE_INT_RGB); + Graphics2D g = image.createGraphics(); + + // set color and other parameters + g.setColor(Color.WHITE); + g.fillRect(0, 0, w, h); + g.setColor(Color.RED); + g.setFont(font); + + g.drawString(errorText, (float) bounds.getX(), (float) -bounds.getY()); + + g.dispose(); + return new ImageIcon(image, "ERROR"); + } + +} |
