/* * Copyright 2015 Torridity. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package de.tor.tribes.ui.components; import de.tor.tribes.ui.windows.DSWorkbenchMainFrame; import de.tor.tribes.util.BrowserInterface; import de.tor.tribes.util.GlobalOptions; import java.awt.TexturePaint; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.util.HashMap; import javax.imageio.ImageIO; import org.jdesktop.swingx.JXLabel; import org.jdesktop.swingx.JXPanel; import org.jdesktop.swingx.painter.MattePainter; /** * * @author Torridity */ public class WelcomePanel extends JXPanel { private HashMap<JXLabel, String> welcomeTooltipMap = new HashMap<>(); private BufferedImage back = null; /** Creates new form WelcomePanel */ public WelcomePanel() { initComponents(); setOpaque(true); welcomeTooltipMap.put(jxHelpLabel, "<html> <h2 style='color:#953333; font-weight: bold;'>Integrierte Hilfe</h2> DS Workbench bietet eine umfangreiche Hilfe, die du im Programm jederzeit über <strong>F1</strong> aufrufen kannst. Dabei wird versucht, das passende Hilfethema für die Ansicht, in der du dich gerade befindest, auszuwählen. Es schadet aber auch nicht, einfach mal so in der Hilfe zu stöbern um neue Funktionen zu entdecken. Einsteiger sollten in jedem Fall die ersten drei Kapitel der Wichtigen Grundlagen gelesen haben.</html>"); welcomeTooltipMap.put(jxCommunityLabel, "<html> <h2 style='color:#953333; font-weight: bold;'>Die DS Workbench Community</h2> Natürlich gibt es neben dir noch eine Vielzahl anderer Spieler, die DS Workbench regelmäßig und intensiv benutzen. Einen perfekten Anlaufpunkt für alle Benutzer bietet das DS Workbench Forum, wo man immer jemanden trifft mit dem man Erfahrungen austauschen und wo man Fragen stellen kann.</html>"); welcomeTooltipMap.put(jxIdeaLabel, "<html> <h2 style='color:#953333; font-weight: bold;'>Verbesserungen und Ideen </h2> Gibt es irgendwas wo du meinst, dass es in DS Workbench fehlt und was anderen Benutzern auch helfen könnte? Hast du eine Idee, wie man DS Workbench verbessern oder die Handhabung vereinfachen könnte? Dann bietet dieser Bereich im DS Workbench Forum die perfekte Anlaufstelle für dich. Trau dich und hilf mit, DS Workbench zu verbessern. </html>"); welcomeTooltipMap.put(jxFacebookLabel, "<html> <h2 style='color:#953333; font-weight: bold;'>DS Workbench @ Facebook</h2> Natürlich gehört es heutzutage fast zum guten Ton, bei Facebook in irgendeiner Art und Weise vertreten zu sein. Auch DS Workbench hat eine eigene Facebook Seite, mit deren Hilfe ihr euch jederzeit über aktuelle News oder Geschehnisse im Zusammenhang mit DS Workbench informieren könnt.</html>"); welcomeTooltipMap.put(jContentLabel, "<html> <h2 style='color:#953333'>Willkommen bei DS Workbench</h2> Wenn du diese Seite siehst, dann hast du DS Workbench erfolgreich installiert und die ersten Schritte ebenso erfolgreich gemeistert. Eigentlich steht nun einer unbeschwerten Angriffsplanung und -durchführung nichts mehr im Wege. Erlaube mir trotzdem kurz auf einige Dinge hinzuweisen, die dir möglicherweise beim <b>Umgang mit DS Workbench helfen</b> oder aber dir die Möglichkeit geben, einen wichtigen Teil zur <b>Weiterentwicklung und stetigen Verbesserung</b> dieses Programms beizutragen. Fahre einfach mit der Maus über eins der vier Symbole in den Ecken, um hilfreiche und interessante Informationen rund um DS Workbench zu erfahren. Klicke auf ein Symbol, um direkt zum entsprechenden Ziel zu gelangen. Die Einträge findest du später auch im Hauptmenü unter 'Sonstiges'. <br> <h3 style='color:#953333'> Nun aber viel Spaß mit DS Workbench.</h3> </html>"); try { back = ImageIO.read(WelcomePanel.class.getResource("/images/c.gif")); } catch (Exception ignored) { } if (back != null) { setBackgroundPainter(new MattePainter(new TexturePaint(back, new Rectangle2D.Float(0, 0, 200, 20)))); } } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; jWelcomePane = new javax.swing.JPanel(); jContentLabel = new org.jdesktop.swingx.JXLabel(); jxHelpLabel = new org.jdesktop.swingx.JXLabel(); jxCommunityLabel = new org.jdesktop.swingx.JXLabel(); jxIdeaLabel = new org.jdesktop.swingx.JXLabel(); jxFacebookLabel = new org.jdesktop.swingx.JXLabel(); jDisableWelcome = new javax.swing.JCheckBox(); jxCloseLabel = new org.jdesktop.swingx.JXLabel(); setLayout(new java.awt.BorderLayout()); jWelcomePane.setOpaque(false); jWelcomePane.setLayout(new java.awt.GridBagLayout()); jContentLabel.setText("<html>\n<h2 style=\"color:#953333\">Willkommen bei DS Workbench </h2>\n<p>Wenn du diese Seite siehst, dann hast du DS Workbench erfolgreich installiert und die ersten Schritte ebenso erfolgreich gemeistert. Eigentlich steht nun einer unbeschwerten Angriffsplanung und -durchführung nichts mehr im Wege. \nErlaube mir trotzdem kurz auf einige Dinge hinzuweisen, die dir möglicherweise beim <b>Umgang mit DS Workbench helfen</b> oder aber dir die Möglichkeit geben, einen wichtigen Teil zur <b>Weiterentwicklung und stetigen Verbesserung</b> dieses Programms beizutragen. \n Fahre einfach mit der Maus über eins der vier Symbole in den Ecken, um hilfreiche und interessante Informationen rund um DS Workbench zu erfahren. Klicke auf ein Symbol, um direkt zum entsprechenden Ziel zu gelangen. <br>\n<h3 style=\"color:#953333\"> Nun aber viel Spaß mit DS Workbench.</h3>\n</html>"); jContentLabel.setMinimumSize(new java.awt.Dimension(300, 300)); jContentLabel.setPreferredSize(new java.awt.Dimension(300, 300)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; jWelcomePane.add(jContentLabel, gridBagConstraints); jxHelpLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/res/128x128/help.png"))); // NOI18N jxHelpLabel.setEnabled(false); jxHelpLabel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseEntered(java.awt.event.MouseEvent evt) { fireMouseEnterLinkEvent(evt); } public void mouseExited(java.awt.event.MouseEvent evt) { fireMouseExitLinkEvent(evt); } public void mouseReleased(java.awt.event.MouseEvent evt) { firePerformWelcomeActionEvent(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(10, 10, 0, 0); jWelcomePane.add(jxHelpLabel, gridBagConstraints); jxCommunityLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/res/128x128/forum.png"))); // NOI18N jxCommunityLabel.setEnabled(false); jxCommunityLabel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseEntered(java.awt.event.MouseEvent evt) { fireMouseEnterLinkEvent(evt); } public void mouseExited(java.awt.event.MouseEvent evt) { fireMouseExitLinkEvent(evt); } public void mouseReleased(java.awt.event.MouseEvent evt) { firePerformWelcomeActionEvent(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; gridBagConstraints.insets = new java.awt.Insets(10, 0, 0, 10); jWelcomePane.add(jxCommunityLabel, gridBagConstraints); jxIdeaLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/res/128x128/idea.png"))); // NOI18N jxIdeaLabel.setEnabled(false); jxIdeaLabel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseEntered(java.awt.event.MouseEvent evt) { fireMouseEnterLinkEvent(evt); } public void mouseExited(java.awt.event.MouseEvent evt) { fireMouseExitLinkEvent(evt); } public void mouseReleased(java.awt.event.MouseEvent evt) { firePerformWelcomeActionEvent(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST; gridBagConstraints.insets = new java.awt.Insets(0, 10, 10, 0); jWelcomePane.add(jxIdeaLabel, gridBagConstraints); jxFacebookLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/res/128x128/facebook.png"))); // NOI18N jxFacebookLabel.setEnabled(false); jxFacebookLabel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseEntered(java.awt.event.MouseEvent evt) { fireMouseEnterLinkEvent(evt); } public void mouseExited(java.awt.event.MouseEvent evt) { fireMouseExitLinkEvent(evt); } public void mouseReleased(java.awt.event.MouseEvent evt) { firePerformWelcomeActionEvent(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHEAST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 10); jWelcomePane.add(jxFacebookLabel, gridBagConstraints); jDisableWelcome.setText("Willkommensseite beim nächsten Start nicht mehr anzeigen"); jDisableWelcome.setOpaque(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 3; gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0); jWelcomePane.add(jDisableWelcome, gridBagConstraints); jxCloseLabel.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(204, 204, 204), 1, true)); jxCloseLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jxCloseLabel.setText("Danke, ich möchte DS Workbench nun verwenden."); jxCloseLabel.setEnabled(false); jxCloseLabel.setFont(new java.awt.Font("Tahoma", 0, 14)); jxCloseLabel.setMaximumSize(new java.awt.Dimension(319, 40)); jxCloseLabel.setMinimumSize(new java.awt.Dimension(319, 40)); jxCloseLabel.setPreferredSize(new java.awt.Dimension(319, 40)); jxCloseLabel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseEntered(java.awt.event.MouseEvent evt) { fireMouseEnterLinkEvent(evt); } public void mouseExited(java.awt.event.MouseEvent evt) { fireMouseExitLinkEvent(evt); } public void mouseReleased(java.awt.event.MouseEvent evt) { firePerformWelcomeActionEvent(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 10); jWelcomePane.add(jxCloseLabel, gridBagConstraints); add(jWelcomePane, java.awt.BorderLayout.CENTER); }// </editor-fold>//GEN-END:initComponents private void fireMouseEnterLinkEvent(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_fireMouseEnterLinkEvent JXLabel source = ((JXLabel) evt.getSource()); source.setEnabled(true); String text = welcomeTooltipMap.get(source); if (text == null) { text = welcomeTooltipMap.get(jContentLabel); } jContentLabel.setText(text); repaint(); }//GEN-LAST:event_fireMouseEnterLinkEvent private void fireMouseExitLinkEvent(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_fireMouseExitLinkEvent ((JXLabel) evt.getSource()).setEnabled(false); jContentLabel.setText(welcomeTooltipMap.get(jContentLabel)); repaint(); }//GEN-LAST:event_fireMouseExitLinkEvent private void firePerformWelcomeActionEvent(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_firePerformWelcomeActionEvent if (evt.getSource() == jxHelpLabel) { GlobalOptions.getHelpBroker().setDisplayed(true); } else if (evt.getSource() == jxCommunityLabel) { BrowserInterface.openPage("https://forum.die-staemme.de/index.php?threads/ds-workbench.80831/"); } else if (evt.getSource() == jxIdeaLabel) { BrowserInterface.openPage("https://forum.die-staemme.de/index.php?threads/ds-workbench.80831/"); } else if (evt.getSource() == jxFacebookLabel) { BrowserInterface.openPage("http://www.facebook.com/pages/DS-Workbench/182068775185568"); } else if (evt.getSource() == jxCloseLabel) { //hide welcome page GlobalOptions.addProperty("no.welcome", Boolean.toString(jDisableWelcome.isSelected())); DSWorkbenchMainFrame.getSingleton().hideWelcomePage(); } }//GEN-LAST:event_firePerformWelcomeActionEvent // Variables declaration - do not modify//GEN-BEGIN:variables private org.jdesktop.swingx.JXLabel jContentLabel; private javax.swing.JCheckBox jDisableWelcome; private javax.swing.JPanel jWelcomePane; private org.jdesktop.swingx.JXLabel jxCloseLabel; private org.jdesktop.swingx.JXLabel jxCommunityLabel; private org.jdesktop.swingx.JXLabel jxFacebookLabel; private org.jdesktop.swingx.JXLabel jxHelpLabel; private org.jdesktop.swingx.JXLabel jxIdeaLabel; // End of variables declaration//GEN-END:variables }