package ui; import com.perforce.p4simulink.connection.Config; import javax.swing.*; import javax.swing.border.LineBorder; import java.awt.*; import java.util.List; import java.util.ArrayList; /** * Perforce SCM integration for Simulink. */ public class P4ConnectionPane extends P4Pane { private JTextArea results; private JTextField username; private JTextField server; private JTextField workspace; public P4ConnectionPane(Config config) { if (config == null) { config = new Config(); } username = new JTextField(config.getUser() != null ? config.getUser() : "P4USER"); server = new JTextField(config.getAddress() != null ? config.getAddress() : "P4PORT"); workspace = new JTextField(config.getClient() != null ? config.getClient() : "P4CLIENT"); results = new JTextArea(""); } public Object[] getFields() { checkNonEmpty(username); checkNonEmpty(server); checkNonEmpty(workspace); List<Object> fields = new ArrayList<>(); fields.add("Server: "); fields.add(server); fields.add("User: "); fields.add(username); fields.add("Workspace: "); fields.add(workspace); if (results.getText() != null && !results.getText().isEmpty()) { fields.add("Results: "); fields.add(results); } return fields.toArray(); } public String getUsername() { return username.getText(); } public String getServer() { return server.getText(); } public String getWorkspace() { return workspace.getText(); } public void clearResults() { results.setText(""); } public void setResults(String message) { results.setText(message); } public String toString() { return "USERNAME: " + getUsername() + " HOST: " + getServer() + " CLIENT_ID: " + getWorkspace(); } }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#3 | 11645 | Paul Allen |
Refactoring and additional work on UI: Removed Connection class and went with global server/client objects. Implemented panes for connection, depot path and passwords. Passwords are only requested when required. Transferred from p4://perforce.perforce.com:1666@957149 |
||
#2 | 11644 | Paul Allen |
Paul's changes: Refactor getAddress and getAddressForConfig to getPort and getP4JavaURI. There were a few cases when the wrong value was written + getPort was not working. Password had a null password object (now initilised) P4PaswordPane needs some work - must talk to Perfoce to see if it needs a pass or is already logged in. There are still sync -f (this is very bad) Think I miss understood the checkout method after finding and reading the JavaDoc. You were right to start. Looks like a p4 edit. Would like to set a break point and find out when it is used. Elliot's changes: * Changed export() to use p4 'print' * Connect/login now looks for P4TICKETS env var * Config no longer stores P4PASSWD or P4TICKETS * Removed P4TICKET functionality (was only for P4Jenkins) * Ensured we're using a global IServer object * checkout() now uses editFiles() (opens all files for edit) * Changed all "sync -f" to plain "sync" * Removed final client update with force flag * Removed error dialogues regarding login issues * Investigated use of P4IGNORE - I'll need to write my own filter, no big deal Transferred from p4://perforce.perforce.com:1666@955247 |
||
#1 | 11643 | Paul Allen |
Unshelved from pending changelist '953729': Paul: Added: - getWorkspaceState() -- run a p4 status - getOpenedState() -- run p4 opened - getIgnoreState() -- run p4 add -n Modified: - add() -- seemed to call reopen? - P4FileState -- simple constructor for state Elliot: * global client and changelist object within the adapter * removed repeated client updates and changelist refreshes * removed 'reopen' in add * added calls to 'edit' where appropriate file states are found * made 'checkout' a pure sync, with no edits * commented a bunch of the @Override methods * added a call to haveList in getFileState so we can see versions of files in the project * changed the connection pane to look like p4v's * refactored a bit of the dialogue code, added calls to prompt for password (like p4v) * changed all log.trace() calls to log.debug() so the log file messiness can be controlled more easily Functionality that now works properly: * open project from source control, with properly-configured .p4config file * add new project to source control, with properly-configured .p4config file * add * edit * commit * revert * compare reversions (opens Simulink diff tool) Things to work on: * dialogues (particularily the password one, but the connection one is a bit dodge-y) * remove from project (possibly always making the Simulink project meta-data editable will fix this - it *almost* works) - the current issue is Simulink needs to edit the meta-data, but Perforce has made the files read-only, so Simulink throws up on itself Transferred from p4://perforce.perforce.com:1666@954622 |