/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on Mar 10, 2004 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package plugins.collaboration.jabber.view; //TODO: Which deprecated API is used here? Fix this. import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.MouseListener; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JRadioButton; import javax.swing.JTextField; import javax.swing.SpringLayout; /** * @author RReppel * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class MapSharingWizardView extends JFrame { private static final int INFO_MESSAGE_HEIGHT = 20; private static final int INFO_MESSAGE_WIDTH = 120; private static final Color BACKGROUNDCOLOR = Color.lightGray; private static final int WIDTH = 400; private static final int HEIGHT = 180; private static final int BUTTON_WIDTH = 60; private static final int BUTTON_HEIGHT = 20; private static final int LABEL_WIDTH = 80; private static final int LABEL_HEIGHT = 20; private static final int TEXTFIELD_CHARACTERS = 25; private static final int TEXTFIELD_HEIGHT = 20; private static final int COMMANDPANEL_HEIGHT = 40; //TODO: Hack alert ... For some reason, this whole gaggle here needs to be // global, otherwise display doesn't update correctly. //Common UI components: //TODO: Update resource files. JButton closeBtn = new JButton("Close"); JButton nextBtn = new JButton("Next"); JButton backBtn = new JButton("Back"); JPanel wizardButtonPanel = new JPanel(new SpringLayout()); //A panel // showing // "Close" "Back" // and // (optionally) // "Next" // buttons. JPanel closeButtonPanel = new JPanel(new SpringLayout()); //A panel showing // just the // "Close" button. //ShareMapSelection GUI UI Components: //TODO: Update resource files. JRadioButton shareMap = new JRadioButton( "Share this map with another user."); JRadioButton waitForMapSharing = new JRadioButton( "Wait for another user to share a map."); JPanel shareMapSelectionPanel = new JPanel(); //ConnectToJabberServer GUI UI Components: //TODO: Update resource files JTextField serverName = new JTextField("amessage.de", TEXTFIELD_CHARACTERS); JTextField userName = new JTextField("", TEXTFIELD_CHARACTERS); JPasswordField password = new JPasswordField("", TEXTFIELD_CHARACTERS); JPanel connectToServerPanel = new JPanel(new BorderLayout()); //SelectUser GUI UI Components: JLabel mapShareUserNameLbl = new JLabel("Username:"); JTextField mapShareUserName = new JTextField("@amessage.de", TEXTFIELD_CHARACTERS); JPanel selectUserPanel = new JPanel(new BorderLayout()); //MapShareRequestAcceptDecline GUI UI Components: //TODO: Update resource files. JButton acceptBtn = new JButton("Accept"); JButton declineBtn = new JButton("Decline"); //NotificationMessage GUI UI Components: JPanel notificationMessagePanel = new JPanel(new BorderLayout()); JPanel notificationMessageDisplayPanel = new JPanel(); JLabel notificationMessage = new JLabel(); //AcceptDeclineMessage GUI UI Components: JPanel acceptDeclineMessagePanel = new JPanel(new BorderLayout()); JLabel acceptDeclineMessage = new JLabel(); //TODO: Update resource file. JPanel acceptDeclineMessageDisplayPanel = new JPanel(); JPanel buttonPanel = new JPanel(new SpringLayout()); //A panel showing just // the "Close" button. public MapSharingWizardView() { setSize(WIDTH, HEIGHT); setBackground(BACKGROUNDCOLOR); } public void addCloseButtonMouseListener( MouseListener closeButtonMouseListener) { closeBtn.addMouseListener(closeButtonMouseListener); } public void addNextButtonMouseListener(MouseListener nextButtonMouseListener) { nextBtn.addMouseListener(nextButtonMouseListener); } public void addBackButtonMouseListener(MouseListener backButtonMouseListener) { backBtn.addMouseListener(backButtonMouseListener); } public void addAcceptButtonMouseListener( MouseListener acceptButtonMouseListener) { acceptBtn.addMouseListener(acceptButtonMouseListener); } public void addDeclineButtonMouseListener( MouseListener declineButtonMouseListener) { declineBtn.addMouseListener(declineButtonMouseListener); } /** * This is the GUI where the user chooses between sharing her/his map or * waiting for another user to share a map. It's the first screen of the * wizard. * */ private void buildShareMapSelectionGui() { JPanel shareMapEditPanel = new JPanel(); ButtonGroup group = new ButtonGroup(); //Window title: //TODO: Update resource file. setTitle("Share Map"); shareMapSelectionPanel.setSize(WIDTH, HEIGHT); shareMapSelectionPanel.setBackground(BACKGROUNDCOLOR); //Main edit panel: SpringLayout layout = new SpringLayout(); shareMapEditPanel.setLayout(layout); shareMapEditPanel.setBackground(BACKGROUNDCOLOR); shareMapEditPanel.setSize(WIDTH, HEIGHT - COMMANDPANEL_HEIGHT); //Radio buttons: shareMap.setSelected(true); shareMap.setBackground(BACKGROUNDCOLOR); waitForMapSharing.setBackground(BACKGROUNDCOLOR); group.add(waitForMapSharing); group.add(shareMap); shareMapEditPanel.add(waitForMapSharing); shareMapEditPanel.add(shareMap); SpringUtilities.makeCompactGrid(shareMapEditPanel, //parent 2, 1, //rows, cols 15, 15, //initX, initY 10, 10); //xPad, yPad shareMapSelectionPanel.add(shareMapEditPanel, BorderLayout.NORTH); addWizardButtons(shareMapSelectionPanel, true); this.getContentPane().add(shareMapSelectionPanel); } /** * This builds the user interface which prompts the user for the Jabber * server name, a username and a password. */ private void buildConnectToServerGui() { JLabel userNameLbl = new JLabel("Username:"); JLabel passwordLbl = new JLabel("Password:"); JLabel serverNameLbl = new JLabel("Server Name:"); JPanel connectToServerEditPanel = new JPanel(); //Window title: //TODO: Update resource file. setTitle("Connect To Jabber Instant Messaging Server"); //Main edit panel: SpringLayout layout = new SpringLayout(); connectToServerEditPanel.setLayout(layout); serverNameLbl.setSize(LABEL_WIDTH, LABEL_HEIGHT); userNameLbl.setSize(LABEL_WIDTH, LABEL_HEIGHT); passwordLbl.setSize(LABEL_WIDTH, LABEL_HEIGHT); serverName.setSize(TEXTFIELD_CHARACTERS, TEXTFIELD_HEIGHT); userName.setSize(TEXTFIELD_CHARACTERS, TEXTFIELD_HEIGHT); password.setSize(TEXTFIELD_CHARACTERS, TEXTFIELD_HEIGHT); connectToServerEditPanel.setBackground(BACKGROUNDCOLOR); connectToServerEditPanel.setSize(WIDTH, HEIGHT - COMMANDPANEL_HEIGHT); connectToServerEditPanel.add(serverNameLbl); connectToServerEditPanel.add(serverName); connectToServerEditPanel.add(userNameLbl); connectToServerEditPanel.add(userName); connectToServerEditPanel.add(passwordLbl); connectToServerEditPanel.add(password); SpringUtilities.makeCompactGrid(connectToServerEditPanel, //parent 3, 2, //rows, cols 15, 15, //initX, initY 10, 10); //xPad, yPad connectToServerPanel.add(connectToServerEditPanel, BorderLayout.NORTH); addWizardButtons(connectToServerPanel, false); this.getContentPane().add(connectToServerPanel); } /** * Builds the interface which prompts a user to select somebody to share a * map with. * */ private void buildSelectUserGui() { JPanel selectUserEditPanel = new JPanel(); //Window title: //TODO: Update resource file. setTitle("Select User (example: user@jabber.org)"); selectUserPanel.setBackground(BACKGROUNDCOLOR); //Main edit panel: SpringLayout layout = new SpringLayout(); selectUserEditPanel.setLayout(layout); mapShareUserNameLbl.setSize(LABEL_WIDTH, LABEL_HEIGHT); mapShareUserName.setSize(TEXTFIELD_CHARACTERS, TEXTFIELD_HEIGHT); selectUserEditPanel.setBackground(BACKGROUNDCOLOR); selectUserEditPanel.setSize(WIDTH, HEIGHT - COMMANDPANEL_HEIGHT); selectUserEditPanel.add(mapShareUserNameLbl); selectUserEditPanel.add(mapShareUserName); SpringUtilities.makeCompactGrid(selectUserEditPanel, //parent 1, 2, //rows, cols 15, 15, //initX, initY 10, 10); //xPad, yPad selectUserPanel.add(selectUserEditPanel, BorderLayout.NORTH); addWizardButtons(selectUserPanel, true); this.getContentPane().add(selectUserPanel); } /** * Builds the interface which informs the user that a decision to accept map * sharing is pending. * */ private void buildNotificationMessageGui(String title, String message) { //AwaitingMapSharing GUI UI Components: //TODO: Update resource file. //Window title: setTitle(title); notificationMessagePanel.setBackground(BACKGROUNDCOLOR); //Main edit panel: notificationMessageDisplayPanel.setSize(WIDTH, HEIGHT - COMMANDPANEL_HEIGHT); notificationMessageDisplayPanel.setBackground(BACKGROUNDCOLOR); SpringLayout layout = new SpringLayout(); notificationMessageDisplayPanel.setLayout(layout); notificationMessageDisplayPanel.remove(notificationMessage); notificationMessage.setSize(INFO_MESSAGE_WIDTH, INFO_MESSAGE_HEIGHT); notificationMessage.setBackground(BACKGROUNDCOLOR); notificationMessage.setText(message); notificationMessageDisplayPanel.add(notificationMessage); SpringUtilities.makeCompactGrid(notificationMessageDisplayPanel, //parent 1, 1, //rows, cols 50, 50, //initX, initY 10, 10); //xPad, yPad notificationMessagePanel.add(notificationMessageDisplayPanel, BorderLayout.NORTH); addCloseButton(notificationMessagePanel); this.getContentPane().add(notificationMessagePanel); } private void buildMapShareAcceptDeclineGui(String message) { acceptDeclineMessage.setText(message); //Window title: setTitle("Map Sharing Request"); acceptDeclineMessagePanel.setBackground(BACKGROUNDCOLOR); //Main edit panel: acceptDeclineMessageDisplayPanel.setSize(WIDTH, HEIGHT - COMMANDPANEL_HEIGHT); acceptDeclineMessageDisplayPanel.setBackground(BACKGROUNDCOLOR); SpringLayout layout = new SpringLayout(); acceptDeclineMessageDisplayPanel.setLayout(layout); acceptDeclineMessage.setSize(INFO_MESSAGE_WIDTH, INFO_MESSAGE_HEIGHT); acceptDeclineMessage.setBackground(BACKGROUNDCOLOR); acceptDeclineMessageDisplayPanel.add(acceptDeclineMessage); SpringUtilities.makeCompactGrid(acceptDeclineMessageDisplayPanel, //parent 1, 1, //rows, cols 50, 50, //initX, initY 10, 10); //xPad, yPad acceptDeclineMessagePanel.add(acceptDeclineMessageDisplayPanel, BorderLayout.NORTH); addAcceptDeclineButtons(acceptDeclineMessagePanel); this.getContentPane().add(acceptDeclineMessagePanel); } /** * Adds the "Close", "Back" and "Next" buttons. * * @param panel * @param showBackButtion */ private void addWizardButtons(JPanel panel, boolean showBackButton) { wizardButtonPanel.setSize(WIDTH, COMMANDPANEL_HEIGHT); wizardButtonPanel.setBackground(BACKGROUNDCOLOR); wizardButtonPanel.add(closeBtn); wizardButtonPanel.add(backBtn); backBtn.setVisible(showBackButton); wizardButtonPanel.add(nextBtn); SpringUtilities.makeCompactGrid(wizardButtonPanel, //parent 1, 3, //rows, cols 80, 15, //initX, initY 30, 10); //xPad, yPad panel.add(wizardButtonPanel, BorderLayout.SOUTH); } /** * Adds the "Close", "Back" and "Next" buttons. * * @param panel */ private void addCloseButton(JPanel panel) { closeButtonPanel = new JPanel(new SpringLayout()); //A panel showing // just the "Close" // button. closeButtonPanel.setSize(WIDTH, COMMANDPANEL_HEIGHT); closeButtonPanel.setBackground(BACKGROUNDCOLOR); closeButtonPanel.add(closeBtn); SpringUtilities.makeCompactGrid(closeButtonPanel, //parent 1, 1, //rows, cols 80 + closeBtn.getWidth() + 30, 15, //initX, initY 30, 10); //xPad, yPad panel.add(closeButtonPanel, BorderLayout.SOUTH); } /** * Adds the "Accept" and "Decline" buttons. * * @param panel */ private void addAcceptDeclineButtons(JPanel panel) { buttonPanel.setBackground(BACKGROUNDCOLOR); buttonPanel.add(acceptBtn); buttonPanel.add(declineBtn); SpringUtilities.makeCompactGrid(buttonPanel, //parent 1, 2, //rows, cols 80 + closeBtn.getWidth() + 30, 15, //initX, initY 30, 10); //xPad, yPad panel.add(buttonPanel, BorderLayout.SOUTH); } /** * Removes any previous user interfaces shown on the wizard's content pane * */ private void removeUIs() { this.getContentPane().remove(shareMapSelectionPanel); this.getContentPane().remove(connectToServerPanel); this.getContentPane().remove(selectUserPanel); this.getContentPane().remove(notificationMessagePanel); this.getContentPane().remove(acceptDeclineMessagePanel); shareMapSelectionPanel = new JPanel(); connectToServerPanel = new JPanel(new BorderLayout()); selectUserPanel = new JPanel(new BorderLayout()); notificationMessagePanel = new JPanel(new BorderLayout()); notificationMessage = new JLabel(); notificationMessageDisplayPanel = new JPanel(); acceptDeclineMessagePanel = new JPanel(new BorderLayout()); acceptDeclineMessage = new JLabel(); acceptDeclineMessageDisplayPanel = new JPanel(); wizardButtonPanel = new JPanel(new SpringLayout()); //A panel showing // "Close" "Back" // and (optionally) // "Next" buttons. buttonPanel = new JPanel(new SpringLayout()); //A panel showing just // the "Close" button. } public void showMapSharingSelectionDialog() { //Start with giving the user a choice between sharing his/her own map // or waiting //for another user to share a map: //TODO: "RemoveUIs", etc. should be in "BuildShareMapSelectionGui". removeUIs(); buildShareMapSelectionGui(); show(); this.repaint(); } public void showConnectToServerDialog() { removeUIs(); buildConnectToServerGui(); show(); this.repaint(); } public void showSelectUserDialog() { removeUIs(); buildSelectUserGui(); show(); this.repaint(); } public void showAwaitMapSharingMessage() { removeUIs(); //TODO: Update resource files. buildNotificationMessageGui("Share Map", "Waiting for user to accept invitation to share map..."); show(); this.repaint(); } public void showSharingAcceptedMessage(String userName) { //TODO: Update resource files. String message = "You are now sharing the current map with " + userName + "."; removeUIs(); //TODO: Update resource files. hide(); buildNotificationMessageGui("Sharing Map", message); show(); this.repaint(); } public void showSharingDeclinedMessage(String userName) { //TODO: Update resource files. String message = userName + " has declined your invitation to share a map."; removeUIs(); //TODO: Update resource files. buildNotificationMessageGui("Declined Sharing Map", message); show(); this.repaint(); } public void showSharingStoppedMessage(String userName) { //TODO: Update resource files. String message = userName + " has stopped map sharing."; removeUIs(); //TODO: Update resource files. buildNotificationMessageGui("Stopped Sharing Map", message); show(); this.repaint(); } public void showMapShareAcceptDeclineMessage(String userName) { //TODO: Update resource files. String message = userName + " wants to share a map with you."; removeUIs(); //TODO: Update resource files. buildMapShareAcceptDeclineGui(message); show(); this.repaint(); } // Properties: /** * True if the user has chosen to share his own map with another user. * * @return */ public boolean isShareMapSelected() { return shareMap.isSelected(); } /** * True if the user has chosen to wait for another user to share a map. * * @return */ public boolean isWaitForMapSharingSelected() { return waitForMapSharing.isSelected(); } /** * The name of the Jabber server to which to connect. * * @return */ public String getServername() { return serverName.getText(); } /** * The name with which the user with which the user should connect to the * Jabber server. * * @return */ public String getUsername() { return userName.getText(); } /** * The password for connecting to the Jabber server. * * @return */ public String getPassword() { return password.getText(); } /** * The user name of the use with whom to share a map, e.g. * "johnsmith@chat.jabbermind.com". * * @return */ public String getMapShareUserName() { return mapShareUserName.getText(); } }