diff --git a/src/main/java/com/svn/utils/mirror/gui/enums/RepositoryType.java b/src/main/java/com/svn/utils/mirror/gui/enums/RepositoryType.java new file mode 100644 index 0000000..53dfe88 --- /dev/null +++ b/src/main/java/com/svn/utils/mirror/gui/enums/RepositoryType.java @@ -0,0 +1,10 @@ +package com.svn.utils.mirror.gui.enums; + +/** + * SvnMirror + * Created by Marcin on 2015-06-16. + */ +public enum RepositoryType { + LOCAL, + REMOTE +} diff --git a/src/main/java/com/svn/utils/mirror/gui/main/MainWindow.form b/src/main/java/com/svn/utils/mirror/gui/main/MainWindow.form index eed2834..028dc93 100644 --- a/src/main/java/com/svn/utils/mirror/gui/main/MainWindow.form +++ b/src/main/java/com/svn/utils/mirror/gui/main/MainWindow.form @@ -1,10 +1,18 @@
- + - + + + + + + + + + @@ -13,35 +21,125 @@ - + - - - - - - - - - - - - - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/main/java/com/svn/utils/mirror/gui/main/MainWindow.java b/src/main/java/com/svn/utils/mirror/gui/main/MainWindow.java index 4accd7d..e1a29a7 100644 --- a/src/main/java/com/svn/utils/mirror/gui/main/MainWindow.java +++ b/src/main/java/com/svn/utils/mirror/gui/main/MainWindow.java @@ -3,7 +3,11 @@ package com.svn.utils.mirror.gui.main; import com.svn.utils.mirror.app.CreateRepoInt; import com.svn.utils.mirror.app.Mirror; import com.svn.utils.mirror.gui.enums.RepoAction; +import com.svn.utils.mirror.gui.enums.RepositoryType; +import com.svn.utils.mirror.gui.enums.SynchronizationStatus; import com.svn.utils.mirror.gui.logger.StatusLogger; +import com.svn.utils.mirror.gui.model.RepositoryModel; +import com.svn.utils.mirror.gui.view.SynchronizationStatusComponent; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.SVNURL; @@ -11,6 +15,8 @@ import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; /** * SvnMirror @@ -18,35 +24,76 @@ import java.awt.event.ActionListener; */ public class MainWindow extends JFrame implements CreateRepoInt { private JPanel rootPanel; - private JButton createRepoButton; + private JButton mirrorButton; private JTextPane logTextPane; - private JTextField nameTextField; + private JTextField sourcePathTextField; + private JTextField destinationRepositoryPathTextField; + private JComboBox repositoryType; + private JTextField loginTextFields; + private JPasswordField passwordField; + private JPanel rootServerLoginPanel; + private JEditorPane detailsPane; + private JPanel synchroStatusPanel; private StatusLogger statusLogger; private RepoAction repoAction; + private SynchronizationStatusComponent synchronizationStatusComponent; public MainWindow(String title, RepoAction repoAction) throws HeadlessException { super(title); statusLogger = new StatusLogger(logTextPane); this.repoAction = repoAction; - initAndShowMainWindow(); + initializeView(); + initializeFormBasedOnRepoAction(); addListeners(); } - private void addListeners() { - createRepoButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - Mirror.createRepo(nameTextField.getText(), MainWindow.this); - } - }); - } - - private void initAndShowMainWindow() { + private void initializeView() { setExtendedState(JFrame.MAXIMIZED_BOTH); setContentPane(rootPanel); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); pack(); setVisible(true); + synchronizationStatusComponent = new SynchronizationStatusComponent(); + synchronizationStatusComponent.setSynchronizationStatus(SynchronizationStatus.WAITING_FOR_FEEDBACK); + synchroStatusPanel.add(synchronizationStatusComponent); + + DefaultComboBoxModel repositoryTypeComboBoxModel = new DefaultComboBoxModel<>(); + repositoryTypeComboBoxModel.addElement(new RepositoryModel(RepositoryType.REMOTE)); + repositoryTypeComboBoxModel.addElement(new RepositoryModel(RepositoryType.LOCAL)); + repositoryType.setModel(repositoryTypeComboBoxModel); + } + + private void initializeFormBasedOnRepoAction() { + // @TODO hide & show GUI parts + switch (repoAction) { + case CONNECT_TO_EXISTING_REPO_MIRROR: + break; + case CREATE_NEW_REPO_MIRROR: + break; + } + setVisible(true); + } + + private void addListeners() { + mirrorButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + Mirror.createRepo(sourcePathTextField.getText(), MainWindow.this); + } + }); + + repositoryType.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + if (((RepositoryModel) e.getItem()).getRepositoryType() == RepositoryType.LOCAL) { + rootServerLoginPanel.setVisible(false); + } else { + rootServerLoginPanel.setVisible(true); + } + } + } + }); } @Override diff --git a/src/main/java/com/svn/utils/mirror/gui/model/RepositoryModel.java b/src/main/java/com/svn/utils/mirror/gui/model/RepositoryModel.java new file mode 100644 index 0000000..119d301 --- /dev/null +++ b/src/main/java/com/svn/utils/mirror/gui/model/RepositoryModel.java @@ -0,0 +1,24 @@ +package com.svn.utils.mirror.gui.model; + +import com.svn.utils.mirror.gui.enums.RepositoryType; + +/** + * SvnMirror + * Created by Marcin on 2015-06-16. + */ +public class RepositoryModel { + private RepositoryType repositoryType; + + public RepositoryModel(RepositoryType repositoryType) { + this.repositoryType = repositoryType; + } + + public RepositoryType getRepositoryType() { + return repositoryType; + } + + @Override + public String toString() { + return repositoryType.toString(); + } +}