--- /dev/null
+gforge/contrib/soap/java/build
+gforge/contrib/soap/java/etc/upload_screenshot.bat
+gforge/contrib/soap/java/gforgesoap.ipr
+gforge/contrib/soap/java/gforgesoap.iws
--- /dev/null
+gforgesoap.ipr
+gforgesoap.iws
+build
--- /dev/null
+upload_screenshot.bat
--- /dev/null
+java org.gforge.soapclient.GUI
\ No newline at end of file
}
}
public static void main(String[] args) throws Exception {
- AcceptanceTest test = new AcceptanceTest();
- test.run();
+ AcceptanceTest test = new AcceptanceTest();
+ test.run();
}
}
package org.gforge.soapclient;
-import javax.swing.*;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JPasswordField;
+import javax.swing.JTextField;
+import java.awt.BorderLayout;
+import java.awt.GridLayout;
-public class ConfigurationPanel {
+public class ConfigurationPanel extends JPanel {
- public static final String NAME = "GForge";
-
- public static final String PROJECT_PROPERTY = "project";
+ public static final String GROUP_PROPERTY = "group";
public static final String SERVER_PROPERTY = "server";
public static final String USERID_PROPERTY = "userid";
public static final String PASSWD_PROPERTY = "password";
private JTextField serverField = new JTextField(25);
- private JTextField projectField = new JTextField(12);
+ private JTextField groupField = new JTextField(12);
private JTextField useridField = new JTextField(10);
private JPasswordField passwdField = new JPasswordField(10);
-/*
- public void init() {
+ public ConfigurationPanel() {
+ super();
+
JPanel authPanel = new JPanel(new GridLayout(4,2));
authPanel.add(new JLabel("Server:"));
- serverField.setText(jEdit.getProperty(GForgeJEditPlugin.SERVER_PROPERTY));
+ serverField.setText(Settings.getInstance().get(SERVER_PROPERTY));
authPanel.add(serverField);
authPanel.add(new JLabel("Project:"));
- projectField.setText(jEdit.getProperty(GForgeJEditPlugin.PROJECT_PROPERTY));
- authPanel.add(projectField);
+ groupField.setText(Settings.getInstance().get(GROUP_PROPERTY));
+ authPanel.add(groupField);
authPanel.add(new JLabel("User id:"));
- useridField.setText(jEdit.getProperty(GForgeJEditPlugin.USERID_PROPERTY));
+ useridField.setText(Settings.getInstance().get(USERID_PROPERTY));
authPanel.add(useridField);
authPanel.add(new JLabel("Password:"));
- passwdField.setText(jEdit.getProperty(GForgeJEditPlugin.PASSWD_PROPERTY));
+ passwdField.setText(Settings.getInstance().get(PASSWD_PROPERTY));
authPanel.add(passwdField);
JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.add(authPanel, BorderLayout.NORTH);
- addComponent(mainPanel);
+ add(mainPanel);
}
public void save() {
- jEdit.setProperty(GForgeJEditPlugin.SERVER_PROPERTY, serverField.getText());
- jEdit.setProperty(GForgeJEditPlugin.PROJECT_PROPERTY, projectField.getText());
- jEdit.setProperty(GForgeJEditPlugin.USERID_PROPERTY, useridField.getText());
- jEdit.setProperty(GForgeJEditPlugin.PASSWD_PROPERTY, String.valueOf(passwdField.getPassword()));
+ Settings.getInstance().save(SERVER_PROPERTY, serverField.getText());
+ Settings.getInstance().save(GROUP_PROPERTY, groupField.getText());
+ Settings.getInstance().save(USERID_PROPERTY, useridField.getText());
+ Settings.getInstance().save(PASSWD_PROPERTY, String.valueOf(passwdField.getPassword()));
}
-*/
}
--- /dev/null
+package org.gforge.soapclient;
+
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JTabbedPane;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+public class GUI {
+
+ private class SwitchedTabsListener implements ChangeListener {
+ public void stateChanged(ChangeEvent e) {
+ if (saveConfigurationOnNextTabSwitch) {
+ configurationPanel.save();
+ saveConfigurationOnNextTabSwitch = false;
+ }
+ JTabbedPane pane = (JTabbedPane)e.getSource();
+ if (pane.getSelectedComponent() instanceof ConfigurationPanel) {
+ saveConfigurationOnNextTabSwitch = true;
+ }
+ }
+ }
+
+ private boolean saveConfigurationOnNextTabSwitch;
+
+ private static class AboutListener implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ JOptionPane.showMessageDialog(null, "Comments? Suggestions? http://gforge.org/projects/gforge/. Thanks!");
+ }
+ }
+
+ private static class ExitListener implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ System.exit(0);
+ }
+ }
+
+ private JFrame frame;
+
+ public GUI() {
+ frame = new JFrame("GForge");
+
+ frame.getContentPane().add(getTabbedPanel());
+ frame.setJMenuBar(getMenuBar());
+
+ frame.setSize(600, 400);
+ int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;
+ int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
+ frame.setLocation((screenWidth/2) - frame.getWidth()/2, (screenHeight/2) - frame.getHeight()/2);
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ frame.show();
+ }
+
+ private JMenuBar getMenuBar() {
+ JMenuBar menuBar = new JMenuBar();
+
+ JMenu fileMenu = new JMenu("File");
+ fileMenu.setMnemonic('f');
+ JMenuItem exitItem = new JMenuItem("Exit");
+ exitItem.setMnemonic('x');
+ exitItem.addActionListener(new ExitListener());
+ fileMenu.add(exitItem);
+ menuBar.add(fileMenu);
+
+ JMenu helpMenu = new JMenu("Help");
+ JMenuItem aboutItem = new JMenuItem("About");
+ aboutItem.addActionListener(new AboutListener());
+ helpMenu.add(aboutItem);
+ menuBar.add(helpMenu);
+
+ return menuBar;
+ }
+
+ private ConfigurationPanel configurationPanel = new ConfigurationPanel();
+ private GeneralPanel generalPanel = new GeneralPanel();
+
+ private JComponent getTabbedPanel() {
+ JTabbedPane tabbedPane = new JTabbedPane();
+ tabbedPane.add("General", generalPanel);
+ tabbedPane.add("Configuration", configurationPanel);
+ tabbedPane.addChangeListener(new SwitchedTabsListener());
+ return tabbedPane;
+ }
+
+ public static void main(String [] args) {
+ new GUI();
+ }
+}
--- /dev/null
+package org.gforge.soapclient;
+
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTabbedPane;
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+public class GeneralPanel extends JPanel {
+
+ private class RefreshListener implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ try {
+ Client client = new Client(Settings.getInstance().get(ConfigurationPanel.SERVER_PROPERTY),
+ Settings.getInstance().get(ConfigurationPanel.GROUP_PROPERTY)
+ );
+ userCount = String.valueOf(client.getNumberOfActiveUsers());
+ projectCount = String.valueOf(client.getNumberOfHostedProjects());
+ refresh();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ userCount = "Can't contact server";
+ projectCount = "Can't contact server";
+ }
+ }
+ }
+
+ private String userCount = "Unknown";
+ private String projectCount = "Unknown";
+
+ public GeneralPanel() {
+ super();
+
+ JPanel stats = new JPanel(new GridLayout(3,1));
+ stats.add(new JLabel("Projects: " + projectCount));
+ stats.add(new JLabel("Users: " + userCount));
+ JButton refreshButton = new JButton("Refresh");
+ refreshButton.setMnemonic('r');
+ refreshButton.addActionListener(new RefreshListener());
+ stats.add(refreshButton);
+
+ add(stats);
+ }
+
+ private void refresh() {
+ this.removeAll();
+ this.repaint();
+ JPanel stats = new JPanel(new GridLayout(3,1));
+ stats.add(new JLabel("Projects: " + projectCount));
+ stats.add(new JLabel("Users: " + userCount));
+ JButton refreshButton = new JButton("Refresh");
+ refreshButton.setMnemonic('r');
+ refreshButton.addActionListener(new RefreshListener());
+ stats.add(refreshButton);
+ add(stats);
+ }
+}
--- /dev/null
+package org.gforge.soapclient;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Date;
+import java.util.Properties;
+
+public class Settings {
+
+ private File settingsFile;
+
+ public static Settings getInstance() {
+ return new Settings();
+ }
+
+ private Settings() {
+ File homeDir = new File(System.getProperty("user.home"));
+ if (!homeDir.exists()) {
+ homeDir.mkdir();
+ }
+
+ File settingsDir = new File(homeDir.getAbsolutePath() + System.getProperty("file.separator") + ".gforgejavasoapclient");
+ if (!settingsDir.exists()) {
+ settingsDir.mkdir();
+ }
+
+ settingsFile = new File(settingsDir.getAbsolutePath(), "settings.txt");
+ }
+
+ public void save(String key, String value) {
+ try {
+ Properties savedProperties = new Properties();
+
+ if (settingsFile.exists()) {
+ loadProps(savedProperties);
+ }
+
+ savedProperties.setProperty(key, value);
+
+ FileOutputStream fos = new FileOutputStream(settingsFile);
+ savedProperties.store(fos, "GForge Java SOAP client settings " + new Date());
+ fos.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException(e.getMessage());
+ }
+
+ }
+
+ public String get(String key) {
+ try {
+ Properties properties = new Properties();
+ if (settingsFile.exists()) {
+ loadProps(properties);
+ return properties.getProperty(key);
+ }
+ return "";
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException(e.getMessage());
+ }
+
+ }
+
+ private void loadProps(Properties properties) throws IOException {
+ FileInputStream fis = new FileInputStream(settingsFile);
+ properties.load(fis);
+ fis.close();
+ }
+}
+