From 029070ae921504f497bba00574665cbcc45b53a1 Mon Sep 17 00:00:00 2001 From: Ezequiel Valencia Date: Fri, 28 Jun 2024 07:09:00 -0400 Subject: [PATCH 01/21] Client Fix For No Email Had to request the scopes. --- .../main/java/org/vcell/restclient/auth/InteractiveLogin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vcell-restclient/src/main/java/org/vcell/restclient/auth/InteractiveLogin.java b/vcell-restclient/src/main/java/org/vcell/restclient/auth/InteractiveLogin.java index fb805b2b3b..ab67da9dc1 100644 --- a/vcell-restclient/src/main/java/org/vcell/restclient/auth/InteractiveLogin.java +++ b/vcell-restclient/src/main/java/org/vcell/restclient/auth/InteractiveLogin.java @@ -66,7 +66,7 @@ public static AuthApiClient login(String clientID, URI authServerUri, URI apiBas String callback_endpoint_path = "/oidc_test_callback"; URI redirectURI = new URI("http://" + "localhost" + ":" + localHttpServerPort + callback_endpoint_path); - Scope scope = new Scope("openid"); //, "email"); //, "profile", "offline_access"); + Scope scope = new Scope("openid", "email", "profile"); //, "email"); //, "profile", "offline_access"); CodeVerifier codeVerifier = new CodeVerifier(); URI authRequestURI = getAuthRequestURI(oidcProviderMetadata, redirectURI, new ClientID(clientID), scope, state, codeVerifier); From f31f0ba26d979c84d420ab795419042b816d0c4c Mon Sep 17 00:00:00 2001 From: Ezequiel Valencia Date: Fri, 28 Jun 2024 12:00:44 -0400 Subject: [PATCH 02/21] Test Reset Password With Mock Mailserver --- vcell-rest/pom.xml | 4 ++ .../vcell/restq/apiclient/UsersApiTest.java | 54 +++++++++++++++++++ vcell-server/pom.xml | 19 ++++++- .../java/cbit/vcell/modeldb/UserDbDriver.java | 23 ++++++-- 4 files changed, 95 insertions(+), 5 deletions(-) diff --git a/vcell-rest/pom.xml b/vcell-rest/pom.xml index e3828731cc..5b87f63fa6 100644 --- a/vcell-rest/pom.xml +++ b/vcell-rest/pom.xml @@ -181,6 +181,10 @@ log4j2-jboss-logmanager ${log4j2-jboss-logmanager.version} + + io.quarkus + quarkus-mailer + diff --git a/vcell-rest/src/test/java/org/vcell/restq/apiclient/UsersApiTest.java b/vcell-rest/src/test/java/org/vcell/restq/apiclient/UsersApiTest.java index d9a5340271..255b8ddc91 100644 --- a/vcell-rest/src/test/java/org/vcell/restq/apiclient/UsersApiTest.java +++ b/vcell-rest/src/test/java/org/vcell/restq/apiclient/UsersApiTest.java @@ -1,6 +1,11 @@ package org.vcell.restq.apiclient; +import cbit.vcell.modeldb.UserDbDriver; import cbit.vcell.resource.PropertyLoader; +import io.quarkus.mailer.Mail; +import io.quarkus.mailer.Mailer; +import io.quarkus.mailer.MockMailbox; +import io.quarkus.mailer.reactive.ReactiveMailer; import io.quarkus.test.junit.QuarkusTest; import io.quarkus.test.keycloak.client.KeycloakTestClient; import jakarta.inject.Inject; @@ -21,9 +26,15 @@ import org.vcell.restq.TestEndpointUtils; import org.vcell.restq.config.CDIVCellConfigProvider; import org.vcell.restq.db.AgroalConnectionFactory; +import org.vcell.restq.db.UserRestDB; import org.vcell.util.DataAccessException; +import org.vcell.util.document.UserInfo; +import org.vcell.util.document.UserLoginInfo; +import java.sql.Connection; import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; import java.util.Random; @QuarkusTest @@ -34,8 +45,15 @@ public class UsersApiTest { @ConfigProperty(name = "quarkus.http.test-port") Integer testPort; + @Inject + MockMailbox mockMailbox; + @Inject + Mailer mailer; + @Inject AgroalConnectionFactory agroalConnectionFactory; + @Inject + UserRestDB userRestDB; KeycloakTestClient keycloakClient = new KeycloakTestClient(); private ApiClient aliceAPIClient; @@ -193,6 +211,42 @@ public void testOldAPITokenGenerationForMultipleGuests() throws ApiException { Assertions.assertNotEquals(guestApiToken.getToken(), secondGuestApiToken.getToken()); } + @Test + public void testResetPassword() throws SQLException, DataAccessException { + PropertyLoader.setProperty(PropertyLoader.vcellSMTPHostName, "host"); + PropertyLoader.setProperty(PropertyLoader.vcellSMTPPort, "9090"); + PropertyLoader.setProperty(PropertyLoader.vcellSMTPEmailAddress, "vcell@test.com"); + + UserDbDriver userDbDriver = new UserDbDriver(); + String startPassword = "1700596370260"; // set in the init.sql script + Object lock = new Object(); + Connection connection = agroalConnectionFactory.getConnection(lock); + UserInfo oldUserLoginInfo = userDbDriver.getUserInfo(connection, TestEndpointUtils.administratorUser.getID()); + + Assertions.assertNotNull(oldUserLoginInfo); + Assertions.assertEquals(new UserLoginInfo.DigestedPassword(startPassword).getString(), oldUserLoginInfo.digestedPassword0.getString()); + + + userDbDriver.sendLostPassword(connection, TestEndpointUtils.administratorUser.getName(), mailer); + List mails = mockMailbox.getMailsSentTo(oldUserLoginInfo.email); + Mail mail = mails.get(0); + String passwordReset = mail.getText(); + String[] strings = passwordReset.split("\\."); + strings = strings[0].split(" "); + String newPassword = strings[strings.length - 1]; + newPassword = newPassword.replace("'", ""); + + UserInfo newUserLoginInfo = userDbDriver.getUserInfo(connection, TestEndpointUtils.administratorUser.getID()); + Assertions.assertEquals(newUserLoginInfo.digestedPassword0.getString(), new UserLoginInfo.DigestedPassword(newPassword).getString()); + + // reset changes + userDbDriver.updateUserInfo(connection, oldUserLoginInfo); + newUserLoginInfo = userDbDriver.getUserInfo(connection, TestEndpointUtils.administratorUser.getID()); + Assertions.assertEquals(oldUserLoginInfo.digestedPassword0.getString(), newUserLoginInfo.digestedPassword0.getString()); + + agroalConnectionFactory.release(connection, lock); + } + } diff --git a/vcell-server/pom.xml b/vcell-server/pom.xml index c8fdb1fd72..b63caa1d3c 100644 --- a/vcell-server/pom.xml +++ b/vcell-server/pom.xml @@ -74,6 +74,9 @@ MIT UConn Health + quarkus-bom + io.quarkus.platform + 3.5.2 @@ -121,7 +124,10 @@ ${activemq-broker.version} test - + + io.quarkus + quarkus-mailer + org.postgresql @@ -136,4 +142,15 @@ + + + + ${quarkus.platform.group-id} + ${quarkus.platform.artifact-id} + ${quarkus.platform.version} + pom + import + + + diff --git a/vcell-server/src/main/java/cbit/vcell/modeldb/UserDbDriver.java b/vcell-server/src/main/java/cbit/vcell/modeldb/UserDbDriver.java index 6cb42a1826..20d64109bb 100644 --- a/vcell-server/src/main/java/cbit/vcell/modeldb/UserDbDriver.java +++ b/vcell-server/src/main/java/cbit/vcell/modeldb/UserDbDriver.java @@ -12,6 +12,9 @@ import cbit.vcell.modeldb.ApiAccessToken.AccessTokenStatus; import cbit.vcell.resource.PropertyLoader; +import io.quarkus.mailer.Mail; +import io.quarkus.mailer.Mailer; +import io.quarkus.mailer.reactive.ReactiveMailer; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.jose4j.jwt.MalformedClaimException; @@ -288,7 +291,7 @@ public User getUserFromUseridAndPassword(Connection con, String userid, UserLogi } return user; } -private UserLoginInfo.DigestedPassword updatePasswords(Connection con,KeyValue id,String clearTextPassword) throws SQLException{ +public UserLoginInfo.DigestedPassword updatePasswords(Connection con,KeyValue id,String clearTextPassword) throws SQLException{ UserLoginInfo.DigestedPassword dbDigestedPassword = new UserLoginInfo.DigestedPassword(clearTextPassword); DbDriver.updateCleanSQL( con,"UPDATE " + userTable.getTableName() + @@ -299,7 +302,7 @@ private UserLoginInfo.DigestedPassword updatePasswords(Connection con,KeyValue i return dbDigestedPassword; } -public void sendLostPassword(Connection con,String userid) throws SQLException, DataAccessException, ObjectNotFoundException { +public void sendLostPassword(Connection con, String userid, Mailer mailer) throws SQLException, DataAccessException, ObjectNotFoundException { User user = getUserFromUserid(con, userid); if(user == null){ throw new ObjectNotFoundException("User name "+userid+" not found."); @@ -309,14 +312,22 @@ public void sendLostPassword(Connection con,String userid) throws SQLException, try { //Reset User Password updatePasswords(con,userInfo.id,clearTextPassword); + + String subject = "re: VCell Info"; + String content = "Your password has been reset to '"+clearTextPassword+"'. Login with the new password and change your password as soon as possible. To change your password, log into VCell and select Account->'Update Registration Info...' from the Top Menu. Enter a new password where indicated."; + if (mailer != null) { + Mail mail = Mail.withText(userInfo.email, subject, content); + mailer.send(mail); + return; + } //Send new password to user BeanUtils.sendSMTP( PropertyLoader.getRequiredProperty(PropertyLoader.vcellSMTPHostName), Integer.parseInt(PropertyLoader.getRequiredProperty(PropertyLoader.vcellSMTPPort)), PropertyLoader.getRequiredProperty(PropertyLoader.vcellSMTPEmailAddress), userInfo.email, - "re: VCell Info", - "Your password has been reset to '"+clearTextPassword+"'. Login with the new password and change your password as soon as possible. To change your password, log into VCell and select Account->'Update Registration Info...' from the Top Menu. Enter a new password where indicated." + subject, + content ); } catch (Exception e) { lg.error(e.getMessage(), e); @@ -325,6 +336,10 @@ public void sendLostPassword(Connection con,String userid) throws SQLException, } +public void sendLostPassword(Connection con, String userid) throws SQLException, DataAccessException { + sendLostPassword(con, userid, null); +} + /** * getModel method comment. */ From c4756f71843eea6e0c3f4b10508c7326e5c6caa0 Mon Sep 17 00:00:00 2001 From: Ezequiel Valencia Date: Fri, 28 Jun 2024 12:55:20 -0400 Subject: [PATCH 03/21] Show Mapping Timeout Error Show an error after over 100 attempts are made to find if the user is mapped. This error asks the user to restart VCell application, and map their user on the website. --- .../cbit/vcell/client/VCellClientMain.java | 3 ++- .../java/cbit/vcell/desktop/ClientLogin.java | 26 +++++++++++++++---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/vcell-client/src/main/java/cbit/vcell/client/VCellClientMain.java b/vcell-client/src/main/java/cbit/vcell/client/VCellClientMain.java index cc1e6f00bc..c8c0e8d72d 100644 --- a/vcell-client/src/main/java/cbit/vcell/client/VCellClientMain.java +++ b/vcell-client/src/main/java/cbit/vcell/client/VCellClientMain.java @@ -70,6 +70,7 @@ public class VCellClientMain implements Callable { private String quarkusAPIHost = null; private boolean isHTTP = PropertyLoader.getBooleanProperty(PropertyLoader.isHTTP, false); + public static Injector injector; private VCellClientMain() { } @@ -117,7 +118,7 @@ public Integer call() throws Exception { int quarkusPort = quarkusAPIHost != null ? Integer.parseInt(quarkusAPIHost.split(":")[1]) : port; PropertyLoader.loadProperties(REQUIRED_CLIENT_PROPERTIES); - Injector injector = Guice.createInjector(new VCellClientModule(host, port, pathPrefixV0, + injector = Guice.createInjector(new VCellClientModule(host, port, pathPrefixV0, quarkusHost, quarkusPort)); this.vcellClient = injector.getInstance(VCellClient.class); diff --git a/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java b/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java index 5860fa1588..21224fccc1 100644 --- a/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java +++ b/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java @@ -1,14 +1,20 @@ package cbit.vcell.desktop; import cbit.vcell.client.DocumentWindowManager; -import cbit.vcell.client.RequestManager; import cbit.vcell.client.VCellClient; +import cbit.vcell.client.VCellClientMain; import cbit.vcell.client.server.ClientServerInfo; import cbit.vcell.client.task.AsynchClientTask; +import cbit.vcell.resource.PropertyLoader; import cbit.vcell.server.Auth0ConnectionUtils; -import cbit.vcell.server.VCellConnectionFactory; +import com.google.inject.Guice; +import com.google.inject.Inject; +import com.google.inject.Key; +import com.google.inject.name.Named; +import com.google.inject.name.Names; +import org.vcell.DependencyConstants; +import org.vcell.dependency.client.VCellClientModule; import org.vcell.util.document.User; -import org.vcell.util.document.UserLoginInfo; import javax.swing.*; import java.util.Hashtable; @@ -43,7 +49,6 @@ public void run(Hashtable hashTable) throws Exception { int accept = ClientLogin.showLoginPanel(); hashTable.put("login", ClientLogin.doesTheUserWantToLogin(accept)); hashTable.put("guest", ClientLogin.doesTheUserWantToBeGuest(accept)); - Auth0ConnectionUtils.setShowLoginPopUp(false); } } }; @@ -65,9 +70,13 @@ public void run(Hashtable hashTable) throws Exception { return task; } - public static AsynchClientTask connectToServer(Auth0ConnectionUtils auth0ConnectionUtils, ClientServerInfo clientServerInfo){ + @Inject + public static AsynchClientTask connectToServer(Auth0ConnectionUtils auth0ConnectionUtils, + ClientServerInfo clientServerInfo){ + AsynchClientTask task = new AsynchClientTask("Connecting to Server", AsynchClientTask.TASKTYPE_NONSWING_BLOCKING) { public void run(Hashtable hashTable) throws Exception { + String hostname = VCellClientMain.injector.getInstance(Key.get(String.class, Names.named(DependencyConstants.VCELL_QUARKUS_API_HOST))); // try server connection boolean login = (boolean)hashTable.get("login"); boolean isGuest = (boolean)hashTable.get("guest"); @@ -76,12 +85,19 @@ public void run(Hashtable hashTable) throws Exception { int numberOfPolls = 0; while(!auth0ConnectionUtils.isVCellIdentityMapped()){ if (numberOfPolls==100) { + String message = "Please restart the VCell application for we can't find your user. " + + "If you have not created " + + "a user on the website https://" + hostname + ", please do so. And if you have an existing user please " + + "follow the conversion process on the website."; + JOptionPane.showMessageDialog(null, message, + "Restart the Application", JOptionPane.ERROR_MESSAGE, null); return; } numberOfPolls++; Thread.sleep(5000); // Poll every 5 seconds } } + Auth0ConnectionUtils.setShowLoginPopUp(false); DocumentWindowManager currWindowManager = (DocumentWindowManager)hashTable.get("currWindowManager"); ClientServerInfo newClientServerInfo = isGuest ? VCellClient.createClientServerInfo(clientServerInfo, User.VCELL_GUEST_NAME) From c1abcc773ebd49e2ebab6882c168351b7a9d93b6 Mon Sep 17 00:00:00 2001 From: Ezequiel Valencia Date: Fri, 28 Jun 2024 15:22:45 -0400 Subject: [PATCH 04/21] Extend OIDC Callback Time Extend the amount of time allowed for the authenticated response to be given back to the application. --- .../java/org/vcell/restclient/auth/InteractiveLogin.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/vcell-restclient/src/main/java/org/vcell/restclient/auth/InteractiveLogin.java b/vcell-restclient/src/main/java/org/vcell/restclient/auth/InteractiveLogin.java index ab67da9dc1..a0c72eef0e 100644 --- a/vcell-restclient/src/main/java/org/vcell/restclient/auth/InteractiveLogin.java +++ b/vcell-restclient/src/main/java/org/vcell/restclient/auth/InteractiveLogin.java @@ -14,6 +14,7 @@ import com.sun.net.httpserver.HttpServer; import net.minidev.json.JSONObject; +import javax.swing.*; import java.awt.*; import java.io.BufferedReader; import java.io.IOException; @@ -155,11 +156,14 @@ private static AuthorizationResponse getAuthorizationResponseAutomated(int local System.out.println("opening browser to "+authRequestURI); Desktop.getDesktop().browse(authRequestURI); - System.out.println("waiting up to 10 seconds for authorization code from web server via queue"); + System.out.println("waiting up to 10 minutes for authorization code from web server via queue"); // wait for authorization response from web server - String authorizationCodeURI = authorizationCodeURIQueue.poll(60, TimeUnit.SECONDS); // wait for server to process the request + String authorizationCodeURI = authorizationCodeURIQueue.poll(600, TimeUnit.SECONDS); // wait for server to process the request System.out.println("authorization code " + authorizationCodeURI + " received from web server via queue"); if (authorizationCodeURI == null) { + String message = "Please restart the VCell application for the sign up time has expired."; + JOptionPane.showMessageDialog(null, message, + "Restart the Application", JOptionPane.ERROR_MESSAGE, null); throw new RuntimeException("Authorization code not received"); } authorizationResponse = AuthorizationResponse.parse(URI.create(authorizationCodeURI)); From c7f6f62ddbbbc77f07d0b20a773f842f2856efdc Mon Sep 17 00:00:00 2001 From: Ezequiel Valencia Date: Mon, 1 Jul 2024 10:57:08 -0400 Subject: [PATCH 05/21] Login Button Java Client --- .../vcell/client/desktop/DocumentWindow.java | 221 +++++------------- .../java/cbit/vcell/desktop/ClientLogin.java | 2 +- 2 files changed, 61 insertions(+), 162 deletions(-) diff --git a/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java b/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java index 6f6fdc0404..8d3fe079a8 100644 --- a/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java +++ b/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java @@ -16,13 +16,11 @@ import cbit.vcell.client.*; import cbit.vcell.client.constants.GuiConstants; import cbit.vcell.client.data.ExportedDataViewer; -import cbit.vcell.client.server.ConnectionStatus; -import cbit.vcell.client.server.DynamicClientProperties; -import cbit.vcell.client.server.ReconnectListener; -import cbit.vcell.client.server.Reconnector; +import cbit.vcell.client.server.*; import cbit.vcell.client.task.AsynchClientTask; import cbit.vcell.client.task.ClientTaskDispatcher; import cbit.vcell.client.task.LaunchVirtualFRAP; +import cbit.vcell.desktop.ClientLogin; import cbit.vcell.model.ReactionStep; import cbit.vcell.model.TransformMassActions; import cbit.vcell.model.TransformMassActions.TransformedReaction; @@ -30,6 +28,11 @@ import cbit.vcell.resource.OperatingSystemInfo; import cbit.vcell.resource.PropertyLoader; import cbit.vcell.resource.ResourceUtil; +import cbit.vcell.server.VCellConnectionFactory; +import com.google.inject.ConfigurationException; +import com.google.inject.Key; +import com.google.inject.name.Names; +import org.vcell.DependencyConstants; import org.vcell.client.logicalwindow.LWTopFrame; import org.vcell.documentation.VcellHelpViewer; import org.vcell.util.UtilCancelException; @@ -40,6 +43,7 @@ import org.vcell.util.gui.*; import org.vcell.util.gui.exporter.FileFilters; import org.vcell.util.importer.PathwayImportPanel.PathwayImportOption; +import scala.collection.mutable.HashTable; import javax.swing.*; import javax.swing.event.MenuEvent; @@ -72,6 +76,7 @@ public class DocumentWindow extends LWTopFrame implements TopLevelWindow, Reconn private JMenuItem ivjAbout_BoxMenuItem = null; private JMenuItem ivjManageUser = null; + private JMenuItem loginMenuItem = null; private JMenuItem ivjLogoutUser = null; private JMenuItem ivjCloseMenuItem = null; private JMenuBar ivjDocumentWindowJMenuBar = null; @@ -225,6 +230,9 @@ else if (e.getSource() == DocumentWindow.this.menuItemImportPathwayExample) Desktop.getDesktop().browse(new URI("https://vcell-stage.cam.uchc.edu/login_success")); } } + if (e.getSource() == DocumentWindow.this.getLoginItem()){ + login(); + } if (e.getSource() == DocumentWindow.this.getPermissionsMenuItem()) { getWindowManager().getRequestManager().accessPermissions(DocumentWindow.this, getWindowManager().getVCDocument()); } @@ -445,6 +453,16 @@ private javax.swing.JMenuItem getViewJobsMenuItem() { return viewJobsMenuItem; } +private JMenuItem getLoginItem(){ + if (loginMenuItem == null){ + loginMenuItem = new javax.swing.JMenuItem(); + loginMenuItem.setName("LoginMenuItem"); + loginMenuItem.setText("Login"); + loginMenuItem.setEnabled(false); + } + return loginMenuItem; +} + private JMenuItem getManageUserMenuItem(){ if (ivjManageUser == null){ ivjManageUser = new javax.swing.JMenuItem(); @@ -986,142 +1004,6 @@ private javax.swing.JMenu getOpenMenuItem() { } -//private static String createImageJServiceMenuText() { -// if(ImageJHelper.serviceExists()) { -// return "Stop FIJI (ImageJ) Service ("+ImageJHelper.getServiceURI().getPort()+")"; -// } -// return "Start FIJI (ImageJ) Service"; -//} -// -//private static final String IMAGEJ_PLUGIN_PATH = "IMAGEJ_PLUGIN_PATH"; -// -//private void startStopImageJService() { -// if(ImageJHelper.serviceExists()) { -// try { -// ImageJHelper.stopService(); -// } catch (Exception e) { -// e.printStackTrace(); -// DialogUtils.showErrorDialog(this, "Error stopping ImageJ Service: "+e.getMessage()); -// } -// }else { -// final String VC_PLUG_CONTINUE = "Continue"; -// final String CANCEL = "Cancel"; -// final String NEW_IJ_PLUGIN = "Install new plugin..."; -// final String CHANGE_IJ_PLUGIN = "Update plugin or Change path..."; -// Preferences prefs = Preferences.userNodeForPackage(DocumentWindow.class); -// String imageJVCellPluginVersion = "vcell-imagej-helper-"+TokenMangler.fixTokenStrict(VCellSoftwareVersion.fromSystemProperty().getSoftwareVersionString())+".jar"; -// String imageJPluginPath = prefs.get(IMAGEJ_PLUGIN_PATH, null); -// URL imageJVCellPluginURL = null; -// try { -// imageJVCellPluginURL = new URL(PropertyLoader.getRequiredProperty(PropertyLoader.imageJVcellPluginURL)+"/"+imageJVCellPluginVersion); -// } catch (Exception e1) { -// // TODO Auto-generated catch block -// e1.printStackTrace(); -// DialogUtils.showErrorDialog(this, "Error download URL: "+e1.getMessage()); -// return; -// } -// String downLoadOption = NEW_IJ_PLUGIN; -//// File ijPluginFile = null; -// File[] existingVCPlugins = new File[] {}; -// Boolean bSame = null; -// if(imageJPluginPath != null){ -// existingVCPlugins = (new File(imageJPluginPath)).listFiles(new FilenameFilter() { -// @Override -// public boolean accept(File dir, String name) { -// // TODO Auto-generated method stub -// return name.startsWith("vcell-imagej-helper-") && name.endsWith(".jar"); -// } -// }); -// if(existingVCPlugins.length > 1) { -// StringBuffer sb = new StringBuffer(); -// for (int i = 0; i < existingVCPlugins.length; i++) { -// sb.append((i!=0?"\n":"")+existingVCPlugins[i].getName()); -// } -// DialogUtils.showWarningDialog(this, "Found "+existingVCPlugins.length+" installed VCell Imagej plugins:\n"+ -// sb.toString()+"\nRemove the "+existingVCPlugins.length+" plugins from ImageJ directory and start service again.\nPlugin path="+imageJPluginPath); -// return; -// } -// if(existingVCPlugins.length == 1) { -// downLoadOption = CHANGE_IJ_PLUGIN; -// if(imageJVCellPluginVersion.equals(existingVCPlugins[0].getName())) { -// bSame = true; -// }else { -// bSame = false; -// } -// } -// } -// String[] options = (existingVCPlugins.length==0?new String[] {downLoadOption,CANCEL}:new String[] {VC_PLUG_CONTINUE,downLoadOption,CANCEL}); -// String result = DialogUtils.showWarningDialog(this, -// "Start VCell's FIJI Service", -// "VCell's FIJI (ImageJ) service allows scripts running in FIJI to communicate with VCell "+ -// "allowing query, control, and transfer of model/simulation data between VCell and FIJI.\n"+ -// "(see Help->'VCell Help' then search 'start imagej service')\n"+ -// (existingVCPlugins.length == 0?"Install FIJI (https://imagej.net/Fiji) before starting this service.": -// "Current plugin path:\n"+existingVCPlugins[0].getAbsolutePath()+"\n"+"Available version="+imageJVCellPluginVersion) -// ,options, CANCEL); -// if(NEW_IJ_PLUGIN.equals(result) || CHANGE_IJ_PLUGIN.equals(result)) { -// File selectedDir = null; -// if(OperatingSystemInfo.getInstance().isMac()) { -// Frame f = (Frame)GeneralGuiUtils.findTypeParentOfComponent(this, Frame.class); -// System.setProperty("apple.awt.fileDialogForDirectories", "true"); -// FileDialog fdiag = new FileDialog(f); -// fdiag.setMultipleMode(false); -// if(existingVCPlugins.length == 1) { -// fdiag.setDirectory(existingVCPlugins[0].getParentFile().getParentFile().getAbsolutePath()); -// fdiag.setDirectory(existingVCPlugins[0].getParentFile().getAbsolutePath()); -// } -// fdiag.setVisible(true); -// File[] files = fdiag.getFiles(); -// if(files == null || files.length == 0) { -// return; -// } -// selectedDir = files[0]; -// }else { -// VCFileChooser vcf = new VCFileChooser((existingVCPlugins.length == 0?ResourceUtil.getUserHomeDir():existingVCPlugins[0].getParentFile().getParentFile())); -// vcf.setMultiSelectionEnabled(false); -// if(existingVCPlugins.length == 1) { -// vcf.setSelectedFile(existingVCPlugins[0].getParentFile()); -// } -// vcf.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); -// int returnVal = vcf.showOpenDialog(this); -// if(returnVal != JFileChooser.APPROVE_OPTION) { -// return; -// } -// selectedDir = vcf.getSelectedFile(); -// } -// try { -// if(!selectedDir.getName().equals("plugins")) { -// String pluginWarn = DialogUtils.showOKCancelWarningDialog(this, "Unexpected plugins directory warning", "path "+selectedDir.getAbsolutePath()+"\nexpected to end with 'plugins'"); -// if(pluginWarn == null || !pluginWarn.equals(SimpleUserMessage.OPTION_OK)) { -// return; -// } -// } -// final File pluginDestination = new File(selectedDir,imageJVCellPluginVersion); -// FileUtils.copyURLToFile(imageJVCellPluginURL, pluginDestination); -// prefs.put(IMAGEJ_PLUGIN_PATH, selectedDir.getAbsolutePath()); -// if(existingVCPlugins.length != 0 && bSame!=null && !bSame) { -// if(!existingVCPlugins[0].delete()) { -// throw new Exception("Couldn't delete old plugin "+existingVCPlugins[0].getAbsolutePath()+". Please stop Imagej and manually remove the old plugin file."); -// } -// } -// DialogUtils.showInfoDialog(this, "VCell ImageJ plugin installed at:\n"+pluginDestination.getAbsolutePath()); -// } catch (Exception e) { -// e.printStackTrace(); -// DialogUtils.showErrorDialog(this, e.getMessage()); -// return; -// } -// }else if(!VC_PLUG_CONTINUE.equals(result)){ -// return; -// } -// try { -// ImageJHelper.startService(null); -// } catch (Exception e) { -// e.printStackTrace(); -// DialogUtils.showErrorDialog(this, "error starting ImageJ Service: "+e.getMessage()); -// } -// } -// -//} private JMenuItem getRunVFrapItem() { if (ivjRunVFrapMenuItem == null) { @@ -1226,33 +1108,16 @@ private javax.swing.JMenu getServerMenu() { if (ivjServerMenu == null) { try { ivjServerMenu = new javax.swing.JMenu(); -// //getImageJServiceMenuItem().setText(createImageJServiceMenuText()); -// ivjServerMenu.addMenuListener(new MenuListener() { -// @Override -// public void menuSelected(MenuEvent e) { -// getImageJServiceMenuItem().setText(createImageJServiceMenuText()); -// } -// @Override -// public void menuDeselected(MenuEvent e) { -// } -// @Override -// public void menuCanceled(MenuEvent e) { -// } -// }); ivjServerMenu.setName("ServerMenu"); ivjServerMenu.setText("Account"); + ivjServerMenu.add(getLoginItem()); + ivjServerMenu.add(getLogOutMenuItem()); ivjServerMenu.add(getManageUserMenuItem()); ivjServerMenu.add(getChange_ProxyMenuItem()); - ivjServerMenu.add(getLogOutMenuItem()); ivjServerMenu.add(getReconnectUserMenuItem()); -// ivjServerMenu.add(getImageJServiceMenuItem()); // moved to Tools ivjServerMenu.add(new JSeparator()); ivjServerMenu.add(getViewJobsMenuItem()); - // user code begin {1} - // user code end } catch (java.lang.Throwable ivjExc) { - // user code begin {2} - // user code end handleException(ivjExc); } } @@ -1517,6 +1382,7 @@ private void initConnections() throws java.lang.Exception { getChange_ProxyMenuItem().addActionListener(ivjEventHandler); getLogOutMenuItem().addActionListener(ivjEventHandler); getReconnectUserMenuItem().addActionListener(ivjEventHandler); + getLoginItem().addActionListener(ivjEventHandler); // getImageJServiceMenuItem().addActionListener(ivjEventHandler); getJMenuItemRevert().addActionListener(ivjEventHandler); getJMenuItemCompare().addActionListener(ivjEventHandler); @@ -1629,6 +1495,35 @@ private void openDocument(java.awt.event.ActionEvent actionEvent) { } } +private void login(){ + Hashtable hash = new Hashtable(); + VCellConnectionFactory vcellConnectionFactory = VCellClientMain.injector.getInstance(VCellConnectionFactory.class); + + String host = VCellClientMain.injector.getInstance(Key.get(String.class, Names.named(DependencyConstants.VCELL_API_HOST))); + String port; + String pathPrefix; + try{ + port = VCellClientMain.injector.getInstance(Key.get(String.class, Names.named(DependencyConstants.VCELL_API_PORT))); + } + catch (ConfigurationException e){ + port = "443"; + } + try { + pathPrefix = VCellClientMain.injector.getInstance(Key.get(String.class, Names.named(DependencyConstants.VCELL_API_PATH_PREFIX_V0))); + } + catch (ConfigurationException e){ + pathPrefix = ""; + } + + AsynchClientTask task1a = ClientLogin.popupLogin(); + AsynchClientTask task1b = ClientLogin.loginWithAuth0(vcellConnectionFactory.getAuth0ConnectionUtils()); + AsynchClientTask task2 = ClientLogin.connectToServer(vcellConnectionFactory.getAuth0ConnectionUtils(), + ClientServerInfo.createRemoteServerInfo(host, Integer.parseInt(port), pathPrefix, null)); + + AsynchClientTask[] taskArray = new AsynchClientTask[] { task1a, task1b, task2}; + ClientTaskDispatcher.dispatch(null, hash, taskArray); +} + private void reconnect() { getWindowManager().reconnect(); @@ -1749,7 +1644,8 @@ public void updateConnectionStatus(ConnectionStatus connStatus) { status = ""; getJProgressBarConnection().setString("NOT CONNECTED"); getJProgressBarConnection().setValue(0); - getManageUserMenuItem().setEnabled(true); + getManageUserMenuItem().setEnabled(false); + getLoginItem().setEnabled(true); getLogOutMenuItem().setEnabled(false); getReconnectUserMenuItem().setEnabled(false); getViewJobsMenuItem().setEnabled(false); @@ -1776,6 +1672,7 @@ public void updateConnectionStatus(ConnectionStatus connStatus) { getJProgressBarConnection().setString("CONNECTED (" + connStatus.getUserName() + ")"); getJProgressBarConnection().setValue(100); getManageUserMenuItem().setEnabled(true); + getLoginItem().setEnabled(false); getLogOutMenuItem().setEnabled(true); getReconnectUserMenuItem().setEnabled(true); getViewJobsMenuItem().setEnabled(true); @@ -1817,6 +1714,7 @@ public void updateConnectionStatus(ConnectionStatus connStatus) { getJProgressBarConnection().setString("INITIALIZING..."); getJProgressBarConnection().setValue(0); getManageUserMenuItem().setEnabled(false); + getLoginItem().setEnabled(false); getLogOutMenuItem().setEnabled(false); getReconnectUserMenuItem().setEnabled(false); enableOpenMenuItems(false); @@ -1841,7 +1739,8 @@ public void updateConnectionStatus(ConnectionStatus connStatus) { status = "Server: " + connStatus.getApihost()+":"+connStatus.getApiport() + " User: " + connStatus.getUserName(); getJProgressBarConnection().setString("DISCONNECTED"); getJProgressBarConnection().setValue(0); - getManageUserMenuItem().setEnabled(true); + getManageUserMenuItem().setEnabled(false); + getLoginItem().setEnabled(false); getLogOutMenuItem().setEnabled(false); getReconnectUserMenuItem().setEnabled(true); enableOpenMenuItems(false); diff --git a/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java b/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java index 21224fccc1..8890308baf 100644 --- a/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java +++ b/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java @@ -96,8 +96,8 @@ public void run(Hashtable hashTable) throws Exception { numberOfPolls++; Thread.sleep(5000); // Poll every 5 seconds } + Auth0ConnectionUtils.setShowLoginPopUp(false); } - Auth0ConnectionUtils.setShowLoginPopUp(false); DocumentWindowManager currWindowManager = (DocumentWindowManager)hashTable.get("currWindowManager"); ClientServerInfo newClientServerInfo = isGuest ? VCellClient.createClientServerInfo(clientServerInfo, User.VCELL_GUEST_NAME) From f2c2afe39c16ae14b7a4ff2f8ab90dd489abc880 Mon Sep 17 00:00:00 2001 From: Ezequiel Valencia Date: Mon, 1 Jul 2024 12:43:08 -0400 Subject: [PATCH 06/21] Disable Mail Test The mail test required quarkus dependency within the VCell-Server module, so it's now been disabled. --- .../org/vcell/restq/apiclient/UsersApiTest.java | 4 ++-- vcell-server/pom.xml | 15 --------------- .../java/cbit/vcell/modeldb/UserDbDriver.java | 15 +-------------- 3 files changed, 3 insertions(+), 31 deletions(-) diff --git a/vcell-rest/src/test/java/org/vcell/restq/apiclient/UsersApiTest.java b/vcell-rest/src/test/java/org/vcell/restq/apiclient/UsersApiTest.java index 255b8ddc91..6ba898cb62 100644 --- a/vcell-rest/src/test/java/org/vcell/restq/apiclient/UsersApiTest.java +++ b/vcell-rest/src/test/java/org/vcell/restq/apiclient/UsersApiTest.java @@ -211,7 +211,7 @@ public void testOldAPITokenGenerationForMultipleGuests() throws ApiException { Assertions.assertNotEquals(guestApiToken.getToken(), secondGuestApiToken.getToken()); } - @Test + public void testResetPassword() throws SQLException, DataAccessException { PropertyLoader.setProperty(PropertyLoader.vcellSMTPHostName, "host"); PropertyLoader.setProperty(PropertyLoader.vcellSMTPPort, "9090"); @@ -227,7 +227,7 @@ public void testResetPassword() throws SQLException, DataAccessException { Assertions.assertEquals(new UserLoginInfo.DigestedPassword(startPassword).getString(), oldUserLoginInfo.digestedPassword0.getString()); - userDbDriver.sendLostPassword(connection, TestEndpointUtils.administratorUser.getName(), mailer); + userDbDriver.sendLostPassword(connection, TestEndpointUtils.administratorUser.getName()); List mails = mockMailbox.getMailsSentTo(oldUserLoginInfo.email); Mail mail = mails.get(0); String passwordReset = mail.getText(); diff --git a/vcell-server/pom.xml b/vcell-server/pom.xml index b63caa1d3c..5daa02e5d9 100644 --- a/vcell-server/pom.xml +++ b/vcell-server/pom.xml @@ -124,10 +124,6 @@ ${activemq-broker.version} test - - io.quarkus - quarkus-mailer - org.postgresql @@ -142,15 +138,4 @@ - - - - ${quarkus.platform.group-id} - ${quarkus.platform.artifact-id} - ${quarkus.platform.version} - pom - import - - - diff --git a/vcell-server/src/main/java/cbit/vcell/modeldb/UserDbDriver.java b/vcell-server/src/main/java/cbit/vcell/modeldb/UserDbDriver.java index 20d64109bb..326670cf58 100644 --- a/vcell-server/src/main/java/cbit/vcell/modeldb/UserDbDriver.java +++ b/vcell-server/src/main/java/cbit/vcell/modeldb/UserDbDriver.java @@ -12,9 +12,6 @@ import cbit.vcell.modeldb.ApiAccessToken.AccessTokenStatus; import cbit.vcell.resource.PropertyLoader; -import io.quarkus.mailer.Mail; -import io.quarkus.mailer.Mailer; -import io.quarkus.mailer.reactive.ReactiveMailer; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.jose4j.jwt.MalformedClaimException; @@ -302,7 +299,7 @@ public UserLoginInfo.DigestedPassword updatePasswords(Connection con,KeyValue id return dbDigestedPassword; } -public void sendLostPassword(Connection con, String userid, Mailer mailer) throws SQLException, DataAccessException, ObjectNotFoundException { +public void sendLostPassword(Connection con, String userid) throws SQLException, DataAccessException, ObjectNotFoundException { User user = getUserFromUserid(con, userid); if(user == null){ throw new ObjectNotFoundException("User name "+userid+" not found."); @@ -315,11 +312,6 @@ public void sendLostPassword(Connection con, String userid, Mailer mailer) throw String subject = "re: VCell Info"; String content = "Your password has been reset to '"+clearTextPassword+"'. Login with the new password and change your password as soon as possible. To change your password, log into VCell and select Account->'Update Registration Info...' from the Top Menu. Enter a new password where indicated."; - if (mailer != null) { - Mail mail = Mail.withText(userInfo.email, subject, content); - mailer.send(mail); - return; - } //Send new password to user BeanUtils.sendSMTP( PropertyLoader.getRequiredProperty(PropertyLoader.vcellSMTPHostName), @@ -335,11 +327,6 @@ public void sendLostPassword(Connection con, String userid, Mailer mailer) throw } } - -public void sendLostPassword(Connection con, String userid) throws SQLException, DataAccessException { - sendLostPassword(con, userid, null); -} - /** * getModel method comment. */ From ec5f331b0c8b480d74c1aaaff87a25708b465258 Mon Sep 17 00:00:00 2001 From: Ezequiel Valencia Date: Mon, 1 Jul 2024 14:50:06 -0400 Subject: [PATCH 07/21] Change Error Text --- .../src/main/java/cbit/vcell/desktop/ClientLogin.java | 7 +++---- .../java/org/vcell/restclient/auth/InteractiveLogin.java | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java b/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java index 8890308baf..4096a1db50 100644 --- a/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java +++ b/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java @@ -85,10 +85,9 @@ public void run(Hashtable hashTable) throws Exception { int numberOfPolls = 0; while(!auth0ConnectionUtils.isVCellIdentityMapped()){ if (numberOfPolls==100) { - String message = "Please restart the VCell application for we can't find your user. " + - "If you have not created " + - "a user on the website https://" + hostname + ", please do so. And if you have an existing user please " + - "follow the conversion process on the website."; + String message = "Please restart the VCell application for we can't find your UserID. " + + "If you have not created/claimed " + + "a UserID on the website https://" + hostname + "/profile, please do so."; JOptionPane.showMessageDialog(null, message, "Restart the Application", JOptionPane.ERROR_MESSAGE, null); return; diff --git a/vcell-restclient/src/main/java/org/vcell/restclient/auth/InteractiveLogin.java b/vcell-restclient/src/main/java/org/vcell/restclient/auth/InteractiveLogin.java index a0c72eef0e..085f54a074 100644 --- a/vcell-restclient/src/main/java/org/vcell/restclient/auth/InteractiveLogin.java +++ b/vcell-restclient/src/main/java/org/vcell/restclient/auth/InteractiveLogin.java @@ -161,7 +161,7 @@ private static AuthorizationResponse getAuthorizationResponseAutomated(int local String authorizationCodeURI = authorizationCodeURIQueue.poll(600, TimeUnit.SECONDS); // wait for server to process the request System.out.println("authorization code " + authorizationCodeURI + " received from web server via queue"); if (authorizationCodeURI == null) { - String message = "Please restart the VCell application for the sign up time has expired."; + String message = "If you desire to login, please click Account -> Login, for the login window has expired."; JOptionPane.showMessageDialog(null, message, "Restart the Application", JOptionPane.ERROR_MESSAGE, null); throw new RuntimeException("Authorization code not received"); From c255e1f8bd6f28df21dcddb8fc7e05b3a02db0d5 Mon Sep 17 00:00:00 2001 From: Ezequiel Valencia Date: Tue, 2 Jul 2024 09:29:02 -0400 Subject: [PATCH 08/21] Logan Suggestions To Auth Flow --- .../vcell/client/ClientRequestManager.java | 8 ++++--- .../vcell/client/desktop/DocumentWindow.java | 4 ++-- .../java/cbit/vcell/desktop/ClientLogin.java | 21 ++++++++++++------- .../restclient/auth/InteractiveLogin.java | 2 +- 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/vcell-client/src/main/java/cbit/vcell/client/ClientRequestManager.java b/vcell-client/src/main/java/cbit/vcell/client/ClientRequestManager.java index 8ad26e4f89..fd540b0a2f 100644 --- a/vcell-client/src/main/java/cbit/vcell/client/ClientRequestManager.java +++ b/vcell-client/src/main/java/cbit/vcell/client/ClientRequestManager.java @@ -658,8 +658,8 @@ public void connectToServer(TopLevelWindowManager requester, ClientServerInfo cl public void logOut(final TopLevelWindowManager requester){ JDialog dialog = new JDialog(); dialog.setAlwaysOnTop(true); - int confirm = JOptionPane.showOptionDialog(dialog, "You are about to logout of VCell, and in doing so close the app." + - "To complete this process you'll need to logout on the website as well. Do you want to continue?", + int confirm = JOptionPane.showOptionDialog(dialog, "You are about to logout of VCell, and in doing so close the app. " + + "To complete this process you'll be redirected to a logout page. Do you want to continue?", "Logout", JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE, null, new String[] { "Continue", "Cancel" }, "Continue"); if (confirm == JOptionPane.OK_OPTION) { @@ -670,7 +670,9 @@ public void logOut(final TopLevelWindowManager requester){ Hashtable hash = new Hashtable(); Auth0ConnectionUtils auth0ConnectionUtils = getClientServerManager().getAuth0ConnectionUtils(); - auth0ConnectionUtils.logOut(); + if (!getClientServerInfo().getUsername().equals(User.VCELL_GUEST_NAME)){ + auth0ConnectionUtils.logOut(); + } Auth0ConnectionUtils.setShowLoginPopUp(true); AsynchClientTask waitTask = new AsynchClientTask("wait for window closing", diff --git a/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java b/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java index 8d3fe079a8..8266e02532 100644 --- a/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java +++ b/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java @@ -227,7 +227,7 @@ else if (e.getSource() == DocumentWindow.this.menuItemImportPathwayExample) getWindowManager().showFieldDataWindow(); if (e.getSource() == DocumentWindow.this.getManageUserMenuItem()){ if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)){ - Desktop.getDesktop().browse(new URI("https://vcell-stage.cam.uchc.edu/login_success")); + Desktop.getDesktop().browse(new URI("https://vcell-stage.cam.uchc.edu/profile")); } } if (e.getSource() == DocumentWindow.this.getLoginItem()){ @@ -1515,7 +1515,7 @@ private void login(){ pathPrefix = ""; } - AsynchClientTask task1a = ClientLogin.popupLogin(); + AsynchClientTask task1a = ClientLogin.popupLogin(false); AsynchClientTask task1b = ClientLogin.loginWithAuth0(vcellConnectionFactory.getAuth0ConnectionUtils()); AsynchClientTask task2 = ClientLogin.connectToServer(vcellConnectionFactory.getAuth0ConnectionUtils(), ClientServerInfo.createRemoteServerInfo(host, Integer.parseInt(port), pathPrefix, null)); diff --git a/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java b/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java index 4096a1db50..6d1efcc9df 100644 --- a/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java +++ b/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java @@ -5,15 +5,11 @@ import cbit.vcell.client.VCellClientMain; import cbit.vcell.client.server.ClientServerInfo; import cbit.vcell.client.task.AsynchClientTask; -import cbit.vcell.resource.PropertyLoader; import cbit.vcell.server.Auth0ConnectionUtils; -import com.google.inject.Guice; import com.google.inject.Inject; import com.google.inject.Key; -import com.google.inject.name.Named; import com.google.inject.name.Names; import org.vcell.DependencyConstants; -import org.vcell.dependency.client.VCellClientModule; import org.vcell.util.document.User; import javax.swing.*; @@ -22,13 +18,19 @@ public class ClientLogin { - public static int showLoginPanel(){ + public static int showFullLoginPanel(){ int answer = JOptionPane.showOptionDialog(null, - "VCell is going to redirect you to your browser to login. Do you wish to proceed?","Login Popup", + "VCell is going to redirect you to your browser to login. Do you wish to proceed?","VCell Login", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, new String[] {"Login", "Offline", "Guest"}, "Login"); return answer; } + public static int showAcceptLoginPanel(){ + int answer = JOptionPane.showOptionDialog(null, "VCell is going to redirect you to your browser to login. Do you wish to proceed?", + "VCell Login", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, null, new String[] {"Okay", "Cancel"}, "Okay"); + return answer; + } + public static boolean doesTheUserWantToLogin(int answer){ return !(answer == JOptionPane.NO_OPTION || answer == JOptionPane.CLOSED_OPTION); } @@ -37,8 +39,11 @@ public static boolean doesTheUserWantToBeGuest(int answer){ return (answer == JOptionPane.CANCEL_OPTION); } - public static AsynchClientTask popupLogin(){ + return popupLogin(true); + } + + public static AsynchClientTask popupLogin(boolean showFullPopup){ AsynchClientTask task = new AsynchClientTask("Popup Login...", AsynchClientTask.TASKTYPE_SWING_BLOCKING) { @Override public void run(Hashtable hashTable) throws Exception { @@ -46,7 +51,7 @@ public void run(Hashtable hashTable) throws Exception { hashTable.put("login", true); hashTable.put("guest", false); if(showPopupMenu){ - int accept = ClientLogin.showLoginPanel(); + int accept = showFullPopup ? ClientLogin.showFullLoginPanel() : ClientLogin.showAcceptLoginPanel(); hashTable.put("login", ClientLogin.doesTheUserWantToLogin(accept)); hashTable.put("guest", ClientLogin.doesTheUserWantToBeGuest(accept)); } diff --git a/vcell-restclient/src/main/java/org/vcell/restclient/auth/InteractiveLogin.java b/vcell-restclient/src/main/java/org/vcell/restclient/auth/InteractiveLogin.java index 085f54a074..0bef1ea19c 100644 --- a/vcell-restclient/src/main/java/org/vcell/restclient/auth/InteractiveLogin.java +++ b/vcell-restclient/src/main/java/org/vcell/restclient/auth/InteractiveLogin.java @@ -183,7 +183,7 @@ private static void pingHttpServer(URL url, String expectedPingResponse) throws //Thread.sleep(1000); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("GET"); - con.setConnectTimeout(1000); + con.setConnectTimeout(600 * 100); //milliseconds to seconds con.connect(); int responseCode = con.getResponseCode(); if (responseCode != 200) { From ecbcf5c240ce80c7727fcd6122b89953ae194a61 Mon Sep 17 00:00:00 2001 From: Ezequiel Valencia Date: Tue, 2 Jul 2024 15:23:31 -0400 Subject: [PATCH 09/21] Revert "Merge pull request #1286 from virtualcell/RemoveGeometriesOptions" This reverts commit 34451f7680e4bb397eca685841342c2b272d86bd, reversing changes made to c7b81fbc9145c072f75ec37bb2be315ebd63d178. --- .../vcell/client/desktop/DocumentWindow.java | 3371 +++++++++-------- 1 file changed, 1694 insertions(+), 1677 deletions(-) diff --git a/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java b/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java index f297fdc217..6f6fdc0404 100644 --- a/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java +++ b/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java @@ -65,208 +65,208 @@ @SuppressWarnings("serial") public class DocumentWindow extends LWTopFrame implements TopLevelWindow, ReconnectListener { - @SuppressWarnings("unused") //PENDING Window Manager redesign - private final static String HelpViewerContextObject = "HelpViewerWindow"; // this object instance is the context for the help ChildWindow + @SuppressWarnings("unused") //PENDING Window Manager redesign + private final static String HelpViewerContextObject = "HelpViewerWindow"; // this object instance is the context for the help ChildWindow private static final String notificationsUrl = "https://vcell.org/webstart/VCell_alert/VCell_Alert.html"; - private final ChildWindowManager childWindowManager; - - private JMenuItem ivjAbout_BoxMenuItem = null; - private JMenuItem ivjManageUser = null; - private JMenuItem ivjLogoutUser = null; - private JMenuItem ivjCloseMenuItem = null; - private JMenuBar ivjDocumentWindowJMenuBar = null; - private final IvjEventHandler ivjEventHandler = new IvjEventHandler(); - private JMenuItem ivjExitMenuItem = null; - private JMenu ivjFileMenu = null; - private JMenu ivjHelpMenu = null; - private JMenu ivjNewMenuItem = null; - private JMenu ivjOpenMenuItem = null; - //private JMenu recentMenuItem = new JMenu("Open Recent..."); - private JMenuItem ivjReconnectMenuItem = null; - // private JMenuItem ivjImageJServiceMenuItem = null; - private JMenuItem ivjSave_AsMenuItem = null; - private JMenuItem ivjSave_AsLocalMenuItem = null; - private JMenuItem ivjSave_VersionMenuItem = null; - private JMenuItem ivjSaveMenuItem = null; - private JMenu ivjServerMenu = null; - private JCheckBoxMenuItem ivjStatusbarMenuItem = null; - private JPanel ivjStatusBarPane = null; - //-------------------------------------- - private JSeparator ivjJSeparator6 = null; - private JMenuItem ivjJMenuItemNewBioModel = null; - private JMenuItem ivjJMenuItemOpenBioModel = null; - private JMenuItem ivjJMenuItemOpenLocal = null; - private JMenuItem ivjJMenuItemOpenMathModel = null; - private JProgressBar ivjJProgressBarMemory = null; - private DocumentWindowManager fieldWindowManager = null; - private JMenuItem ivjJMenuItemExport = null; - private JMenuItem menuItemImport = null; - private JProgressBar ivjJProgressBarConnection = null; - private JMenuItem ivjJMenuItemCompare = null; - private JMenuItem ivjJMenuItemRevert = null; - private JMenuItem ivjMathFromBioMenuItem = null; - private JMenu ivjMathMenu = null; - private JMenuItem ivjNonSpatialMenuItem = null; - private JMenuItem ivjSpatialExistingMenuItem = null; - private JMenuItem ivjSpatialCreateNewMenuItem = null; - // private JMenuItem ivjEdit_Annotation_JMenuItem = null; - private JMenuItem ivjTestingFrameworkMenuItem = null; - private JMenuItem ivjJMenuItemOnlineHelp = null; - private JMenuItem ivjJMenuItemOnlineSupport = null; - private JMenuItem ivjJMenuItemDiscussionGroup = null; - private JMenuItem ivjJMenuItemManagePermissions = null; - private JMenuItem ivjJMenuItemOnlinePublish = null; - private JMenuItem jMenuItemGrantPermissionsToVCellSupport = null; - - private JMenuItem ivjJMenuItemEmailSupport = null; - private JMenuItem newHelpMenuItem = null; - // private JMenuItem ivjRunBNGMenuItem = null; - private JMenuItem ivjRunVFrapMenuItem = null; - //Added Oct. 17th, 2007. To put a tool menu in - private JMenu toolMenu = null; - private JMenuItem transMAMenuItem = null; - private JMenuItem viewJobsMenuItem = null; - private JMenuItem jMenuItemPermissions = null; - private JLabel warningText = null; - private JLabel iconText = null; - private JDialog viewSpeciesDialog = null; - - private JMenuItem exportedDataViewer = null; - - private final JMenuItem menuItemImportPathwayWebLocation = null; - private final JMenuItem menuItemImportPathwayFile = null; - private final JMenuItem menuItemImportPathwayExample = null; - - class IvjEventHandler implements java.awt.event.ActionListener, java.awt.event.ItemListener, java.awt.event.MouseListener { - public void actionPerformed(java.awt.event.ActionEvent e) { - try { - if (e.getSource() == DocumentWindow.this.getAbout_BoxMenuItem()) + private final ChildWindowManager childWindowManager; + + private JMenuItem ivjAbout_BoxMenuItem = null; + private JMenuItem ivjManageUser = null; + private JMenuItem ivjLogoutUser = null; + private JMenuItem ivjCloseMenuItem = null; + private JMenuBar ivjDocumentWindowJMenuBar = null; + private IvjEventHandler ivjEventHandler = new IvjEventHandler(); + private JMenuItem ivjExitMenuItem = null; + private JMenu ivjFileMenu = null; + private JMenu ivjHelpMenu = null; + private JMenu ivjNewMenuItem = null; + private JMenu ivjOpenMenuItem = null; + //private JMenu recentMenuItem = new JMenu("Open Recent..."); + private JMenuItem ivjReconnectMenuItem = null; +// private JMenuItem ivjImageJServiceMenuItem = null; + private JMenuItem ivjSave_AsMenuItem = null; + private JMenuItem ivjSave_AsLocalMenuItem = null; + private JMenuItem ivjSave_VersionMenuItem = null; + private JMenuItem ivjSaveMenuItem = null; + private JMenu ivjServerMenu = null; + private JCheckBoxMenuItem ivjStatusbarMenuItem = null; + private JPanel ivjStatusBarPane = null; + //-------------------------------------- + private JSeparator ivjJSeparator6 = null; + private JMenuItem ivjJMenuItemNewBioModel = null; + private JMenuItem ivjJMenuItemOpenBioModel = null; + private JMenuItem ivjJMenuItemOpenGeometry = null; + private JMenuItem ivjJMenuItemOpenLocal = null; + private JMenuItem ivjJMenuItemOpenMathModel = null; + private JProgressBar ivjJProgressBarMemory = null; + private DocumentWindowManager fieldWindowManager = null; + private JMenuItem ivjJMenuItemExport = null; + private JMenuItem menuItemImport = null; + private JProgressBar ivjJProgressBarConnection = null; + private JMenuItem ivjJMenuItemCompare = null; + private JMenuItem ivjJMenuItemRevert = null; + private JMenuItem ivjGeometryMenu = null; + private JMenuItem ivjMathFromBioMenuItem = null; + private JMenu ivjMathMenu = null; + private JMenuItem ivjNonSpatialMenuItem = null; + private JMenuItem ivjSpatialExistingMenuItem = null; + private JMenuItem ivjSpatialCreateNewMenuItem = null; +// private JMenuItem ivjEdit_Annotation_JMenuItem = null; + private JMenuItem ivjTestingFrameworkMenuItem = null; + private JMenuItem ivjJMenuItemOnlineHelp = null; + private JMenuItem ivjJMenuItemOnlineSupport = null; + private JMenuItem ivjJMenuItemDiscussionGroup = null; + private JMenuItem ivjJMenuItemManagePermissions = null; + private JMenuItem ivjJMenuItemOnlinePublish = null; + private JMenuItem jMenuItemGrantPermissionsToVCellSupport = null; + + private JMenuItem ivjJMenuItemEmailSupport = null; + private JMenuItem newHelpMenuItem = null; +// private JMenuItem ivjRunBNGMenuItem = null; + private JMenuItem ivjRunVFrapMenuItem = null; + //Added Oct. 17th, 2007. To put a tool menu in + private JMenu toolMenu = null; + private JMenuItem transMAMenuItem = null; + private JMenuItem viewJobsMenuItem = null; + private JMenuItem jMenuItemPermissions = null; + private JLabel warningText = null; + private JLabel iconText = null; + private JDialog viewSpeciesDialog = null; + + private JMenuItem exportedDataViewer = null; + + private JMenuItem menuItemImportPathwayWebLocation = null; + private JMenuItem menuItemImportPathwayFile = null; + private JMenuItem menuItemImportPathwayExample = null; + +class IvjEventHandler implements java.awt.event.ActionListener, java.awt.event.ItemListener, java.awt.event.MouseListener { + public void actionPerformed(java.awt.event.ActionEvent e) { + try { + if (e.getSource() == DocumentWindow.this.getAbout_BoxMenuItem()) showAboutBox(DocumentWindow.this); - if (e.getSource() == DocumentWindow.this.getCloseMenuItem()) - DocumentWindow.this.getWindowManager().closeWindow(); - if (e.getSource() == DocumentWindow.this.getExitMenuItem()) - DocumentWindow.this.getWindowManager().exitApplication(); - if (e.getSource() == DocumentWindow.this.getJMenuItemNewBioModel()) - DocumentWindow.this.newDocument(e); - if (e.getSource() == DocumentWindow.this.getJMenuItemOpenBioModel()) - DocumentWindow.this.openDocument(e); - if (e.getSource() == DocumentWindow.this.getJMenuItemOpenLocal()) - DocumentWindow.this.importExternalDocument(); - if (e.getSource() == DocumentWindow.this.getJMenuItemOpenMathModel()) - DocumentWindow.this.openDocument(e); - if (e.getSource() == DocumentWindow.this.getSaveMenuItem()) - DocumentWindow.this.saveDocument(true); - if (e.getSource() == DocumentWindow.this.getSave_AsMenuItem()) - DocumentWindow.this.getWindowManager().saveDocumentAsNew(); - if (e.getSource() == DocumentWindow.this.getSave_AsLocalMenuItem()) - DocumentWindow.this.saveAsLocal(); - try { - if (e.getSource() == DocumentWindow.this.getJMenuItemImport()) - DocumentWindow.this.importExternalDocument(); - if (e.getSource() == DocumentWindow.this.menuItemImportPathwayWebLocation) - DocumentWindow.this.importPathway(PathwayImportOption.Web_Location); - else if (e.getSource() == DocumentWindow.this.menuItemImportPathwayFile) - DocumentWindow.this.importPathway(PathwayImportOption.File); - else if (e.getSource() == DocumentWindow.this.menuItemImportPathwayExample) - DocumentWindow.this.importPathway(PathwayImportOption.Example); - } catch (Throwable throwable) { - DocumentWindow.this.handleException(throwable); - } - if (e.getSource() == DocumentWindow.this.getSave_VersionMenuItem()) - DocumentWindow.this.saveDocument(false); - if (e.getSource() == DocumentWindow.this.getChange_ProxyMenuItem()) - DocumentWindow.this.setProxy(); - if (e.getSource() == DocumentWindow.this.getReconnectUserMenuItem()) - DocumentWindow.this.reconnect(); - if (e.getSource() == DocumentWindow.this.getJMenuItemRevert()) - DocumentWindow.this.getWindowManager().revertToSaved(); - if (e.getSource() == DocumentWindow.this.getJMenuItemCompare()) - DocumentWindow.this.getWindowManager().compareWithSaved(); - if (e.getSource() == DocumentWindow.this.getNonSpatialMenuItem()) - DocumentWindow.this.newDocument(e); - if (e.getSource() == DocumentWindow.this.getMathFromBioMenuItem()) - DocumentWindow.this.newDocument(e); - if (e.getSource() == DocumentWindow.this.getSpatialExistingMenuItem()) - DocumentWindow.this.newDocument(e); - if (e.getSource() == DocumentWindow.this.getSpatialCreateNewMenuItem()) - DocumentWindow.this.newDocument(e); - if (e.getSource() == DocumentWindow.this.getJMenuItemExport()) - DocumentWindow.this.getWindowManager().exportDocument(null); - if (e.getSource() == DocumentWindow.this.getTestingFrameworkMenuItem()) - DocumentWindow.this.showTestingFrameworkWindow(); - if (e.getSource() == DocumentWindow.this.getJMenuItemOnlineHelp()) - DocumentWindow.this.invokeOnlineHelp(); - if (e.getSource() == DocumentWindow.this.getJMenuItemOnlineSupport()) - DocumentWindow.this.invokeOnlineSupport(); - if (e.getSource() == DocumentWindow.this.getJMenuItemDiscussionGroup()) - DocumentWindow.this.invokeDiscussionGroup(); - if (e.getSource() == DocumentWindow.this.getJMenuItemManagePermissions()) - DocumentWindow.this.invokeManagePermissions(); - if (e.getSource() == DocumentWindow.this.getJMenuItemOnlinePublish()) - DocumentWindow.this.invokeOnlinePublish(); - if (e.getSource() == DocumentWindow.this.getJMenuItemEmailSupport()) - DocumentWindow.this.emailSupport(e); - if (e.getSource() == DocumentWindow.this.getNewHelpMenuItem()) - DocumentWindow.this.showVCellHelpWindow(); - if (e.getSource() == DocumentWindow.this.getLogOutMenuItem()) - DocumentWindow.this.getWindowManager().getRequestManager().logOut(DocumentWindow.this.getWindowManager()); - if (e.getSource() == DocumentWindow.this.getRunVFrapItem()) - DocumentWindow.this.startVirtualFRAP(); - if (e.getSource() == DocumentWindow.this.getTransMAMenuItem()) - DocumentWindow.this.showTransMADialog(); - if (e.getSource() == DocumentWindow.this.getViewJobsMenuItem()) - DocumentWindow.this.showViewJobsDialog(); - if (e.getSource() == DocumentWindow.this.getJMenuItemFieldData()) - DocumentWindow.this.getWindowManager().showFieldDataWindow(); - if (e.getSource() == DocumentWindow.this.getManageUserMenuItem()) { - if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) { + if (e.getSource() == DocumentWindow.this.getCloseMenuItem()) + getWindowManager().closeWindow(); + if (e.getSource() == DocumentWindow.this.getExitMenuItem()) + getWindowManager().exitApplication(); + if (e.getSource() == DocumentWindow.this.getJMenuItemNewBioModel()) + DocumentWindow.this.newDocument(e); + if (e.getSource() == DocumentWindow.this.getJMenuItemOpenBioModel()) + DocumentWindow.this.openDocument(e); + if (e.getSource() == DocumentWindow.this.getJMenuItemOpenLocal()) + importExternalDocument(); + if (e.getSource() == DocumentWindow.this.getJMenuItemOpenMathModel()) + DocumentWindow.this.openDocument(e); + if (e.getSource() == DocumentWindow.this.getSaveMenuItem()) + DocumentWindow.this.saveDocument(true); + if (e.getSource() == DocumentWindow.this.getSave_AsMenuItem()) + getWindowManager().saveDocumentAsNew(); + if (e.getSource() == DocumentWindow.this.getSave_AsLocalMenuItem()) + saveAsLocal(); + try { + if (e.getSource() == DocumentWindow.this.getJMenuItemImport()) + DocumentWindow.this.importExternalDocument(); + if (e.getSource() == DocumentWindow.this.menuItemImportPathwayWebLocation) + DocumentWindow.this.importPathway(PathwayImportOption.Web_Location); + else if (e.getSource() == DocumentWindow.this.menuItemImportPathwayFile) + DocumentWindow.this.importPathway(PathwayImportOption.File); + else if (e.getSource() == DocumentWindow.this.menuItemImportPathwayExample) + DocumentWindow.this.importPathway(PathwayImportOption.Example); + } catch (Throwable throwable) { + DocumentWindow.this.handleException(throwable); + } + if (e.getSource() == DocumentWindow.this.getSave_VersionMenuItem()) + DocumentWindow.this.saveDocument(false); + if (e.getSource() == DocumentWindow.this.getChange_ProxyMenuItem()) + setProxy(); + if (e.getSource() == DocumentWindow.this.getReconnectUserMenuItem()) + DocumentWindow.this.reconnect(); + if (e.getSource() == DocumentWindow.this.getJMenuItemRevert()) + getWindowManager().revertToSaved(); + if (e.getSource() == DocumentWindow.this.getJMenuItemCompare()) + getWindowManager().compareWithSaved(); + if (e.getSource() == DocumentWindow.this.getNonSpatialMenuItem()) + DocumentWindow.this.newDocument(e); + if (e.getSource() == DocumentWindow.this.getMathFromBioMenuItem()) + DocumentWindow.this.newDocument(e); + if (e.getSource() == DocumentWindow.this.getSpatialExistingMenuItem()) + newDocument(e); + if (e.getSource() == DocumentWindow.this.getSpatialCreateNewMenuItem()) + newDocument(e); + if (e.getSource() == DocumentWindow.this.getJMenuItemExport()) + getWindowManager().exportDocument(null); + if (e.getSource() == DocumentWindow.this.getTestingFrameworkMenuItem()) + DocumentWindow.this.showTestingFrameworkWindow(); + if (e.getSource() == DocumentWindow.this.getJMenuItemOnlineHelp()) + DocumentWindow.this.invokeOnlineHelp(); + if (e.getSource() == DocumentWindow.this.getJMenuItemOnlineSupport()) + DocumentWindow.this.invokeOnlineSupport(); + if (e.getSource() == DocumentWindow.this.getJMenuItemDiscussionGroup()) + DocumentWindow.this.invokeDiscussionGroup(); + if (e.getSource() == DocumentWindow.this.getJMenuItemManagePermissions()) + DocumentWindow.this.invokeManagePermissions(); + if (e.getSource() == DocumentWindow.this.getJMenuItemOnlinePublish()) + DocumentWindow.this.invokeOnlinePublish(); + if (e.getSource() == DocumentWindow.this.getJMenuItemEmailSupport()) + emailSupport(e); + if (e.getSource() == DocumentWindow.this.getNewHelpMenuItem()) + showVCellHelpWindow(); + if (e.getSource() == DocumentWindow.this.getLogOutMenuItem()) + getWindowManager().getRequestManager().logOut(getWindowManager()); + if (e.getSource() == DocumentWindow.this.getRunVFrapItem()) + startVirtualFRAP(); + if (e.getSource() == DocumentWindow.this.getTransMAMenuItem()) + showTransMADialog(); + if (e.getSource() == DocumentWindow.this.getViewJobsMenuItem()) + showViewJobsDialog(); + if (e.getSource() == DocumentWindow.this.getJMenuItemFieldData()) + getWindowManager().showFieldDataWindow(); + if (e.getSource() == DocumentWindow.this.getManageUserMenuItem()){ + if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)){ Desktop.getDesktop().browse(new URI("https://vcell-stage.cam.uchc.edu/login_success")); } - } - if (e.getSource() == DocumentWindow.this.getPermissionsMenuItem()) { - DocumentWindow.this.getWindowManager().getRequestManager().accessPermissions(DocumentWindow.this, DocumentWindow.this.getWindowManager().getVCDocument()); - } - if (e.getSource() == DocumentWindow.this.getGrantPermissionsToVCellSupportMenuItem()) { - RequestManager rm = DocumentWindow.this.getWindowManager().getRequestManager(); - if (rm instanceof ClientRequestManager crm) { - crm.accessPermissionsEx(DocumentWindow.this, DocumentWindow.this.getWindowManager().getVCDocument(), true); - } else { - rm.accessPermissions(DocumentWindow.this, DocumentWindow.this.getWindowManager().getVCDocument()); - } - } - if (e.getSource() == DocumentWindow.this.getExportedDataViewer()) { - DocumentWindow.this.showViewExportedDataDialog(); - } - } catch (Throwable throwable) { - DocumentWindow.this.handleException(throwable); - } - - } - - public void itemStateChanged(java.awt.event.ItemEvent e) { - if (e.getSource() == DocumentWindow.this.getStatusbarMenuItem()) - DocumentWindow.this.getStatusBarPane().setVisible(DocumentWindow.this.getStatusbarMenuItem().isSelected()); - } - - @Override - public void mouseClicked(MouseEvent e) { - } - - @Override - public void mouseEntered(MouseEvent e) { - } - - @Override - public void mouseExited(MouseEvent e) { - } - - @Override - public void mousePressed(MouseEvent e) { - } + } + if (e.getSource() == DocumentWindow.this.getPermissionsMenuItem()) { + getWindowManager().getRequestManager().accessPermissions(DocumentWindow.this, getWindowManager().getVCDocument()); + } + if (e.getSource() == DocumentWindow.this.getGrantPermissionsToVCellSupportMenuItem()) { + RequestManager rm = getWindowManager().getRequestManager(); + if(rm instanceof ClientRequestManager) { + ClientRequestManager crm = (ClientRequestManager)rm; + crm.accessPermissionsEx(DocumentWindow.this, getWindowManager().getVCDocument(), true); + } else { + rm.accessPermissions(DocumentWindow.this, getWindowManager().getVCDocument()); + } + } + if (e.getSource() == DocumentWindow.this.getExportedDataViewer()){ + DocumentWindow.this.showViewExportedDataDialog(); + } + } + catch (Throwable throwable){ + handleException(throwable); + } + + }; + + public void itemStateChanged(java.awt.event.ItemEvent e) { + if (e.getSource() == DocumentWindow.this.getStatusbarMenuItem()) + getStatusBarPane().setVisible(getStatusbarMenuItem().isSelected()); + } - @Override - public void mouseReleased(MouseEvent e) { - if (e.getSource() == DocumentWindow.this.getIconBar()) { + @Override + public void mouseClicked(MouseEvent e) { + } + @Override + public void mouseEntered(MouseEvent e) { + } + @Override + public void mouseExited(MouseEvent e) { + } + @Override + public void mousePressed(MouseEvent e) { + } + @Override + public void mouseReleased(MouseEvent e) { + if(e.getSource() == DocumentWindow.this.getIconBar()) { // PopupGenerator.showInfoDialog(DocumentWindow.this, "VCell admin notification message"); DialogUtils.browserLauncher(DocumentWindow.this, notificationsUrl, "Please visit '" + notificationsUrl + "' for server administrator notifications."); @@ -274,47 +274,48 @@ public void mouseReleased(MouseEvent e) { // PopupGenerator.browserLauncher(this, BeanUtils.getDynamicClientProperties().getProperty(PropertyLoader.VC_TUT_PERMISSION_URL), // "Please visit "+BeanUtils.getDynamicClientProperties().getProperty(PropertyLoader.VC_TUT_PERMISSION_URL)+" for instructions on how to change permissions to your Model"); } - } + }; + }; + private JMenuItem ivjJMenuItemFieldData = null; +// private JMenuItem jMenuItemMIRIAM = null; + private JMenuItem jMenuItemPreferences = null; - } +/** + * DocumentWindow constructor comment. + */ +public DocumentWindow() { + super(); + initialize(); + childWindowManager = new ChildWindowManager(this); +} - private JMenuItem ivjJMenuItemFieldData = null; - // private JMenuItem jMenuItemMIRIAM = null; - private JMenuItem jMenuItemPreferences = null; - - /** - * DocumentWindow constructor comment. - */ - public DocumentWindow() { - super(); - this.initialize(); - this.childWindowManager = new ChildWindowManager(this); - } +@Override +public String menuDescription() { + return getTitle( ); +} - @Override - public String menuDescription() { - return this.getTitle(); - } + private void setProxy(){ + try { + NetworkProxyPreferences.setProxyPrefs(this, (restartMsg) -> DialogUtils.showInfoDialog(this, restartMsg) ); + if(getTopLevelWindowManager()==null || getTopLevelWindowManager().getRequestManager()==null || + getTopLevelWindowManager().getRequestManager().getDocumentManager()==null){ + DialogUtils.showInfoDialog(this, "Update Proxy settings by restarting VCell or using menu Server->'change user' or Server->reconnect"); + }else if(getTopLevelWindowManager().getRequestManager().getDocumentManager().getUser() == null){ + return; + }else{ + reconnect(); + } + } catch (UtilCancelException e) { + return; + } +} - private void setProxy() { - try { - NetworkProxyPreferences.setProxyPrefs(this, (restartMsg) -> DialogUtils.showInfoDialog(this, restartMsg)); - if (this.getTopLevelWindowManager() == null || this.getTopLevelWindowManager().getRequestManager() == null || - this.getTopLevelWindowManager().getRequestManager().getDocumentManager() == null) { - DialogUtils.showInfoDialog(this, "Update Proxy settings by restarting VCell or using menu Server->'change user' or Server->reconnect"); - } else if (this.getTopLevelWindowManager().getRequestManager().getDocumentManager().getUser() == null) { - } else { - this.reconnect(); - } - } catch (UtilCancelException e) { - } - } - private void showVCellHelpWindow() { - VcellHelpViewer.showStandaloneViewer(); - //PENDING Window Manager redesign + private void showVCellHelpWindow() { + VcellHelpViewer.showStandaloneViewer(); + //PENDING Window Manager redesign // ChildWindow helpWindow = childWindowManager.getChildWindowFromContext(HelpViewerContextObject); // if (helpWindow!=null){ @@ -333,10 +334,10 @@ private void showVCellHelpWindow() { // helpWindow.show(); // showHierarchy("shown",vcellHelpViewer); // } - } +} - @SuppressWarnings("unused") //Pending Window Manager redesign - private void showHierarchy(String when, VcellHelpViewer vcellHelpViewer) { +@SuppressWarnings("unused") //Pending Window Manager redesign +private void showHierarchy(String when, VcellHelpViewer vcellHelpViewer ) { /* System.out.println(when); Container ctn = vcellHelpViewer.getParent(); @@ -345,615 +346,644 @@ private void showHierarchy(String when, VcellHelpViewer vcellHelpViewer) { ctn = ctn.getParent(); } */ - } +} private void emailSupport(java.awt.event.ActionEvent arg1) { - try { - Desktop desktop; - if (Desktop.isDesktopSupported() && (desktop = Desktop.getDesktop()).isSupported(Desktop.Action.MAIL)) { - URI mailto = new URI("mailto:vcell_support@uchc.edu"); // "mailto:john@example.com?subject=Hello%20World" - desktop.mail(mailto); - } else { - throw new RuntimeException("Desktop doesn't support mailto"); - } - } catch (URISyntaxException | IOException ex) { - this.handleException(ex); - } + try { + Desktop desktop; + if (Desktop.isDesktopSupported() && (desktop = Desktop.getDesktop()).isSupported(Desktop.Action.MAIL) ) { + URI mailto = new URI("mailto:vcell_support@uchc.edu"); // "mailto:john@example.com?subject=Hello%20World" + desktop.mail(mailto); + } else { + throw new RuntimeException("Desktop doesn't support mailto"); + } + } catch(URISyntaxException | IOException ex) { + handleException(ex); + } - } + +} private javax.swing.JMenuItem getAbout_BoxMenuItem() { - if (this.ivjAbout_BoxMenuItem == null) { + if (ivjAbout_BoxMenuItem == null) { try { - this.ivjAbout_BoxMenuItem = new javax.swing.JMenuItem(); - this.ivjAbout_BoxMenuItem.setName("About_BoxMenuItem"); - this.ivjAbout_BoxMenuItem.setText("About VCell"); + ivjAbout_BoxMenuItem = new javax.swing.JMenuItem(); + ivjAbout_BoxMenuItem.setName("About_BoxMenuItem"); + ivjAbout_BoxMenuItem.setText("About VCell"); } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); + handleException(ivjExc); } } - return this.ivjAbout_BoxMenuItem; + return ivjAbout_BoxMenuItem; } - private void startVirtualFRAP() { - final DocumentWindowManager dwm = this.getWindowManager(); - final Hashtable ht = new Hashtable<>(); - ClientTaskDispatcher.dispatch(this, ht, LaunchVirtualFRAP.taskList(dwm), true, false, false, null, false); - } +private void startVirtualFRAP(){ + final DocumentWindowManager dwm = getWindowManager(); + final Hashtable ht = new Hashtable<>(); + ClientTaskDispatcher.dispatch(this, ht,LaunchVirtualFRAP.taskList(dwm), true,false,false,null,false); +} - private JMenu getToolMenu() { - if (this.toolMenu == null) { - try { - this.toolMenu = new javax.swing.JMenu(); - //getImageJServiceMenuItem().setText(createImageJServiceMenuText()); - this.toolMenu.addMenuListener(new MenuListener() { - @Override - public void menuSelected(MenuEvent e) { +private JMenu getToolMenu() { + if (toolMenu == null) { + try { + toolMenu = new javax.swing.JMenu(); + //getImageJServiceMenuItem().setText(createImageJServiceMenuText()); + toolMenu.addMenuListener(new MenuListener() { + @Override + public void menuSelected(MenuEvent e) { // getImageJServiceMenuItem().setText(createImageJServiceMenuText()); - } - - @Override - public void menuDeselected(MenuEvent e) { - } - - @Override - public void menuCanceled(MenuEvent e) { - } - }); - - this.toolMenu.setName("ToolMenu"); - this.toolMenu.setText("Tools"); - this.toolMenu.add(new JSeparator()); - this.toolMenu.add(this.getRunVFrapItem()); - this.toolMenu.add(this.getExportedDataViewer()); - this.toolMenu.add(new JSeparator()); - this.toolMenu.add(this.getTransMAMenuItem()); + } + @Override + public void menuDeselected(MenuEvent e) { + } + @Override + public void menuCanceled(MenuEvent e) { + } + }); + + toolMenu.setName("ToolMenu"); + toolMenu.setText("Tools"); + toolMenu.add(new JSeparator()); + toolMenu.add(getRunVFrapItem()); + toolMenu.add(getExportedDataViewer()); + toolMenu.add(new JSeparator()); + toolMenu.add(getTransMAMenuItem()); // toolMenu.add(getViewJobsMenuItem()); // moved to Server - } catch (Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.toolMenu; - } - - private javax.swing.JMenuItem getTransMAMenuItem() { - if (this.transMAMenuItem == null) { - try { - this.transMAMenuItem = new javax.swing.JMenuItem(); - this.transMAMenuItem.setName("TransMA"); - this.transMAMenuItem.setText("Transform to Stochastic Capable"); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.transMAMenuItem; - } + } catch (Throwable ivjExc) { + handleException(ivjExc); + } + } + return toolMenu; +} - private javax.swing.JMenuItem getViewJobsMenuItem() { - if (this.viewJobsMenuItem == null) { - try { - this.viewJobsMenuItem = new javax.swing.JMenuItem(); - this.viewJobsMenuItem.setName("ViewJobs"); - this.viewJobsMenuItem.setText("View Simulation Jobs"); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.viewJobsMenuItem; - } +private javax.swing.JMenuItem getTransMAMenuItem() { + if (transMAMenuItem == null) { + try { + transMAMenuItem = new javax.swing.JMenuItem(); + transMAMenuItem.setName("TransMA"); + transMAMenuItem.setText("Transform to Stochastic Capable"); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return transMAMenuItem; +} - private JMenuItem getManageUserMenuItem() { - if (this.ivjManageUser == null) { - this.ivjManageUser = new javax.swing.JMenuItem(); - this.ivjManageUser.setName("ManageUserMenuItem"); - this.ivjManageUser.setText("Manage User"); - this.ivjManageUser.setEnabled(false); - } - return this.ivjManageUser; - } +private javax.swing.JMenuItem getViewJobsMenuItem() { + if (viewJobsMenuItem == null) { + try { + viewJobsMenuItem = new javax.swing.JMenuItem(); + viewJobsMenuItem.setName("ViewJobs"); + viewJobsMenuItem.setText("View Simulation Jobs"); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return viewJobsMenuItem; +} - private JMenuItem getLogOutMenuItem() { - if (this.ivjLogoutUser == null) { - this.ivjLogoutUser = new javax.swing.JMenuItem(); - this.ivjLogoutUser.setName("LogoutMenuItem"); - this.ivjLogoutUser.setText("Logout"); - this.ivjLogoutUser.setEnabled(false); - } - return this.ivjLogoutUser; - } +private JMenuItem getManageUserMenuItem(){ + if (ivjManageUser == null){ + ivjManageUser = new javax.swing.JMenuItem(); + ivjManageUser.setName("ManageUserMenuItem"); + ivjManageUser.setText("Manage User"); + ivjManageUser.setEnabled(false); + } + return ivjManageUser; +} - private JMenuItem getReconnectUserMenuItem() { - if (this.ivjReconnectMenuItem == null) { - this.ivjReconnectMenuItem = new javax.swing.JMenuItem(); - this.ivjReconnectMenuItem.setName("ReconnectMenuItem"); - this.ivjReconnectMenuItem.setText("Reconnect (Refresh)"); - this.ivjReconnectMenuItem.setEnabled(false); - } - return this.ivjReconnectMenuItem; - } +private JMenuItem getLogOutMenuItem() { + if (ivjLogoutUser == null){ + ivjLogoutUser = new javax.swing.JMenuItem(); + ivjLogoutUser.setName("LogoutMenuItem"); + ivjLogoutUser.setText("Logout"); + ivjLogoutUser.setEnabled(false); + } + return ivjLogoutUser; +} - private JMenuItem ivjChange_ProxyMenuItem; +private JMenuItem getReconnectUserMenuItem(){ + if (ivjReconnectMenuItem == null){ + ivjReconnectMenuItem = new javax.swing.JMenuItem(); + ivjReconnectMenuItem.setName("ReconnectMenuItem"); + ivjReconnectMenuItem.setText("Reconnect (Refresh)"); + ivjReconnectMenuItem.setEnabled(false); + } + return ivjReconnectMenuItem; +} - private javax.swing.JMenuItem getChange_ProxyMenuItem() { - if (this.ivjChange_ProxyMenuItem == null) { - try { - this.ivjChange_ProxyMenuItem = new javax.swing.JMenuItem(); - this.ivjChange_ProxyMenuItem.setName("Change_ProxyMenuItem"); - this.ivjChange_ProxyMenuItem.setText("Set Proxy..."); - this.ivjChange_ProxyMenuItem.setEnabled(true); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjChange_ProxyMenuItem; - } +private JMenuItem ivjChange_ProxyMenuItem; +private javax.swing.JMenuItem getChange_ProxyMenuItem() { + if (ivjChange_ProxyMenuItem == null) { + try { + ivjChange_ProxyMenuItem = new javax.swing.JMenuItem(); + ivjChange_ProxyMenuItem.setName("Change_ProxyMenuItem"); + ivjChange_ProxyMenuItem.setText("Set Proxy..."); + ivjChange_ProxyMenuItem.setEnabled(true); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjChange_ProxyMenuItem; +} - private javax.swing.JMenuItem getCloseMenuItem() { - if (this.ivjCloseMenuItem == null) { - try { - this.ivjCloseMenuItem = new javax.swing.JMenuItem(); - this.ivjCloseMenuItem.setName("CloseMenuItem"); - this.ivjCloseMenuItem.setText("Close"); - this.ivjCloseMenuItem.setAccelerator(GeneralGuiUtils.CLOSE_WINDOW_KEY_STROKE); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjCloseMenuItem; - } +private javax.swing.JMenuItem getCloseMenuItem() { + if (ivjCloseMenuItem == null) { + try { + ivjCloseMenuItem = new javax.swing.JMenuItem(); + ivjCloseMenuItem.setName("CloseMenuItem"); + ivjCloseMenuItem.setText("Close"); + ivjCloseMenuItem.setAccelerator(GeneralGuiUtils.CLOSE_WINDOW_KEY_STROKE); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjCloseMenuItem; +} - private javax.swing.JMenuBar getDocumentWindowJMenuBar() { - if (this.ivjDocumentWindowJMenuBar == null) { - try { - this.ivjDocumentWindowJMenuBar = new javax.swing.JMenuBar(); - this.ivjDocumentWindowJMenuBar.setName("DocumentWindowJMenuBar"); - this.ivjDocumentWindowJMenuBar.add(this.getFileMenu()); - this.ivjDocumentWindowJMenuBar.add(this.getServerMenu()); - this.ivjDocumentWindowJMenuBar.add(createWindowMenu(true)); - this.ivjDocumentWindowJMenuBar.add(this.getToolMenu()); - this.ivjDocumentWindowJMenuBar.add(this.getHelpMenu()); - this.ivjDocumentWindowJMenuBar.add(Box.createHorizontalGlue()); - this.ivjDocumentWindowJMenuBar.add(createWindowMenu(false)); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjDocumentWindowJMenuBar; - } +private javax.swing.JMenuBar getDocumentWindowJMenuBar() { + if (ivjDocumentWindowJMenuBar == null) { + try { + ivjDocumentWindowJMenuBar = new javax.swing.JMenuBar(); + ivjDocumentWindowJMenuBar.setName("DocumentWindowJMenuBar"); + ivjDocumentWindowJMenuBar.add(getFileMenu()); + ivjDocumentWindowJMenuBar.add(getServerMenu()); + ivjDocumentWindowJMenuBar.add(createWindowMenu(true)); + ivjDocumentWindowJMenuBar.add(getToolMenu()); + ivjDocumentWindowJMenuBar.add(getHelpMenu()); + ivjDocumentWindowJMenuBar.add(Box.createHorizontalGlue()); + ivjDocumentWindowJMenuBar.add(createWindowMenu(false)); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjDocumentWindowJMenuBar; +} - private javax.swing.JMenuItem getExitMenuItem() { - if (this.ivjExitMenuItem == null) { - try { - this.ivjExitMenuItem = new javax.swing.JMenuItem(); - this.ivjExitMenuItem.setName("ExitMenuItem"); - this.ivjExitMenuItem.setText("Exit"); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjExitMenuItem; - } +private javax.swing.JMenuItem getExitMenuItem() { + if (ivjExitMenuItem == null) { + try { + ivjExitMenuItem = new javax.swing.JMenuItem(); + ivjExitMenuItem.setName("ExitMenuItem"); + ivjExitMenuItem.setText("Exit"); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjExitMenuItem; +} - private javax.swing.JMenu getFileMenu() { - if (this.ivjFileMenu == null) { - try { - this.ivjFileMenu = new javax.swing.JMenu(); - this.ivjFileMenu.setName("FileMenu"); - this.ivjFileMenu.setText("File"); - this.ivjFileMenu.add(this.getNewMenuItem()); - this.ivjFileMenu.add(this.getOpenMenuItem()); - this.ivjFileMenu.add(this.getCloseMenuItem()); - this.ivjFileMenu.add(new JSeparator()); - this.ivjFileMenu.add(this.getSaveMenuItem()); - this.ivjFileMenu.add(this.getSave_VersionMenuItem()); - this.ivjFileMenu.add(this.getSave_AsMenuItem()); - this.ivjFileMenu.add(this.getSave_AsLocalMenuItem()); - this.ivjFileMenu.add(new JSeparator()); - this.ivjFileMenu.add(this.getJMenuItemRevert()); - this.ivjFileMenu.add(this.getJMenuItemCompare()); - this.ivjFileMenu.add(new JSeparator()); - this.ivjFileMenu.add(this.getPermissionsMenuItem()); - this.ivjFileMenu.add(new JSeparator()); - this.ivjFileMenu.add(this.getJMenuItemFieldData()); - this.ivjFileMenu.add(this.getTestingFrameworkMenuItem()); - this.ivjFileMenu.add(new JSeparator()); - this.ivjFileMenu.add(this.getJMenuItemImport()); - this.ivjFileMenu.add(this.getJMenuItemExport()); - this.ivjFileMenu.add(new JSeparator()); - this.ivjFileMenu.add(new JSeparator()); - this.ivjFileMenu.add(this.getExitMenuItem()); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjFileMenu; - } +private javax.swing.JMenu getFileMenu() { + if (ivjFileMenu == null) { + try { + ivjFileMenu = new javax.swing.JMenu(); + ivjFileMenu.setName("FileMenu"); + ivjFileMenu.setText("File"); + ivjFileMenu.add(getNewMenuItem()); + ivjFileMenu.add(getOpenMenuItem()); + ivjFileMenu.add(getCloseMenuItem()); + ivjFileMenu.add(new JSeparator()); + ivjFileMenu.add(getSaveMenuItem()); + ivjFileMenu.add(getSave_VersionMenuItem()); + ivjFileMenu.add(getSave_AsMenuItem()); + ivjFileMenu.add(getSave_AsLocalMenuItem()); + ivjFileMenu.add(new JSeparator()); + ivjFileMenu.add(getJMenuItemRevert()); + ivjFileMenu.add(getJMenuItemCompare()); + ivjFileMenu.add(new JSeparator()); + ivjFileMenu.add(getPermissionsMenuItem()); + ivjFileMenu.add(new JSeparator()); + ivjFileMenu.add(getJMenuItemFieldData()); + ivjFileMenu.add(getTestingFrameworkMenuItem()); + ivjFileMenu.add(new JSeparator()); + ivjFileMenu.add(getJMenuItemImport()); + ivjFileMenu.add(getJMenuItemExport()); + ivjFileMenu.add(new JSeparator()); + ivjFileMenu.add(new JSeparator()); + ivjFileMenu.add(getExitMenuItem()); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjFileMenu; +} - private JMenuItem getExportedDataViewer() { - if (this.exportedDataViewer == null) { - this.exportedDataViewer = new JMenuItem(); - this.exportedDataViewer.setName("Exported Data Viewer"); - this.exportedDataViewer.setText("Exported Data Viewer"); - } - return this.exportedDataViewer; - } +private JMenuItem getExportedDataViewer(){ + if(exportedDataViewer == null){ + exportedDataViewer = new JMenuItem(); + exportedDataViewer.setName("Exported Data Viewer"); + exportedDataViewer.setText("Exported Data Viewer"); + } + return exportedDataViewer; +} - public static void showGeometryCreationWarning(Component parentComponent) { - DialogUtils.showWarningDialog(parentComponent, - "Geometries are now viewed/edited/created within BioModels or MathModels.\n" + - "\nBioModel geometries are viewed/edited from a BioModel document within an Application in the 'Geometry' section.\n" + - " \nMathModel geometries are viewed/edited from a MathModel document by pressing the 'Geometry Viewer' button."); +private javax.swing.JMenuItem getGeometryMenuItem() { + if (ivjGeometryMenu == null) { + try { + ivjGeometryMenu = new javax.swing.JMenuItem(); + ivjGeometryMenu.setName("GeometryMenu"); + ivjGeometryMenu.setText("Geometry"); + ivjGeometryMenu.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + DocumentWindow.showGeometryCreationWarning(DocumentWindow.this); + } + }); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjGeometryMenu; +} - } +public static void showGeometryCreationWarning(Component parentComponent){ + DialogUtils.showWarningDialog(parentComponent, + "Geometries are now viewed/edited/created within BioModels or MathModels.\n"+ + "\nBioModel geometries are viewed/edited from a BioModel document within an Application in the 'Geometry' section.\n"+ + " \nMathModel geometries are viewed/edited from a MathModel document by pressing the 'Geometry Viewer' button."); - /** - * Return the HelpMenu property value. - * - * @return javax.swing.JMenu - */ - /* WARNING: THIS METHOD WILL BE REGENERATED. */ - private javax.swing.JMenu getHelpMenu() { - if (this.ivjHelpMenu == null) { - try { - this.ivjHelpMenu = new javax.swing.JMenu(); - this.ivjHelpMenu.setName("HelpMenu"); - this.ivjHelpMenu.setText("Help"); - this.ivjHelpMenu.add(this.getNewHelpMenuItem()); - this.ivjHelpMenu.add(this.getJMenuItemOnlineHelp()); - //ivjHelpMenu.add(getJMenuItemOnlineSupport()); - this.ivjHelpMenu.add(this.getJMenuItemDiscussionGroup()); - this.ivjHelpMenu.add(this.getJMenuItemManagePermissions()); - this.ivjHelpMenu.add(this.getJMenuItemOnlinePublish()); - this.ivjHelpMenu.add(this.getJMenuItemEmailSupport()); - this.ivjHelpMenu.add(this.getGrantPermissionsToVCellSupportMenuItem()); - this.ivjHelpMenu.add(this.getJMenuItemPreferences()); +} +/** + * Return the HelpMenu property value. + * @return javax.swing.JMenu + */ +/* WARNING: THIS METHOD WILL BE REGENERATED. */ +private javax.swing.JMenu getHelpMenu() { + if (ivjHelpMenu == null) { + try { + ivjHelpMenu = new javax.swing.JMenu(); + ivjHelpMenu.setName("HelpMenu"); + ivjHelpMenu.setText("Help"); + ivjHelpMenu.add(getNewHelpMenuItem()); + ivjHelpMenu.add(getJMenuItemOnlineHelp()); + //ivjHelpMenu.add(getJMenuItemOnlineSupport()); + ivjHelpMenu.add(getJMenuItemDiscussionGroup()); + ivjHelpMenu.add(getJMenuItemManagePermissions()); + ivjHelpMenu.add(getJMenuItemOnlinePublish()); + ivjHelpMenu.add(getJMenuItemEmailSupport()); + ivjHelpMenu.add(getGrantPermissionsToVCellSupportMenuItem()); + ivjHelpMenu.add(getJMenuItemPreferences()); // ivjHelpMenu.add(getSeparator()); // ivjHelpMenu.add(getPermissionsMenuItem()); - this.ivjHelpMenu.add(this.getJSeparator6()); - this.ivjHelpMenu.add(this.getMntmLicenseInformation()); - this.ivjHelpMenu.add(this.getAbout_BoxMenuItem()); + ivjHelpMenu.add(getJSeparator6()); + ivjHelpMenu.add(getMntmLicenseInformation()); + ivjHelpMenu.add(getAbout_BoxMenuItem()); // ivjHelpMenu.add(getSeparator()); - this.ivjHelpMenu.add(this.getStatusbarMenuItem()); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjHelpMenu; - } - - private javax.swing.JMenuItem getJMenuItemCompare() { - if (this.ivjJMenuItemCompare == null) { - try { - this.ivjJMenuItemCompare = new javax.swing.JMenuItem(); - this.ivjJMenuItemCompare.setName("JMenuItemCompare"); - this.ivjJMenuItemCompare.setText("Compare with Saved"); - this.ivjJMenuItemCompare.setEnabled(false); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjJMenuItemCompare; - } - - private javax.swing.JMenuItem getJMenuItemExport() { - if (this.ivjJMenuItemExport == null) { - try { - this.ivjJMenuItemExport = new javax.swing.JMenuItem(); - this.ivjJMenuItemExport.setName("JMenuItemExport"); - this.ivjJMenuItemExport.setText("Export..."); - this.ivjJMenuItemExport.setActionCommand(GuiConstants.ACTIONCMD_EXPORT); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjJMenuItemExport; - } - - private javax.swing.JMenuItem getJMenuItemFieldData() { - if (this.ivjJMenuItemFieldData == null) { - try { - this.ivjJMenuItemFieldData = new javax.swing.JMenuItem(); - this.ivjJMenuItemFieldData.setName("JMenuItemFieldData"); - this.ivjJMenuItemFieldData.setText("Field Data..."); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjJMenuItemFieldData; - } - - - private JMenuItem getJMenuItemImport() { - if (this.menuItemImport == null) { - try { - this.menuItemImport = new JMenuItem(); - this.menuItemImport.setName("JMenuItemImport"); - this.menuItemImport.setText("Import..."); - } catch (Throwable throwable) { - this.handleException(throwable); - } - } - return this.menuItemImport; - } + ivjHelpMenu.add(getStatusbarMenuItem()); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjHelpMenu; +} - private javax.swing.JMenuItem getJMenuItemNewBioModel() { - if (this.ivjJMenuItemNewBioModel == null) { - try { - this.ivjJMenuItemNewBioModel = new javax.swing.JMenuItem(); - this.ivjJMenuItemNewBioModel.setName("JMenuItemNewBioModel"); - this.ivjJMenuItemNewBioModel.setText("BioModel"); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjJMenuItemNewBioModel; - } +private javax.swing.JMenuItem getJMenuItemCompare() { + if (ivjJMenuItemCompare == null) { + try { + ivjJMenuItemCompare = new javax.swing.JMenuItem(); + ivjJMenuItemCompare.setName("JMenuItemCompare"); + ivjJMenuItemCompare.setText("Compare with Saved"); + ivjJMenuItemCompare.setEnabled(false); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjJMenuItemCompare; +} +private javax.swing.JMenuItem getJMenuItemExport() { + if (ivjJMenuItemExport == null) { + try { + ivjJMenuItemExport = new javax.swing.JMenuItem(); + ivjJMenuItemExport.setName("JMenuItemExport"); + ivjJMenuItemExport.setText("Export..."); + ivjJMenuItemExport.setActionCommand(GuiConstants.ACTIONCMD_EXPORT); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjJMenuItemExport; +} - private javax.swing.JMenuItem getJMenuItemOnlineHelp() { - if (this.ivjJMenuItemOnlineHelp == null) { - try { - this.ivjJMenuItemOnlineHelp = new javax.swing.JMenuItem(); - this.ivjJMenuItemOnlineHelp.setName("JMenuItemOnlineHelp"); - this.ivjJMenuItemOnlineHelp.setText("VCell Website"); // "Online Resources" - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjJMenuItemOnlineHelp; - } +private javax.swing.JMenuItem getJMenuItemFieldData() { + if (ivjJMenuItemFieldData == null) { + try { + ivjJMenuItemFieldData = new javax.swing.JMenuItem(); + ivjJMenuItemFieldData.setName("JMenuItemFieldData"); + ivjJMenuItemFieldData.setText("Field Data..."); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjJMenuItemFieldData; +} - private javax.swing.JMenuItem getJMenuItemOnlineSupport() { - if (this.ivjJMenuItemOnlineSupport == null) { - try { - this.ivjJMenuItemOnlineSupport = new javax.swing.JMenuItem(); - this.ivjJMenuItemOnlineSupport.setName("JMenuItemOnlineSupport"); - this.ivjJMenuItemOnlineSupport.setText("VCell Support on the Web"); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjJMenuItemOnlineSupport; - } - private javax.swing.JMenuItem getJMenuItemDiscussionGroup() { - if (this.ivjJMenuItemDiscussionGroup == null) { - try { - this.ivjJMenuItemDiscussionGroup = new javax.swing.JMenuItem(); - this.ivjJMenuItemDiscussionGroup.setName("JMenuItemDiscussionGroup"); - this.ivjJMenuItemDiscussionGroup.setText("VCell Open Discussion Forum"); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjJMenuItemDiscussionGroup; - } +private JMenuItem getJMenuItemImport() { + if (menuItemImport == null) { + try { + menuItemImport = new JMenuItem(); + menuItemImport.setName("JMenuItemImport"); + menuItemImport.setText("Import..."); + } catch (Throwable throwable) { + handleException(throwable); + } + } + return menuItemImport; +} - private javax.swing.JMenuItem getJMenuItemManagePermissions() { - if (this.ivjJMenuItemManagePermissions == null) { - try { - this.ivjJMenuItemManagePermissions = new javax.swing.JMenuItem(); - this.ivjJMenuItemManagePermissions.setName("JMenuItemManagePermissions"); - this.ivjJMenuItemManagePermissions.setText("How to Change Permissions"); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjJMenuItemManagePermissions; - } +private javax.swing.JMenuItem getJMenuItemNewBioModel() { + if (ivjJMenuItemNewBioModel == null) { + try { + ivjJMenuItemNewBioModel = new javax.swing.JMenuItem(); + ivjJMenuItemNewBioModel.setName("JMenuItemNewBioModel"); + ivjJMenuItemNewBioModel.setText("BioModel"); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjJMenuItemNewBioModel; +} - private javax.swing.JMenuItem getJMenuItemOnlinePublish() { - if (this.ivjJMenuItemOnlinePublish == null) { - try { - this.ivjJMenuItemOnlinePublish = new javax.swing.JMenuItem(); - this.ivjJMenuItemOnlinePublish.setName("JMenuItemOnlinePublish"); - this.ivjJMenuItemOnlinePublish.setText("How to Publish a Model "); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjJMenuItemOnlinePublish; - } - private javax.swing.JMenuItem getJMenuItemEmailSupport() { - if (this.ivjJMenuItemEmailSupport == null) { - try { - this.ivjJMenuItemEmailSupport = new javax.swing.JMenuItem(); - this.ivjJMenuItemEmailSupport.setName("JMenuItemEmailSupport"); - this.ivjJMenuItemEmailSupport.setText("Contact VCell Support"); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjJMenuItemEmailSupport; - } +private javax.swing.JMenuItem getJMenuItemOnlineHelp() { + if (ivjJMenuItemOnlineHelp == null) { + try { + ivjJMenuItemOnlineHelp = new javax.swing.JMenuItem(); + ivjJMenuItemOnlineHelp.setName("JMenuItemOnlineHelp"); + ivjJMenuItemOnlineHelp.setText("VCell Website"); // "Online Resources" + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjJMenuItemOnlineHelp; +} +private javax.swing.JMenuItem getJMenuItemOnlineSupport() { + if (ivjJMenuItemOnlineSupport == null) { + try { + ivjJMenuItemOnlineSupport = new javax.swing.JMenuItem(); + ivjJMenuItemOnlineSupport.setName("JMenuItemOnlineSupport"); + ivjJMenuItemOnlineSupport.setText("VCell Support on the Web"); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjJMenuItemOnlineSupport; +} +private javax.swing.JMenuItem getJMenuItemDiscussionGroup() { + if (ivjJMenuItemDiscussionGroup == null) { + try { + ivjJMenuItemDiscussionGroup = new javax.swing.JMenuItem(); + ivjJMenuItemDiscussionGroup.setName("JMenuItemDiscussionGroup"); + ivjJMenuItemDiscussionGroup.setText("VCell Open Discussion Forum"); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjJMenuItemDiscussionGroup; +} +private javax.swing.JMenuItem getJMenuItemManagePermissions() { + if (ivjJMenuItemManagePermissions == null) { + try { + ivjJMenuItemManagePermissions = new javax.swing.JMenuItem(); + ivjJMenuItemManagePermissions.setName("JMenuItemManagePermissions"); + ivjJMenuItemManagePermissions.setText("How to Change Permissions"); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjJMenuItemManagePermissions; +} +private javax.swing.JMenuItem getJMenuItemOnlinePublish() { + if (ivjJMenuItemOnlinePublish == null) { + try { + ivjJMenuItemOnlinePublish = new javax.swing.JMenuItem(); + ivjJMenuItemOnlinePublish.setName("JMenuItemOnlinePublish"); + ivjJMenuItemOnlinePublish.setText("How to Publish a Model "); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjJMenuItemOnlinePublish; +} +private javax.swing.JMenuItem getJMenuItemEmailSupport() { + if (ivjJMenuItemEmailSupport == null) { + try { + ivjJMenuItemEmailSupport = new javax.swing.JMenuItem(); + ivjJMenuItemEmailSupport.setName("JMenuItemEmailSupport"); + ivjJMenuItemEmailSupport.setText("Contact VCell Support"); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjJMenuItemEmailSupport; +} - private javax.swing.JMenuItem getNewHelpMenuItem() { - if (this.newHelpMenuItem == null) { - try { - this.newHelpMenuItem = new javax.swing.JMenuItem(); - this.newHelpMenuItem.setName("newHelpMenuItem"); - this.newHelpMenuItem.setText("VCell Help"); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.newHelpMenuItem; - } +private javax.swing.JMenuItem getNewHelpMenuItem() { + if (newHelpMenuItem == null) { + try { + newHelpMenuItem = new javax.swing.JMenuItem(); + newHelpMenuItem.setName("newHelpMenuItem"); + newHelpMenuItem.setText("VCell Help"); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return newHelpMenuItem; +} - private javax.swing.JMenuItem getJMenuItemOpenBioModel() { - if (this.ivjJMenuItemOpenBioModel == null) { - try { - this.ivjJMenuItemOpenBioModel = new javax.swing.JMenuItem(); - this.ivjJMenuItemOpenBioModel.setName("JMenuItemOpenBioModel"); - this.ivjJMenuItemOpenBioModel.setText("BioModel..."); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjJMenuItemOpenBioModel; - } +private javax.swing.JMenuItem getJMenuItemOpenBioModel() { + if (ivjJMenuItemOpenBioModel == null) { + try { + ivjJMenuItemOpenBioModel = new javax.swing.JMenuItem(); + ivjJMenuItemOpenBioModel.setName("JMenuItemOpenBioModel"); + ivjJMenuItemOpenBioModel.setText("BioModel..."); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjJMenuItemOpenBioModel; +} - private javax.swing.JMenuItem getJMenuItemOpenLocal() { - if (this.ivjJMenuItemOpenLocal == null) { - try { - this.ivjJMenuItemOpenLocal = new javax.swing.JMenuItem(); - this.ivjJMenuItemOpenLocal.setName("JMenuItemOpenLocal"); - this.ivjJMenuItemOpenLocal.setText("Local..."); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjJMenuItemOpenLocal; - } +private javax.swing.JMenuItem getJMenuItemOpenLocal() { + if (ivjJMenuItemOpenLocal == null) { + try { + ivjJMenuItemOpenLocal = new javax.swing.JMenuItem(); + ivjJMenuItemOpenLocal.setName("JMenuItemOpenLocal"); + ivjJMenuItemOpenLocal.setText("Local..."); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjJMenuItemOpenLocal; +} - private javax.swing.JMenuItem getJMenuItemOpenMathModel() { - if (this.ivjJMenuItemOpenMathModel == null) { - try { - this.ivjJMenuItemOpenMathModel = new javax.swing.JMenuItem(); - this.ivjJMenuItemOpenMathModel.setName("JMenuItemOpenMathModel"); - this.ivjJMenuItemOpenMathModel.setText("MathModel..."); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjJMenuItemOpenMathModel; - } +private javax.swing.JMenuItem getJMenuItemOpenGeometry() { + if (ivjJMenuItemOpenGeometry == null) { + try { + ivjJMenuItemOpenGeometry = new javax.swing.JMenuItem(); + ivjJMenuItemOpenGeometry.setName("JMenuItemOpenGeometry"); + ivjJMenuItemOpenGeometry.setText("Geometry..."); + ivjJMenuItemOpenGeometry.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + DocumentWindow.showGeometryCreationWarning(DocumentWindow.this); + } + }); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjJMenuItemOpenGeometry; +} - private javax.swing.JMenuItem getJMenuItemRevert() { - if (this.ivjJMenuItemRevert == null) { - try { - this.ivjJMenuItemRevert = new javax.swing.JMenuItem(); - this.ivjJMenuItemRevert.setName("JMenuItemRevert"); - this.ivjJMenuItemRevert.setText("Revert to Saved"); - this.ivjJMenuItemRevert.setEnabled(false); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjJMenuItemRevert; - } +private javax.swing.JMenuItem getJMenuItemOpenMathModel() { + if (ivjJMenuItemOpenMathModel == null) { + try { + ivjJMenuItemOpenMathModel = new javax.swing.JMenuItem(); + ivjJMenuItemOpenMathModel.setName("JMenuItemOpenMathModel"); + ivjJMenuItemOpenMathModel.setText("MathModel..."); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjJMenuItemOpenMathModel; +} - private javax.swing.JProgressBar getJProgressBarConnection() { - if (this.ivjJProgressBarConnection == null) { - try { - this.ivjJProgressBarConnection = new javax.swing.JProgressBar(); - this.ivjJProgressBarConnection.setName("JProgressBarConnection"); - this.ivjJProgressBarConnection.setString("NOT CONNECTED"); - this.ivjJProgressBarConnection.setStringPainted(true); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjJProgressBarConnection; - } +private javax.swing.JMenuItem getJMenuItemRevert() { + if (ivjJMenuItemRevert == null) { + try { + ivjJMenuItemRevert = new javax.swing.JMenuItem(); + ivjJMenuItemRevert.setName("JMenuItemRevert"); + ivjJMenuItemRevert.setText("Revert to Saved"); + ivjJMenuItemRevert.setEnabled(false); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjJMenuItemRevert; +} - private javax.swing.JProgressBar getJProgressBarMemory() { - if (this.ivjJProgressBarMemory == null) { - try { - this.ivjJProgressBarMemory = new javax.swing.JProgressBar(); - this.ivjJProgressBarMemory.setName("JProgressBarMemory"); - this.ivjJProgressBarMemory.setMinimum(0); - this.ivjJProgressBarMemory.setStringPainted(true); - this.ivjJProgressBarMemory.setToolTipText("Java Memory Usage"); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjJProgressBarMemory; - } +private javax.swing.JProgressBar getJProgressBarConnection() { + if (ivjJProgressBarConnection == null) { + try { + ivjJProgressBarConnection = new javax.swing.JProgressBar(); + ivjJProgressBarConnection.setName("JProgressBarConnection"); + ivjJProgressBarConnection.setString("NOT CONNECTED"); + ivjJProgressBarConnection.setStringPainted(true); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjJProgressBarConnection; +} - private javax.swing.JSeparator getJSeparator6() { - if (this.ivjJSeparator6 == null) { - try { - this.ivjJSeparator6 = new javax.swing.JSeparator(); - this.ivjJSeparator6.setName("JSeparator6"); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjJSeparator6; - } +private javax.swing.JProgressBar getJProgressBarMemory() { + if (ivjJProgressBarMemory == null) { + try { + ivjJProgressBarMemory = new javax.swing.JProgressBar(); + ivjJProgressBarMemory.setName("JProgressBarMemory"); + ivjJProgressBarMemory.setMinimum(0); + ivjJProgressBarMemory.setStringPainted(true); + ivjJProgressBarMemory.setToolTipText("Java Memory Usage"); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjJProgressBarMemory; +} - private javax.swing.JMenuItem getMathFromBioMenuItem() { - if (this.ivjMathFromBioMenuItem == null) { - try { - this.ivjMathFromBioMenuItem = new javax.swing.JMenuItem(); - this.ivjMathFromBioMenuItem.setName("MathFromBioMenuItem"); - this.ivjMathFromBioMenuItem.setText("From BioModel"); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjMathFromBioMenuItem; - } +private javax.swing.JSeparator getJSeparator6() { + if (ivjJSeparator6 == null) { + try { + ivjJSeparator6 = new javax.swing.JSeparator(); + ivjJSeparator6.setName("JSeparator6"); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjJSeparator6; +} - private javax.swing.JMenu getMathMenu() { - if (this.ivjMathMenu == null) { - try { - this.ivjMathMenu = new javax.swing.JMenu(); - this.ivjMathMenu.setName("MathMenu"); - this.ivjMathMenu.setText("MathModel"); - this.ivjMathMenu.add(this.getNonSpatialMenuItem()); - this.ivjMathMenu.add(this.getSpatialExistingMenuItem()); - this.ivjMathMenu.add(this.getSpatialCreateNewMenuItem()); - this.ivjMathMenu.add(this.getMathFromBioMenuItem()); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjMathMenu; - } +private javax.swing.JMenuItem getMathFromBioMenuItem() { + if (ivjMathFromBioMenuItem == null) { + try { + ivjMathFromBioMenuItem = new javax.swing.JMenuItem(); + ivjMathFromBioMenuItem.setName("MathFromBioMenuItem"); + ivjMathFromBioMenuItem.setText("From BioModel"); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjMathFromBioMenuItem; +} - private javax.swing.JMenu getNewMenuItem() { - if (this.ivjNewMenuItem == null) { - try { - this.ivjNewMenuItem = new javax.swing.JMenu(); - this.ivjNewMenuItem.setName("NewMenuItem"); - this.ivjNewMenuItem.setText("New"); - this.ivjNewMenuItem.add(this.getJMenuItemNewBioModel()); - this.ivjNewMenuItem.add(this.getMathMenu()); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjNewMenuItem; - } +private javax.swing.JMenu getMathMenu() { + if (ivjMathMenu == null) { + try { + ivjMathMenu = new javax.swing.JMenu(); + ivjMathMenu.setName("MathMenu"); + ivjMathMenu.setText("MathModel"); + ivjMathMenu.add(getNonSpatialMenuItem()); + ivjMathMenu.add(getSpatialExistingMenuItem()); + ivjMathMenu.add(getSpatialCreateNewMenuItem()); + ivjMathMenu.add(getMathFromBioMenuItem()); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjMathMenu; +} - private javax.swing.JMenuItem getNonSpatialMenuItem() { - if (this.ivjNonSpatialMenuItem == null) { - try { - this.ivjNonSpatialMenuItem = new javax.swing.JMenuItem(); - this.ivjNonSpatialMenuItem.setName("NonSpatialMenuItem"); - this.ivjNonSpatialMenuItem.setText("Non-Spatial"); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjNonSpatialMenuItem; - } +private javax.swing.JMenu getNewMenuItem() { + if (ivjNewMenuItem == null) { + try { + ivjNewMenuItem = new javax.swing.JMenu(); + ivjNewMenuItem.setName("NewMenuItem"); + ivjNewMenuItem.setText("New"); + ivjNewMenuItem.add(getJMenuItemNewBioModel()); + ivjNewMenuItem.add(getMathMenu()); + ivjNewMenuItem.add(getGeometryMenuItem()); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjNewMenuItem; +} - private javax.swing.JMenu getOpenMenuItem() { - if (this.ivjOpenMenuItem == null) { - try { - this.ivjOpenMenuItem = new javax.swing.JMenu(); - this.ivjOpenMenuItem.setName("OpenMenuItem"); - this.ivjOpenMenuItem.setText("Open"); - this.ivjOpenMenuItem.setEnabled(false); - this.ivjOpenMenuItem.add(this.getJMenuItemOpenBioModel()); - this.ivjOpenMenuItem.add(this.getJMenuItemOpenMathModel()); - this.ivjOpenMenuItem.add(this.getJMenuItemOpenLocal()); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjOpenMenuItem; - } +private javax.swing.JMenuItem getNonSpatialMenuItem() { + if (ivjNonSpatialMenuItem == null) { + try { + ivjNonSpatialMenuItem = new javax.swing.JMenuItem(); + ivjNonSpatialMenuItem.setName("NonSpatialMenuItem"); + ivjNonSpatialMenuItem.setText("Non-Spatial"); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjNonSpatialMenuItem; +} + +private javax.swing.JMenu getOpenMenuItem() { + if (ivjOpenMenuItem == null) { + try { + ivjOpenMenuItem = new javax.swing.JMenu(); + ivjOpenMenuItem.setName("OpenMenuItem"); + ivjOpenMenuItem.setText("Open"); + ivjOpenMenuItem.setEnabled(false); + ivjOpenMenuItem.add(getJMenuItemOpenBioModel()); + ivjOpenMenuItem.add(getJMenuItemOpenMathModel()); + ivjOpenMenuItem.add(getJMenuItemOpenGeometry()); + ivjOpenMenuItem.add(getJMenuItemOpenLocal()); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjOpenMenuItem; +} //private static String createImageJServiceMenuText() { @@ -1093,111 +1123,109 @@ private javax.swing.JMenu getOpenMenuItem() { // //} - private JMenuItem getRunVFrapItem() { - if (this.ivjRunVFrapMenuItem == null) { - try { - this.ivjRunVFrapMenuItem = new JMenuItem(); - this.ivjRunVFrapMenuItem.setName("RunVFrapMenuItem"); - this.ivjRunVFrapMenuItem.setText("Launch Virtual FRAP"); - } catch (Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjRunVFrapMenuItem; - } - - private javax.swing.JMenuItem getSave_AsMenuItem() { - if (this.ivjSave_AsMenuItem == null) { - try { - this.ivjSave_AsMenuItem = new javax.swing.JMenuItem(); - this.ivjSave_AsMenuItem.setName("Save_AsMenuItem"); - this.ivjSave_AsMenuItem.setText("Save As..."); - this.ivjSave_AsMenuItem.setEnabled(true); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjSave_AsMenuItem; - } +private JMenuItem getRunVFrapItem() { + if (ivjRunVFrapMenuItem == null) { + try { + ivjRunVFrapMenuItem = new JMenuItem(); + ivjRunVFrapMenuItem.setName("RunVFrapMenuItem"); + ivjRunVFrapMenuItem.setText("Launch Virtual FRAP"); + } catch (Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjRunVFrapMenuItem; +} - private javax.swing.JMenuItem getSave_AsLocalMenuItem() { - if (this.ivjSave_AsLocalMenuItem == null) { - try { - this.ivjSave_AsLocalMenuItem = new javax.swing.JMenuItem(); - this.ivjSave_AsLocalMenuItem.setName("Save_AsLocalMenuItem"); - this.ivjSave_AsLocalMenuItem.setText("Save As Local..."); - this.ivjSave_AsLocalMenuItem.setEnabled(true); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjSave_AsLocalMenuItem; - } +private javax.swing.JMenuItem getSave_AsMenuItem() { + if (ivjSave_AsMenuItem == null) { + try { + ivjSave_AsMenuItem = new javax.swing.JMenuItem(); + ivjSave_AsMenuItem.setName("Save_AsMenuItem"); + ivjSave_AsMenuItem.setText("Save As..."); + ivjSave_AsMenuItem.setEnabled(true); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjSave_AsMenuItem; +} - private javax.swing.JMenuItem getSave_VersionMenuItem() { - if (this.ivjSave_VersionMenuItem == null) { - try { - this.ivjSave_VersionMenuItem = new javax.swing.JMenuItem(); - this.ivjSave_VersionMenuItem.setName("Save_VersionMenuItem"); - this.ivjSave_VersionMenuItem.setText("Save New Version"); - this.ivjSave_VersionMenuItem.setEnabled(false); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjSave_VersionMenuItem; - } +private javax.swing.JMenuItem getSave_AsLocalMenuItem() { + if (ivjSave_AsLocalMenuItem == null) { + try { + ivjSave_AsLocalMenuItem = new javax.swing.JMenuItem(); + ivjSave_AsLocalMenuItem.setName("Save_AsLocalMenuItem"); + ivjSave_AsLocalMenuItem.setText("Save As Local..."); + ivjSave_AsLocalMenuItem.setEnabled(true); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjSave_AsLocalMenuItem; +} - /** - * Return the SaveMenuItem property value. - * - * @return javax.swing.JMenuItem - */ - /* WARNING: THIS METHOD WILL BE REGENERATED. */ - private javax.swing.JMenuItem getSaveMenuItem() { - if (this.ivjSaveMenuItem == null) { - try { - this.ivjSaveMenuItem = new javax.swing.JMenuItem(); - this.ivjSaveMenuItem.setName("SaveMenuItem"); - this.ivjSaveMenuItem.setText("Save"); - this.ivjSaveMenuItem.setEnabled(false); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjSaveMenuItem; - } +private javax.swing.JMenuItem getSave_VersionMenuItem() { + if (ivjSave_VersionMenuItem == null) { + try { + ivjSave_VersionMenuItem = new javax.swing.JMenuItem(); + ivjSave_VersionMenuItem.setName("Save_VersionMenuItem"); + ivjSave_VersionMenuItem.setText("Save New Version"); + ivjSave_VersionMenuItem.setEnabled(false); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjSave_VersionMenuItem; +} - private javax.swing.JMenuItem getPermissionsMenuItem() { - if (this.jMenuItemPermissions == null) { - try { - this.jMenuItemPermissions = new javax.swing.JMenuItem(); - this.jMenuItemPermissions.setText("Permissions..."); - this.jMenuItemPermissions.setEnabled(false); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.jMenuItemPermissions; - } +/** + * Return the SaveMenuItem property value. + * @return javax.swing.JMenuItem + */ +/* WARNING: THIS METHOD WILL BE REGENERATED. */ +private javax.swing.JMenuItem getSaveMenuItem() { + if (ivjSaveMenuItem == null) { + try { + ivjSaveMenuItem = new javax.swing.JMenuItem(); + ivjSaveMenuItem.setName("SaveMenuItem"); + ivjSaveMenuItem.setText("Save"); + ivjSaveMenuItem.setEnabled(false); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjSaveMenuItem; +} - private javax.swing.JMenuItem getGrantPermissionsToVCellSupportMenuItem() { - if (this.jMenuItemGrantPermissionsToVCellSupport == null) { - try { - this.jMenuItemGrantPermissionsToVCellSupport = new javax.swing.JMenuItem(); - this.jMenuItemGrantPermissionsToVCellSupport.setText("Grant Permissions To VCell Support..."); - this.jMenuItemGrantPermissionsToVCellSupport.setEnabled(false); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.jMenuItemGrantPermissionsToVCellSupport; - } +private javax.swing.JMenuItem getPermissionsMenuItem() { + if (jMenuItemPermissions == null) { + try { + jMenuItemPermissions = new javax.swing.JMenuItem(); + jMenuItemPermissions.setText("Permissions..."); + jMenuItemPermissions.setEnabled(false); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return jMenuItemPermissions; +} +private javax.swing.JMenuItem getGrantPermissionsToVCellSupportMenuItem() { + if (jMenuItemGrantPermissionsToVCellSupport == null) { + try { + jMenuItemGrantPermissionsToVCellSupport = new javax.swing.JMenuItem(); + jMenuItemGrantPermissionsToVCellSupport.setText("Grant Permissions To VCell Support..."); + jMenuItemGrantPermissionsToVCellSupport.setEnabled(false); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return jMenuItemGrantPermissionsToVCellSupport; +} - private javax.swing.JMenu getServerMenu() { - if (this.ivjServerMenu == null) { - try { - this.ivjServerMenu = new javax.swing.JMenu(); +private javax.swing.JMenu getServerMenu() { + if (ivjServerMenu == null) { + try { + ivjServerMenu = new javax.swing.JMenu(); // //getImageJServiceMenuItem().setText(createImageJServiceMenuText()); // ivjServerMenu.addMenuListener(new MenuListener() { // @Override @@ -1211,870 +1239,859 @@ private javax.swing.JMenu getServerMenu() { // public void menuCanceled(MenuEvent e) { // } // }); - this.ivjServerMenu.setName("ServerMenu"); - this.ivjServerMenu.setText("Account"); - this.ivjServerMenu.add(this.getManageUserMenuItem()); - this.ivjServerMenu.add(this.getChange_ProxyMenuItem()); - this.ivjServerMenu.add(this.getLogOutMenuItem()); - this.ivjServerMenu.add(this.getReconnectUserMenuItem()); + ivjServerMenu.setName("ServerMenu"); + ivjServerMenu.setText("Account"); + ivjServerMenu.add(getManageUserMenuItem()); + ivjServerMenu.add(getChange_ProxyMenuItem()); + ivjServerMenu.add(getLogOutMenuItem()); + ivjServerMenu.add(getReconnectUserMenuItem()); // ivjServerMenu.add(getImageJServiceMenuItem()); // moved to Tools - this.ivjServerMenu.add(new JSeparator()); - this.ivjServerMenu.add(this.getViewJobsMenuItem()); - // user code begin {1} - // user code end - } catch (java.lang.Throwable ivjExc) { - // user code begin {2} - // user code end - this.handleException(ivjExc); - } - } - return this.ivjServerMenu; - } - - /** - * Return the SpatialMenuItem property value. - * - * @return javax.swing.JMenuItem - */ - /* WARNING: THIS METHOD WILL BE REGENERATED. */ - private static final String MATHMODEL_SPATIAL_EXISTING = "Spatial from database geometry"; - - private javax.swing.JMenuItem getSpatialExistingMenuItem() { - if (this.ivjSpatialExistingMenuItem == null) { - try { - this.ivjSpatialExistingMenuItem = new javax.swing.JMenuItem(); - this.ivjSpatialExistingMenuItem.setName("SpatialMenuItem"); - this.ivjSpatialExistingMenuItem.setText(MATHMODEL_SPATIAL_EXISTING); - // user code begin {1} - // user code end - } catch (java.lang.Throwable ivjExc) { - // user code begin {2} - // user code end - this.handleException(ivjExc); - } - } - return this.ivjSpatialExistingMenuItem; - } - - private static final String MATHMODEL_SPATIAL_CREATENEW = "Spatial from new geometry"; - private JMenuItem mntmLicenseInformation; - private JSeparator separator; - - private javax.swing.JMenuItem getSpatialCreateNewMenuItem() { - if (this.ivjSpatialCreateNewMenuItem == null) { - try { - this.ivjSpatialCreateNewMenuItem = new javax.swing.JMenuItem(); - this.ivjSpatialCreateNewMenuItem.setName("SpatialMenuItem"); - this.ivjSpatialCreateNewMenuItem.setText(MATHMODEL_SPATIAL_CREATENEW); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjSpatialCreateNewMenuItem; - } + ivjServerMenu.add(new JSeparator()); + ivjServerMenu.add(getViewJobsMenuItem()); + // user code begin {1} + // user code end + } catch (java.lang.Throwable ivjExc) { + // user code begin {2} + // user code end + handleException(ivjExc); + } + } + return ivjServerMenu; +} - /** - * Return the StatusbarMenuItem property value. - * - * @return javax.swing.JCheckBoxMenuItem - */ - private javax.swing.JCheckBoxMenuItem getStatusbarMenuItem() { - if (this.ivjStatusbarMenuItem == null) { - try { - this.ivjStatusbarMenuItem = new javax.swing.JCheckBoxMenuItem(); - this.ivjStatusbarMenuItem.setName("StatusbarMenuItem"); - this.ivjStatusbarMenuItem.setSelected(true); - this.ivjStatusbarMenuItem.setText("Status Bar"); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjStatusbarMenuItem; - } +/** + * Return the SpatialMenuItem property value. + * @return javax.swing.JMenuItem + */ +/* WARNING: THIS METHOD WILL BE REGENERATED. */ +private static final String MATHMODEL_SPATIAL_EXISTING = "Spatial from database geometry"; +private javax.swing.JMenuItem getSpatialExistingMenuItem() { + if (ivjSpatialExistingMenuItem == null) { + try { + ivjSpatialExistingMenuItem = new javax.swing.JMenuItem(); + ivjSpatialExistingMenuItem.setName("SpatialMenuItem"); + ivjSpatialExistingMenuItem.setText(MATHMODEL_SPATIAL_EXISTING); + // user code begin {1} + // user code end + } catch (java.lang.Throwable ivjExc) { + // user code begin {2} + // user code end + handleException(ivjExc); + } + } + return ivjSpatialExistingMenuItem; +} - /** - * Return the StatusBarPane property value. - * - * @return javax.swing.JPanel - */ - private javax.swing.JPanel getStatusBarPane() { - if (this.ivjStatusBarPane == null) { - try { - this.ivjStatusBarPane = new javax.swing.JPanel(); - this.ivjStatusBarPane.setName("StatusBarPane"); - this.ivjStatusBarPane.setLayout(new GridBagLayout()); - - int gridx = 0; - GridBagConstraints gbc = new GridBagConstraints(); - gbc.gridx = gridx; - gbc.gridy = 0; - gbc.weighty = 1; - gbc.fill = GridBagConstraints.VERTICAL; - gbc.insets = new Insets(4, 4, 4, 4); - this.ivjStatusBarPane.add(this.getJProgressBarConnection(), gbc); - - gridx++; - gbc = new GridBagConstraints(); - gbc.gridx = gridx; - gbc.gridy = 0; - gbc.insets = new Insets(2, 5, 2, 2); - this.ivjStatusBarPane.add(this.getIconBar(), gbc); - - gridx++; - gbc = new GridBagConstraints(); - gbc.gridx = gridx; - gbc.gridy = 0; - gbc.weightx = 1; - gbc.fill = GridBagConstraints.HORIZONTAL; - gbc.insets = new Insets(4, 4, 4, 4); - this.ivjStatusBarPane.add(this.getWarningBar(), gbc); - - gridx++; - gbc = new GridBagConstraints(); - gbc.gridx = gridx; - gbc.gridy = 0; - gbc.weighty = 1; - gbc.fill = GridBagConstraints.VERTICAL; - gbc.insets = new Insets(4, 4, 4, 4); - this.ivjStatusBarPane.add(this.getJProgressBarMemory(), gbc); +private static final String MATHMODEL_SPATIAL_CREATENEW = "Spatial from new geometry"; +private JMenuItem mntmLicenseInformation; +private JSeparator separator; + +private javax.swing.JMenuItem getSpatialCreateNewMenuItem() { + if (ivjSpatialCreateNewMenuItem == null) { + try { + ivjSpatialCreateNewMenuItem = new javax.swing.JMenuItem(); + ivjSpatialCreateNewMenuItem.setName("SpatialMenuItem"); + ivjSpatialCreateNewMenuItem.setText(MATHMODEL_SPATIAL_CREATENEW); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjSpatialCreateNewMenuItem; +} - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.ivjStatusBarPane; - } +/** + * Return the StatusbarMenuItem property value. + * @return javax.swing.JCheckBoxMenuItem + */ +private javax.swing.JCheckBoxMenuItem getStatusbarMenuItem() { + if (ivjStatusbarMenuItem == null) { + try { + ivjStatusbarMenuItem = new javax.swing.JCheckBoxMenuItem(); + ivjStatusbarMenuItem.setName("StatusbarMenuItem"); + ivjStatusbarMenuItem.setSelected(true); + ivjStatusbarMenuItem.setText("Status Bar"); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjStatusbarMenuItem; +} - public JLabel getWarningBar() { - if (this.warningText == null) { - try { - this.warningText = new JLabel(); - this.warningText.setName(""); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.warningText; - } +/** + * Return the StatusBarPane property value. + * @return javax.swing.JPanel + */ +private javax.swing.JPanel getStatusBarPane() { + if (ivjStatusBarPane == null) { + try { + ivjStatusBarPane = new javax.swing.JPanel(); + ivjStatusBarPane.setName("StatusBarPane"); + ivjStatusBarPane.setLayout(new GridBagLayout()); + + int gridx = 0; + GridBagConstraints gbc = new GridBagConstraints(); + gbc.gridx = gridx; + gbc.gridy = 0; + gbc.weighty = 1; + gbc.fill = GridBagConstraints.VERTICAL; + gbc.insets = new Insets(4, 4, 4, 4); + ivjStatusBarPane.add(getJProgressBarConnection(), gbc); + + gridx++; + gbc = new GridBagConstraints(); + gbc.gridx = gridx; + gbc.gridy = 0; + gbc.insets = new Insets(2, 5, 2, 2); + ivjStatusBarPane.add(getIconBar(), gbc); + + gridx++; + gbc = new GridBagConstraints(); + gbc.gridx = gridx; + gbc.gridy = 0; + gbc.weightx = 1; + gbc.fill = GridBagConstraints.HORIZONTAL; + gbc.insets = new Insets(4, 4, 4, 4); + ivjStatusBarPane.add(getWarningBar(), gbc); + + gridx++; + gbc = new GridBagConstraints(); + gbc.gridx = gridx; + gbc.gridy = 0; + gbc.weighty = 1; + gbc.fill = GridBagConstraints.VERTICAL; + gbc.insets = new Insets(4, 4, 4, 4); + ivjStatusBarPane.add(getJProgressBarMemory(), gbc); + + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return ivjStatusBarPane; +} - public JLabel getIconBar() { - if (this.iconText == null) { - try { - this.iconText = new JLabel(); - this.iconText.setName(""); - this.iconText.setIcon(VCellIcons.noteRedIcon); - this.iconText.setToolTipText("View VCell Administrator Notification"); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - } - return this.iconText; - } +public JLabel getWarningBar() { + if (warningText == null) { + try { + warningText = new JLabel(); + warningText.setName(""); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return warningText; +} +public JLabel getIconBar() { + if (iconText == null) { + try { + iconText = new JLabel(); + iconText.setName(""); + iconText.setIcon(VCellIcons.noteRedIcon); + iconText.setToolTipText("View VCell Administrator Notification"); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + } + return iconText; +} - //private static final String notificationsUrl = "//cfs05.cam.uchc.edu/vcell/apache_webroot/htdocs/webstart/VCell_alert/VCell_Alert.html"; - private void checkForNotifications() { - int code = HttpURLConnection.HTTP_BAD_REQUEST; - try { - URL u = new URL(notificationsUrl); - HttpURLConnection huc = (HttpURLConnection) u.openConnection(); - huc.setRequestMethod("HEAD"); // probably cheaper than huc.setRequestMethod ("GET"); - huc.connect(); - code = huc.getResponseCode(); - } catch (IOException e) { - // we just eat the exception +//private static final String notificationsUrl = "//cfs05.cam.uchc.edu/vcell/apache_webroot/htdocs/webstart/VCell_alert/VCell_Alert.html"; +private void checkForNotifications() { + int code = HttpURLConnection.HTTP_BAD_REQUEST; + try { + URL u = new URL(notificationsUrl); + HttpURLConnection huc = (HttpURLConnection)u.openConnection (); + huc.setRequestMethod("HEAD"); // probably cheaper than huc.setRequestMethod ("GET"); + huc.connect(); + code = huc.getResponseCode(); + } catch (IOException e) { + // we just eat the exception // e.printStackTrace(); - code = HttpURLConnection.HTTP_INTERNAL_ERROR; - } - if (code != HttpURLConnection.HTTP_OK) { - this.getIconBar().setEnabled(false); - this.getIconBar().setVisible(false); - } else { - this.getIconBar().setEnabled(true); - this.getIconBar().setVisible(true); - - Timer blinkTimer = new Timer(500, new ActionListener() { - private int count = 0; - private final int maxCount = 110; // 55 seconds - - public void actionPerformed(ActionEvent e) { - if (this.count >= this.maxCount) { - DocumentWindow.this.getIconBar().setIcon(VCellIcons.noteRedIcon); // must remain on the noteRedIcon - ((Timer) e.getSource()).stop(); - } else { - if (this.count % 2 == 0) { - DocumentWindow.this.getIconBar().setIcon(VCellIcons.noteRedIcon); - } else { - DocumentWindow.this.getIconBar().setIcon(VCellIcons.noteWhiteIcon); - } - this.count++; - } - } - }); - blinkTimer.start(); - } - } + code = HttpURLConnection.HTTP_INTERNAL_ERROR; + } + if(code != HttpURLConnection.HTTP_OK) { + getIconBar().setEnabled(false); + getIconBar().setVisible(false); + } else { + getIconBar().setEnabled(true); + getIconBar().setVisible(true); + + Timer blinkTimer = new Timer(500, new ActionListener() { + private int count = 0; + private int maxCount = 110; // 55 seconds + public void actionPerformed(ActionEvent e) { + if (count >= maxCount) { + getIconBar().setIcon(VCellIcons.noteRedIcon); // must remain on the noteRedIcon + ((Timer) e.getSource()).stop(); + } else { + if(count %2 == 0) { + getIconBar().setIcon(VCellIcons.noteRedIcon); + } else { + getIconBar().setIcon(VCellIcons.noteWhiteIcon); + } + count++; + } + } + }); + blinkTimer.start(); + } +} - private javax.swing.JMenuItem getTestingFrameworkMenuItem() { - if (this.ivjTestingFrameworkMenuItem == null) { - try { - this.ivjTestingFrameworkMenuItem = new javax.swing.JMenuItem(); - this.ivjTestingFrameworkMenuItem.setName("TestingFrameworkMenuItem"); - this.ivjTestingFrameworkMenuItem.setText("Testing Framework ..."); - // user code begin {1} - // user code end - } catch (java.lang.Throwable ivjExc) { - // user code begin {2} - // user code end - this.handleException(ivjExc); - } - } - return this.ivjTestingFrameworkMenuItem; - } +private javax.swing.JMenuItem getTestingFrameworkMenuItem() { + if (ivjTestingFrameworkMenuItem == null) { + try { + ivjTestingFrameworkMenuItem = new javax.swing.JMenuItem(); + ivjTestingFrameworkMenuItem.setName("TestingFrameworkMenuItem"); + ivjTestingFrameworkMenuItem.setText("Testing Framework ..."); + // user code begin {1} + // user code end + } catch (java.lang.Throwable ivjExc) { + // user code begin {2} + // user code end + handleException(ivjExc); + } + } + return ivjTestingFrameworkMenuItem; +} - /** - * Insert the method's description here. - * Creation date: (5/24/2004 3:38:47 PM) - * - * @return cbit.vcell.client.desktop.TopLevelWindowManager - */ - public TopLevelWindowManager getTopLevelWindowManager() { - return this.getWindowManager(); - } +/** + * Insert the method's description here. + * Creation date: (5/24/2004 3:38:47 PM) + * @return cbit.vcell.client.desktop.TopLevelWindowManager + */ +public TopLevelWindowManager getTopLevelWindowManager() { + return getWindowManager(); +} - /** - * Gets the windowManager property (cbit.vcell.client.desktop.DocumentWindowManager) value. - * - * @return The windowManager property value. - * @see #setWindowManager - */ - private DocumentWindowManager getWindowManager() { - return this.fieldWindowManager; - } +/** + * Gets the windowManager property (cbit.vcell.client.desktop.DocumentWindowManager) value. + * @return The windowManager property value. + * @see #setWindowManager + */ +private DocumentWindowManager getWindowManager() { + return fieldWindowManager; +} - /** - * Called whenever the part throws an exception. - * - * @param exception java.lang.Throwable - */ - private void handleException(java.lang.Throwable exception) { +/** + * Called whenever the part throws an exception. + * @param exception java.lang.Throwable + */ +private void handleException(java.lang.Throwable exception) { - /* Uncomment the following lines to print uncaught exceptions to stdout */ - System.out.println("--------- UNCAUGHT EXCEPTION ---------"); - exception.printStackTrace(System.out); - } + /* Uncomment the following lines to print uncaught exceptions to stdout */ + System.out.println("--------- UNCAUGHT EXCEPTION ---------"); + exception.printStackTrace(System.out); +} - private void importExternalDocument() { - this.getWindowManager().openDocument(VCDocumentType.EXTERNALFILE_DOC); - } +private void importExternalDocument() { + getWindowManager().openDocument(VCDocumentType.EXTERNALFILE_DOC); +} - private void importPathway(PathwayImportOption pathwayImportOption) { - this.getWindowManager().importPathway(pathwayImportOption); - } +private void importPathway(PathwayImportOption pathwayImportOption) { + getWindowManager().importPathway(pathwayImportOption); +} - /** - * Initializes connections - * - * @throws java.lang.Exception The exception description. - */ - /* WARNING: THIS METHOD WILL BE REGENERATED. */ - private void initConnections() throws java.lang.Exception { - // user code begin {1} - // user code end - this.getAbout_BoxMenuItem().addActionListener(this.ivjEventHandler); - this.getStatusbarMenuItem().addItemListener(this.ivjEventHandler); - this.getCloseMenuItem().addActionListener(this.ivjEventHandler); - this.getExitMenuItem().addActionListener(this.ivjEventHandler); - this.getJMenuItemNewBioModel().addActionListener(this.ivjEventHandler); - this.getJMenuItemOpenBioModel().addActionListener(this.ivjEventHandler); - this.getJMenuItemOpenMathModel().addActionListener(this.ivjEventHandler); - this.getJMenuItemOpenLocal().addActionListener(this.ivjEventHandler); - this.getSaveMenuItem().addActionListener(this.ivjEventHandler); - this.getSave_AsMenuItem().addActionListener(this.ivjEventHandler); - this.getSave_AsLocalMenuItem().addActionListener(this.ivjEventHandler); - this.getJMenuItemImport().addActionListener(this.ivjEventHandler); - this.getSave_VersionMenuItem().addActionListener(this.ivjEventHandler); - this.getManageUserMenuItem().addActionListener(this.ivjEventHandler); - this.getChange_ProxyMenuItem().addActionListener(this.ivjEventHandler); - this.getLogOutMenuItem().addActionListener(this.ivjEventHandler); - this.getReconnectUserMenuItem().addActionListener(this.ivjEventHandler); +/** + * Initializes connections + * @exception java.lang.Exception The exception description. + */ +/* WARNING: THIS METHOD WILL BE REGENERATED. */ +private void initConnections() throws java.lang.Exception { + // user code begin {1} + // user code end + getAbout_BoxMenuItem().addActionListener(ivjEventHandler); + getStatusbarMenuItem().addItemListener(ivjEventHandler); + getCloseMenuItem().addActionListener(ivjEventHandler); + getExitMenuItem().addActionListener(ivjEventHandler); + getJMenuItemNewBioModel().addActionListener(ivjEventHandler); + getJMenuItemOpenBioModel().addActionListener(ivjEventHandler); + getJMenuItemOpenMathModel().addActionListener(ivjEventHandler); + getJMenuItemOpenLocal().addActionListener(ivjEventHandler); + getSaveMenuItem().addActionListener(ivjEventHandler); + getSave_AsMenuItem().addActionListener(ivjEventHandler); + getSave_AsLocalMenuItem().addActionListener(ivjEventHandler); + getJMenuItemImport().addActionListener(ivjEventHandler); + getSave_VersionMenuItem().addActionListener(ivjEventHandler); + getManageUserMenuItem().addActionListener(ivjEventHandler); + getChange_ProxyMenuItem().addActionListener(ivjEventHandler); + getLogOutMenuItem().addActionListener(ivjEventHandler); + getReconnectUserMenuItem().addActionListener(ivjEventHandler); // getImageJServiceMenuItem().addActionListener(ivjEventHandler); - this.getJMenuItemRevert().addActionListener(this.ivjEventHandler); - this.getJMenuItemCompare().addActionListener(this.ivjEventHandler); - this.getNonSpatialMenuItem().addActionListener(this.ivjEventHandler); - this.getMathFromBioMenuItem().addActionListener(this.ivjEventHandler); - this.getSpatialExistingMenuItem().addActionListener(this.ivjEventHandler); - this.getSpatialCreateNewMenuItem().addActionListener(this.ivjEventHandler); - this.getJMenuItemExport().addActionListener(this.ivjEventHandler); + getJMenuItemRevert().addActionListener(ivjEventHandler); + getJMenuItemCompare().addActionListener(ivjEventHandler); + getNonSpatialMenuItem().addActionListener(ivjEventHandler); + getMathFromBioMenuItem().addActionListener(ivjEventHandler); + getSpatialExistingMenuItem().addActionListener(ivjEventHandler); + getSpatialCreateNewMenuItem().addActionListener(ivjEventHandler); + getJMenuItemExport().addActionListener(ivjEventHandler); // getEdit_Annotation_JMenuItem().addActionListener(ivjEventHandler); - this.getTestingFrameworkMenuItem().addActionListener(this.ivjEventHandler); - this.getJMenuItemOnlineHelp().addActionListener(this.ivjEventHandler); - this.getJMenuItemOnlineSupport().addActionListener(this.ivjEventHandler); - this.getJMenuItemDiscussionGroup().addActionListener(this.ivjEventHandler); - this.getJMenuItemManagePermissions().addActionListener(this.ivjEventHandler); - this.getJMenuItemOnlinePublish().addActionListener(this.ivjEventHandler); - this.getGrantPermissionsToVCellSupportMenuItem().addActionListener(this.ivjEventHandler); - - this.getJMenuItemEmailSupport().addActionListener(this.ivjEventHandler); - this.getNewHelpMenuItem().addActionListener(this.ivjEventHandler); + getTestingFrameworkMenuItem().addActionListener(ivjEventHandler); + getJMenuItemOnlineHelp().addActionListener(ivjEventHandler); + getJMenuItemOnlineSupport().addActionListener(ivjEventHandler); + getJMenuItemDiscussionGroup().addActionListener(ivjEventHandler); + getJMenuItemManagePermissions().addActionListener(ivjEventHandler); + getJMenuItemOnlinePublish().addActionListener(ivjEventHandler); + getGrantPermissionsToVCellSupportMenuItem().addActionListener(ivjEventHandler); + + getJMenuItemEmailSupport().addActionListener(ivjEventHandler); + getNewHelpMenuItem().addActionListener(ivjEventHandler); // getRunBNGMenuItem().addActionListener(ivjEventHandler); - this.getRunVFrapItem().addActionListener(this.ivjEventHandler); - this.getTransMAMenuItem().addActionListener(this.ivjEventHandler); - this.getViewJobsMenuItem().addActionListener(this.ivjEventHandler); - this.getJMenuItemFieldData().addActionListener(this.ivjEventHandler); - this.getPermissionsMenuItem().addActionListener(this.ivjEventHandler); - - this.getIconBar().addMouseListener(this.ivjEventHandler); - this.getExportedDataViewer().addActionListener(this.ivjEventHandler); - } - - /** - * Initialize the class. - */ - /* WARNING: THIS METHOD WILL BE REGENERATED. */ - private void initialize() { - try { - this.setName("DocumentWindow"); - this.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE); - this.setIconImage(VCellIcons.getJFrameImageIcon()); - this.setJMenuBar(this.getDocumentWindowJMenuBar()); - this.setSize(460, 536); - this.setTitle("DocumentWindow"); - this.getContentPane().add(this.getStatusBarPane(), BorderLayout.SOUTH); - this.initConnections(); - this.checkForNotifications(); - } catch (java.lang.Throwable ivjExc) { - this.handleException(ivjExc); - } - // user code begin {2} - // user code end - } - - - private void invokeOnlineHelp() { - - PopupGenerator.browserLauncher(this, DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VCELL_URL), - "Please visit " + DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VCELL_URL) + " for Online Help"); - } + getRunVFrapItem().addActionListener(ivjEventHandler); + getTransMAMenuItem().addActionListener(ivjEventHandler); + getViewJobsMenuItem().addActionListener(ivjEventHandler); + getJMenuItemFieldData().addActionListener(ivjEventHandler); + getPermissionsMenuItem().addActionListener(ivjEventHandler); + + getIconBar().addMouseListener(ivjEventHandler); + getExportedDataViewer().addActionListener(ivjEventHandler); +} - private void invokeOnlineSupport() { +/** + * Initialize the class. + */ +/* WARNING: THIS METHOD WILL BE REGENERATED. */ +private void initialize() { + try { + setName("DocumentWindow"); + setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE); + setIconImage(VCellIcons.getJFrameImageIcon()); + setJMenuBar(getDocumentWindowJMenuBar()); + setSize(460, 536); + setTitle("DocumentWindow"); + getContentPane().add(getStatusBarPane(), BorderLayout.SOUTH); + initConnections(); + checkForNotifications(); + } catch (java.lang.Throwable ivjExc) { + handleException(ivjExc); + } + // user code begin {2} + // user code end +} - PopupGenerator.browserLauncher(this, DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_SUPPORT_URL), - "Please visit " + DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_SUPPORT_URL) + " for Online Support"); - } - private void invokeDiscussionGroup() { +private void invokeOnlineHelp() { - PopupGenerator.browserLauncher(this, DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_GOOGLE_DISCUSS_URL), - "Please visit " + DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_GOOGLE_DISCUSS_URL) + " for Discussion Group"); - } + PopupGenerator.browserLauncher(this, DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VCELL_URL), + "Please visit "+ DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VCELL_URL)+" for Online Help"); +} +private void invokeOnlineSupport() { - private void invokeManagePermissions() { + PopupGenerator.browserLauncher(this, DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_SUPPORT_URL), + "Please visit "+ DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_SUPPORT_URL)+" for Online Support"); +} +private void invokeDiscussionGroup() { - PopupGenerator.browserLauncher(this, DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_TUT_PERMISSION_URL), - "Please visit " + DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_TUT_PERMISSION_URL) + " for instructions on how to change permissions to your Model"); - } + PopupGenerator.browserLauncher(this, DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_GOOGLE_DISCUSS_URL), + "Please visit "+ DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_GOOGLE_DISCUSS_URL)+" for Discussion Group"); +} +private void invokeManagePermissions() { - private void invokeOnlinePublish() { + PopupGenerator.browserLauncher(this, DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_TUT_PERMISSION_URL), + "Please visit "+ DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_TUT_PERMISSION_URL)+" for instructions on how to change permissions to your Model"); +} +private void invokeOnlinePublish() { - PopupGenerator.browserLauncher(this, DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.ACKNOWLEGE_PUB__WEB_URL), - "Please visit " + DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.ACKNOWLEGE_PUB__WEB_URL) + " for instructions on how to Publish your Model"); - } + PopupGenerator.browserLauncher(this, DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.ACKNOWLEGE_PUB__WEB_URL), + "Please visit "+ DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.ACKNOWLEGE_PUB__WEB_URL)+" for instructions on how to Publish your Model"); +} private void newDocument(java.awt.event.ActionEvent actionEvent) { - AsynchClientTask[] taskArray = null; - if (actionEvent.getActionCommand().equals("BioModel")) { - taskArray = this.getWindowManager().newDocument(new VCDocument.DocumentCreationInfo(VCDocumentType.BIOMODEL_DOC, VCDocument.BIO_OPTION_DEFAULT)); - } else if (actionEvent.getActionCommand().equals("Non-Spatial")) { - taskArray = this.getWindowManager().newDocument(new VCDocument.DocumentCreationInfo(VCDocumentType.MATHMODEL_DOC, VCDocument.MATH_OPTION_NONSPATIAL)); - } else if (actionEvent.getActionCommand().equals(MATHMODEL_SPATIAL_EXISTING)) { - taskArray = this.getWindowManager().newDocument(new VCDocument.DocumentCreationInfo(VCDocumentType.MATHMODEL_DOC, VCDocument.MATH_OPTION_SPATIAL_EXISTS)); - } else if (actionEvent.getActionCommand().equals(MATHMODEL_SPATIAL_CREATENEW)) { - this.getWindowManager().newDocument(new VCDocument.DocumentCreationInfo(VCDocumentType.MATHMODEL_DOC, VCDocument.MATH_OPTION_SPATIAL_NEW)); - return; - } else if (actionEvent.getActionCommand().equals("From BioModel")) { - taskArray = this.getWindowManager().newDocument(new VCDocument.DocumentCreationInfo(VCDocumentType.MATHMODEL_DOC, VCDocument.MATH_OPTION_FROMBIOMODELAPP)); - } else { - return; - } - Hashtable hash = new Hashtable(); - hash.put(ClientRequestManager.GUI_PARENT, this); - hash.put("requestManager", this.getWindowManager().getRequestManager()); - ClientTaskDispatcher.dispatch(this, hash, taskArray, false); - } + AsynchClientTask[] taskArray = null; + if (actionEvent.getActionCommand().equals("BioModel")) { + taskArray = getWindowManager().newDocument(new VCDocument.DocumentCreationInfo(VCDocumentType.BIOMODEL_DOC, VCDocument.BIO_OPTION_DEFAULT)); + } else if (actionEvent.getActionCommand().equals("Non-Spatial")) { + taskArray = getWindowManager().newDocument(new VCDocument.DocumentCreationInfo(VCDocumentType.MATHMODEL_DOC, VCDocument.MATH_OPTION_NONSPATIAL)); + } else if (actionEvent.getActionCommand().equals(MATHMODEL_SPATIAL_EXISTING)) { + taskArray = getWindowManager().newDocument(new VCDocument.DocumentCreationInfo(VCDocumentType.MATHMODEL_DOC, VCDocument.MATH_OPTION_SPATIAL_EXISTS)); + } else if (actionEvent.getActionCommand().equals(MATHMODEL_SPATIAL_CREATENEW)) { + getWindowManager().newDocument(new VCDocument.DocumentCreationInfo(VCDocumentType.MATHMODEL_DOC, VCDocument.MATH_OPTION_SPATIAL_NEW)); + return; + } else if (actionEvent.getActionCommand().equals("From BioModel")) { + taskArray = getWindowManager().newDocument(new VCDocument.DocumentCreationInfo(VCDocumentType.MATHMODEL_DOC, VCDocument.MATH_OPTION_FROMBIOMODELAPP)); + }else { + return; + } + Hashtable hash = new Hashtable(); + hash.put(ClientRequestManager.GUI_PARENT, (Component)this); + hash.put("requestManager", getWindowManager().getRequestManager()); + ClientTaskDispatcher.dispatch(this, hash, taskArray, false); +} - private void openDocument(java.awt.event.ActionEvent actionEvent) { - if (actionEvent.getActionCommand().equals("BioModel...")) { - this.getWindowManager().openDocument(VCDocumentType.BIOMODEL_DOC); - } else if (actionEvent.getActionCommand().equals("MathModel...")) { - this.getWindowManager().openDocument(VCDocumentType.MATHMODEL_DOC); - } else if (actionEvent.getActionCommand().equals("Geometry...")) { - this.getWindowManager().openDocument(VCDocumentType.GEOMETRY_DOC); - } - } +private void openDocument(java.awt.event.ActionEvent actionEvent) { + if (actionEvent.getActionCommand().equals("BioModel...")) { + getWindowManager().openDocument(VCDocumentType.BIOMODEL_DOC); + } else if (actionEvent.getActionCommand().equals("MathModel...")) { + getWindowManager().openDocument(VCDocumentType.MATHMODEL_DOC); + } else if (actionEvent.getActionCommand().equals("Geometry...")) { + getWindowManager().openDocument(VCDocumentType.GEOMETRY_DOC); + } +} - private void reconnect() { - this.getWindowManager().reconnect(); - } +private void reconnect() { + getWindowManager().reconnect(); +} - private void saveDocument(boolean replace) { - this.getWindowManager().saveDocument(replace); - } +private void saveDocument(boolean replace) { + getWindowManager().saveDocument(replace); +} - private void saveAsLocal() { - this.getWindowManager().exportDocument(FileFilters.FILE_FILTER_VCML); - } +private void saveAsLocal(){ + getWindowManager().exportDocument(FileFilters.FILE_FILTER_VCML); +} - /** - * Sets the windowManager property (cbit.vcell.client.desktop.DocumentWindowManager) value. - * - * @param windowManager The new value for the property. - * @see #getWindowManager - */ - public void setWindowManager(DocumentWindowManager windowManager) { - if (this.fieldWindowManager == windowManager) { - return; - } - DocumentWindowManager oldValue = this.fieldWindowManager; - this.fieldWindowManager = windowManager; - this.firePropertyChange("windowManager", oldValue, windowManager);//May 2009,found it doesn't fire to any where. +/** + * Sets the windowManager property (cbit.vcell.client.desktop.DocumentWindowManager) value. + * @param windowManager The new value for the property. + * @see #getWindowManager + */ +public void setWindowManager(DocumentWindowManager windowManager) { + if (fieldWindowManager == windowManager) { + return; + } + DocumentWindowManager oldValue = fieldWindowManager; + fieldWindowManager = windowManager; + firePropertyChange("windowManager", oldValue, windowManager);//May 2009,found it doesn't fire to any where. - } +} - public void setWorkArea(Component c) { - this.getContentPane().add(c, BorderLayout.CENTER); - } +public void setWorkArea(Component c) { + getContentPane().add(c, BorderLayout.CENTER); +} - public static void showAboutBox(Component parent) { - String version = ""; - String build = ""; - try { - version = "Version " + DocumentWindowAboutBox.getVERSION_NO(); - build = DocumentWindowAboutBox.getEDITION() + " edition, build no. " + DocumentWindowAboutBox.getBUILD_NO(); - } catch (Exception exc) { - System.out.println("Failed to parse vcell.softwareVersion: " + exc.getMessage()); - exc.printStackTrace(System.out); - } - /* Create the AboutBox dialog */ - DocumentWindowAboutBox aDocumentWindowAboutBox = new DocumentWindowAboutBox(version, build); - DialogUtils.showComponentCloseDialog(parent, aDocumentWindowAboutBox, "About VCell"); - } +public static void showAboutBox(Component parent) { + String version = ""; + String build = ""; + try { + version = "Version " + DocumentWindowAboutBox.getVERSION_NO(); + build = DocumentWindowAboutBox.getEDITION() + " edition, build no. " + DocumentWindowAboutBox.getBUILD_NO(); + } catch (Exception exc) { + System.out.println("Failed to parse vcell.softwareVersion: " + exc.getMessage()); + exc.printStackTrace(System.out); + } + /* Create the AboutBox dialog */ + DocumentWindowAboutBox aDocumentWindowAboutBox = new DocumentWindowAboutBox(version,build); + DialogUtils.showComponentCloseDialog(parent, aDocumentWindowAboutBox, "About VCell"); +} private void showEditAnnotationWindow() { - try { - if (this.getWindowManager() != null) { - VCDocument vcDoc = this.getWindowManager().getVCDocument(); - if (vcDoc != null) { - try { - // initialize fields - different for biomodel and mathmodel, geometry - String oldAnnotation = null; - if (vcDoc instanceof BioModel) { - oldAnnotation = ((BioModel) vcDoc).getVCMetaData().getFreeTextAnnotation((BioModel) vcDoc); - } else { - oldAnnotation = vcDoc.getDescription(); - } - // show the editor - String newAnnotation = DialogUtils.showAnnotationDialog(this, oldAnnotation); - if (org.vcell.util.BeanUtils.triggersPropertyChangeEvent(oldAnnotation, newAnnotation)) { - // if VCDocument is a Biomodel, set the vcMetadata, else edit VCDoc.description for now - if (vcDoc instanceof BioModel) { - // update free text annotation in VCMetaData - VCMetaData vcMetaData = ((BioModel) vcDoc).getVCMetaData(); - vcMetaData.setFreeTextAnnotation((BioModel) vcDoc, newAnnotation); - } else { - // Update VCDocument annotation - vcDoc.setDescription(newAnnotation); - } - } - } catch (UtilCancelException e) { - //Do Nothing - } - } else { - throw new Exception("No Document to Edit"); - } - } - } catch (Throwable exc) { - exc.printStackTrace(System.out); - PopupGenerator.showErrorDialog(this, "Failed to edit annotation!\n" + exc.getMessage(), exc); - } - } - + try { + if (getWindowManager() != null) { + VCDocument vcDoc = getWindowManager().getVCDocument(); + if (vcDoc != null) { + try{ + // initialize fields - different for biomodel and mathmodel, geometry + String oldAnnotation = null; + if (vcDoc instanceof BioModel) { + oldAnnotation = ((BioModel)vcDoc).getVCMetaData().getFreeTextAnnotation((BioModel)vcDoc); + } else { + oldAnnotation = vcDoc.getDescription(); + } + // show the editor + String newAnnotation = DialogUtils.showAnnotationDialog(this, oldAnnotation); + if (org.vcell.util.BeanUtils.triggersPropertyChangeEvent(oldAnnotation, newAnnotation)) { + // if VCDocument is a Biomodel, set the vcMetadata, else edit VCDoc.description for now + if (vcDoc instanceof BioModel) { + // update free text annotation in VCMetaData + VCMetaData vcMetaData = ((BioModel)vcDoc).getVCMetaData(); + vcMetaData.setFreeTextAnnotation((BioModel)vcDoc, newAnnotation); + } else { + // Update VCDocument annotation + vcDoc.setDescription(newAnnotation); + } + } + }catch(UtilCancelException e){ + //Do Nothing + } + }else{ + throw new Exception("No Document to Edit"); + } + } + } catch (Throwable exc) { + exc.printStackTrace(System.out); + PopupGenerator.showErrorDialog(this, "Failed to edit annotation!\n"+exc.getMessage(), exc); + } +} - private void showTestingFrameworkWindow() { - this.getWindowManager().showTestingFrameworkWindow(); - } +private void showTestingFrameworkWindow() { + getWindowManager().showTestingFrameworkWindow(); +} - private void enableOpenMenuItems(boolean bEnableServerOps) { - this.getOpenMenuItem().setEnabled(true); - this.getJMenuItemOpenBioModel().setEnabled(bEnableServerOps); - this.getJMenuItemOpenMathModel().setEnabled(bEnableServerOps); - this.getJMenuItemOpenLocal().setEnabled(true); - } - /** - * Insert the method's description here. - * Creation date: (5/10/2004 4:32:17 PM) - */ - public void updateConnectionStatus(ConnectionStatus connStatus) { - - // other updates - String status = ""; - User user = this.getWindowManager().getUser(); - boolean isTestUser = user != null && (user.isTestAccount()); - switch (connStatus.getStatus()) { - case ConnectionStatus.NOT_CONNECTED: { - status = ""; - this.getJProgressBarConnection().setString("NOT CONNECTED"); - this.getJProgressBarConnection().setValue(0); - this.getManageUserMenuItem().setEnabled(true); - this.getLogOutMenuItem().setEnabled(false); - this.getReconnectUserMenuItem().setEnabled(false); - this.getViewJobsMenuItem().setEnabled(false); - - this.enableOpenMenuItems(false); - - this.getSaveMenuItem().setEnabled(false); - this.getSave_AsMenuItem().setEnabled(false); - this.getSave_AsLocalMenuItem().setEnabled(true); - this.getSave_VersionMenuItem().setEnabled(false); - this.getJMenuItemRevert().setEnabled(false); - this.getJMenuItemCompare().setEnabled(false); - //getJMenuItemServer().setEnabled(true); - this.getTestingFrameworkMenuItem().setVisible(isTestUser); - this.getTestingFrameworkMenuItem().setEnabled(false); - this.getJMenuItemFieldData().setEnabled(false); - this.getPermissionsMenuItem().setEnabled(false); - this.getGrantPermissionsToVCellSupportMenuItem().setEnabled(false); - this.checkForReconnecting(connStatus); - break; - } - case ConnectionStatus.CONNECTED: { - status = "Server: " + connStatus.getApihost() + ":" + connStatus.getApiport() + " User: " + connStatus.getUserName(); - this.getJProgressBarConnection().setString("CONNECTED (" + connStatus.getUserName() + ")"); - this.getJProgressBarConnection().setValue(100); - this.getManageUserMenuItem().setEnabled(true); - this.getLogOutMenuItem().setEnabled(true); - this.getReconnectUserMenuItem().setEnabled(true); - this.getViewJobsMenuItem().setEnabled(true); - - this.enableOpenMenuItems(true); - - boolean bVersionedDocument = this.getWindowManager() != null && this.getWindowManager().getVCDocument() != null - && this.getWindowManager().getVCDocument().getVersion() != null; - this.getSaveMenuItem().setEnabled( - bVersionedDocument && !( - this.getWindowManager().getVCDocument().getVersion().getFlag().compareEqual(VersionFlag.Archived) || - this.getWindowManager().getVCDocument().getVersion().getFlag().compareEqual(VersionFlag.Published) - ) - ); - this.getSave_AsMenuItem().setEnabled(true); - this.getSave_AsLocalMenuItem().setEnabled(true); - this.getSave_VersionMenuItem().setEnabled(bVersionedDocument); - this.getJMenuItemRevert().setEnabled(bVersionedDocument); - this.getJMenuItemCompare().setEnabled(bVersionedDocument); - //getJMenuItemServer().setEnabled(true); - this.getTestingFrameworkMenuItem().setVisible(isTestUser); - this.getTestingFrameworkMenuItem().setEnabled(true); - this.getJMenuItemFieldData().setEnabled(true); +private void enableOpenMenuItems(boolean bEnableServerOps){ + getOpenMenuItem().setEnabled(true); + getJMenuItemOpenBioModel().setEnabled(bEnableServerOps); + getJMenuItemOpenMathModel().setEnabled(bEnableServerOps); + getJMenuItemOpenGeometry().setEnabled(bEnableServerOps); + getJMenuItemOpenLocal().setEnabled(true); +} +/** + * Insert the method's description here. + * Creation date: (5/10/2004 4:32:17 PM) + */ +public void updateConnectionStatus(ConnectionStatus connStatus) { + + // other updates + String status = ""; + User user = getWindowManager().getUser(); + boolean isTestUser = (user!=null)?(user.isTestAccount()):(false); + switch (connStatus.getStatus()) { + case ConnectionStatus.NOT_CONNECTED: { + status = ""; + getJProgressBarConnection().setString("NOT CONNECTED"); + getJProgressBarConnection().setValue(0); + getManageUserMenuItem().setEnabled(true); + getLogOutMenuItem().setEnabled(false); + getReconnectUserMenuItem().setEnabled(false); + getViewJobsMenuItem().setEnabled(false); + + enableOpenMenuItems(false); + + getSaveMenuItem().setEnabled(false); + getSave_AsMenuItem().setEnabled(false); + getSave_AsLocalMenuItem().setEnabled(true); + getSave_VersionMenuItem().setEnabled(false); + getJMenuItemRevert().setEnabled(false); + getJMenuItemCompare().setEnabled(false); + //getJMenuItemServer().setEnabled(true); + getTestingFrameworkMenuItem().setVisible(isTestUser); + getTestingFrameworkMenuItem().setEnabled(false); + getJMenuItemFieldData().setEnabled(false); + getPermissionsMenuItem().setEnabled(false); + getGrantPermissionsToVCellSupportMenuItem().setEnabled(false); + checkForReconnecting(connStatus); + break; + } + case ConnectionStatus.CONNECTED: { + status = "Server: " + connStatus.getApihost()+":"+connStatus.getApiport() + " User: " + connStatus.getUserName(); + getJProgressBarConnection().setString("CONNECTED (" + connStatus.getUserName() + ")"); + getJProgressBarConnection().setValue(100); + getManageUserMenuItem().setEnabled(true); + getLogOutMenuItem().setEnabled(true); + getReconnectUserMenuItem().setEnabled(true); + getViewJobsMenuItem().setEnabled(true); + + enableOpenMenuItems(true); + + boolean bVersionedDocument = getWindowManager() != null && getWindowManager().getVCDocument() != null + && getWindowManager().getVCDocument().getVersion() != null; + getSaveMenuItem().setEnabled( + bVersionedDocument && !( + getWindowManager().getVCDocument().getVersion().getFlag().compareEqual(VersionFlag.Archived) || + getWindowManager().getVCDocument().getVersion().getFlag().compareEqual(VersionFlag.Published) + ) + ); + getSave_AsMenuItem().setEnabled(true); + getSave_AsLocalMenuItem().setEnabled(true); + getSave_VersionMenuItem().setEnabled(bVersionedDocument); + getJMenuItemRevert().setEnabled(bVersionedDocument); + getJMenuItemCompare().setEnabled(bVersionedDocument); + //getJMenuItemServer().setEnabled(true); + getTestingFrameworkMenuItem().setVisible(isTestUser); + getTestingFrameworkMenuItem().setEnabled(true); + getJMenuItemFieldData().setEnabled(true); // getJMenuItemMIRIAM().setEnabled(true); - this.getJMenuItemPreferences().setEnabled(true); - this.getTransMAMenuItem().setEnabled( - this.getWindowManager() != null && - this.getWindowManager().getVCDocument() != null && - this.getWindowManager().getVCDocument() instanceof BioModel - ); - this.getViewJobsMenuItem().setEnabled(true); - //getJMenuImportPathway().setEnabled(getWindowManager().getVCDocument() instanceof BioModel); - this.getPermissionsMenuItem().setEnabled(bVersionedDocument && this.getWindowManager().getVCDocument().getVersion().getOwner().equals(this.getWindowManager().getUser())); - this.getGrantPermissionsToVCellSupportMenuItem().setEnabled(bVersionedDocument && this.getWindowManager().getVCDocument().getVersion().getOwner().equals(this.getWindowManager().getUser())); - break; - } - case ConnectionStatus.INITIALIZING: { - status = "Server: " + connStatus.getApihost() + ":" + connStatus.getApiport() + " User: " + connStatus.getUserName(); - this.getJProgressBarConnection().setString("INITIALIZING..."); - this.getJProgressBarConnection().setValue(0); - this.getManageUserMenuItem().setEnabled(false); - this.getLogOutMenuItem().setEnabled(false); - this.getReconnectUserMenuItem().setEnabled(false); - this.enableOpenMenuItems(false); - this.getSave_AsLocalMenuItem().setEnabled(true); - this.getSaveMenuItem().setEnabled(false); - this.getSave_AsMenuItem().setEnabled(false); - this.getSave_AsLocalMenuItem().setEnabled(true); - this.getSave_VersionMenuItem().setEnabled(false); - this.getJMenuItemRevert().setEnabled(false); - this.getJMenuItemCompare().setEnabled(false); - //getJMenuItemServer().setEnabled(false); - this.getTestingFrameworkMenuItem().setVisible(isTestUser); - this.getTestingFrameworkMenuItem().setEnabled(isTestUser); - this.getJMenuItemFieldData().setEnabled(false); + getJMenuItemPreferences().setEnabled(true); + getTransMAMenuItem().setEnabled( + getWindowManager() != null && + getWindowManager().getVCDocument() != null && + getWindowManager().getVCDocument() instanceof BioModel + ); + getViewJobsMenuItem().setEnabled(true); + //getJMenuImportPathway().setEnabled(getWindowManager().getVCDocument() instanceof BioModel); + getPermissionsMenuItem().setEnabled(bVersionedDocument && getWindowManager().getVCDocument().getVersion().getOwner().equals(getWindowManager().getUser())); + getGrantPermissionsToVCellSupportMenuItem().setEnabled(bVersionedDocument && getWindowManager().getVCDocument().getVersion().getOwner().equals(getWindowManager().getUser())); + break; + } + case ConnectionStatus.INITIALIZING: { + status = "Server: " + connStatus.getApihost()+":"+connStatus.getApiport() + " User: " + connStatus.getUserName(); + getJProgressBarConnection().setString("INITIALIZING..."); + getJProgressBarConnection().setValue(0); + getManageUserMenuItem().setEnabled(false); + getLogOutMenuItem().setEnabled(false); + getReconnectUserMenuItem().setEnabled(false); + enableOpenMenuItems(false); + getSave_AsLocalMenuItem().setEnabled(true); + getSaveMenuItem().setEnabled(false); + getSave_AsMenuItem().setEnabled(false); + getSave_AsLocalMenuItem().setEnabled(true); + getSave_VersionMenuItem().setEnabled(false); + getJMenuItemRevert().setEnabled(false); + getJMenuItemCompare().setEnabled(false); + //getJMenuItemServer().setEnabled(false); + getTestingFrameworkMenuItem().setVisible(isTestUser); + getTestingFrameworkMenuItem().setEnabled(isTestUser); + getJMenuItemFieldData().setEnabled(false); // getJMenuItemMIRIAM().setEnabled(false); - this.getJMenuItemPreferences().setEnabled(false); - this.getPermissionsMenuItem().setEnabled(false); - this.getGrantPermissionsToVCellSupportMenuItem().setEnabled(false); - break; - } - case ConnectionStatus.DISCONNECTED: { - status = "Server: " + connStatus.getApihost() + ":" + connStatus.getApiport() + " User: " + connStatus.getUserName(); - this.getJProgressBarConnection().setString("DISCONNECTED"); - this.getJProgressBarConnection().setValue(0); - this.getManageUserMenuItem().setEnabled(true); - this.getLogOutMenuItem().setEnabled(false); - this.getReconnectUserMenuItem().setEnabled(true); - this.enableOpenMenuItems(false); - this.getSave_AsLocalMenuItem().setEnabled(true); - this.getSaveMenuItem().setEnabled(false); - this.getSave_AsMenuItem().setEnabled(false); - this.getSave_VersionMenuItem().setEnabled(false); - this.getJMenuItemRevert().setEnabled(false); - this.getJMenuItemCompare().setEnabled(false); - //getJMenuItemServer().setEnabled(true); - this.getTestingFrameworkMenuItem().setVisible(isTestUser); - this.getTestingFrameworkMenuItem().setEnabled(false); - this.getJMenuItemFieldData().setEnabled(false); + getJMenuItemPreferences().setEnabled(false); + getPermissionsMenuItem().setEnabled(false); + getGrantPermissionsToVCellSupportMenuItem().setEnabled(false); + break; + } + case ConnectionStatus.DISCONNECTED: { + status = "Server: " + connStatus.getApihost()+":"+connStatus.getApiport() + " User: " + connStatus.getUserName(); + getJProgressBarConnection().setString("DISCONNECTED"); + getJProgressBarConnection().setValue(0); + getManageUserMenuItem().setEnabled(true); + getLogOutMenuItem().setEnabled(false); + getReconnectUserMenuItem().setEnabled(true); + enableOpenMenuItems(false); + getSave_AsLocalMenuItem().setEnabled(true); + getSaveMenuItem().setEnabled(false); + getSave_AsMenuItem().setEnabled(false); + getSave_VersionMenuItem().setEnabled(false); + getJMenuItemRevert().setEnabled(false); + getJMenuItemCompare().setEnabled(false); + //getJMenuItemServer().setEnabled(true); + getTestingFrameworkMenuItem().setVisible(isTestUser); + getTestingFrameworkMenuItem().setEnabled(false); + getJMenuItemFieldData().setEnabled(false); // getJMenuItemMIRIAM().setEnabled(false); - this.getJMenuItemPreferences().setEnabled(false); - this.getPermissionsMenuItem().setEnabled(false); - this.getGrantPermissionsToVCellSupportMenuItem().setEnabled(false); - this.checkForReconnecting(connStatus); - break; - } - } - this.getJProgressBarConnection().setToolTipText(status); - } + getJMenuItemPreferences().setEnabled(false); + getPermissionsMenuItem().setEnabled(false); + getGrantPermissionsToVCellSupportMenuItem().setEnabled(false); + checkForReconnecting(connStatus); + break; + } + } + getJProgressBarConnection().setToolTipText(status); +} - private void checkForReconnecting(ConnectionStatus connStatus) { - Reconnector rc = connStatus.getReconnector(); - if (rc.isActive()) { - rc.addListener(this); - } - } +private void checkForReconnecting(ConnectionStatus connStatus) { + Reconnector rc = connStatus.getReconnector(); + if (rc.isActive()) { + rc.addListener(this); + } +} - @Override - public void refactorCountdown(long seconds) { - if (seconds > 0) { - this.getJProgressBarConnection().setString("RECONNECT in " + seconds-- + " s"); - } - } +@Override +public void refactorCountdown(long seconds) { + if (seconds > 0) { + getJProgressBarConnection().setString("RECONNECT in " + seconds-- + " s"); + } +} - /** - * Insert the method's description here. - * Creation date: (5/7/2004 11:51:20 AM) - */ - public void updateMemoryStatus(long freeBytes, long totalBytes) { - DecimalFormat df = (DecimalFormat) DecimalFormat.getInstance(); - df.setMaximumFractionDigits(1); - String usedMB = df.format((totalBytes - freeBytes) / 1000000.0); - String totalMB = df.format(totalBytes / 1000000.0); - this.getJProgressBarMemory().setValue((int) (100 * (totalBytes - freeBytes) / totalBytes)); - this.getJProgressBarMemory().setString(usedMB + "MB / " + totalMB + "MB"); - } +/** + * Insert the method's description here. + * Creation date: (5/7/2004 11:51:20 AM) + */ +public void updateMemoryStatus(long freeBytes, long totalBytes) { + DecimalFormat df = (DecimalFormat)DecimalFormat.getInstance(); + df.setMaximumFractionDigits(1); + String usedMB = df.format((totalBytes - freeBytes)/1000000.0); + String totalMB = df.format(totalBytes/1000000.0); + getJProgressBarMemory().setValue((int)(100 * (totalBytes - freeBytes) / totalBytes)); + getJProgressBarMemory().setString(usedMB + "MB / " + totalMB + "MB"); +} - /** - * Insert the method's description here. - * Creation date: (5/10/2004 4:32:17 PM) - */ - public void updateWhileInitializing(int i) { - // extra animation while initializing connection - this.getJProgressBarConnection().setValue(i); - } +/** + * Insert the method's description here. + * Creation date: (5/10/2004 4:32:17 PM) + */ +public void updateWhileInitializing(int i) { + // extra animation while initializing connection + getJProgressBarConnection().setValue(i); +} - private JMenuItem getJMenuItemPreferences() { - if (this.jMenuItemPreferences == null) { - this.jMenuItemPreferences = new JMenuItem(); - this.jMenuItemPreferences.setText("VCell Properties ..."); - this.jMenuItemPreferences.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent e) { - DocumentWindow.this.getTopLevelWindowManager().showPreferencesWindow(); - } - }); - } - return this.jMenuItemPreferences; - } +private JMenuItem getJMenuItemPreferences() { + if (jMenuItemPreferences == null) { + jMenuItemPreferences = new JMenuItem(); + jMenuItemPreferences.setText("VCell Properties ..."); + jMenuItemPreferences.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent e) { + getTopLevelWindowManager().showPreferencesWindow(); + } + }); + } + return jMenuItemPreferences; +} - public void showTransMADialog() { - String disclaimer = "Transforming reactions to stochastic capable cannot be undone. You may want to make a copy of the model.\nAlso some existing applications may need to be recreated in order to maintain consistency.\nLast but not least, stochastic transfomation may not be mathematically equivalent to the orignal model. \nDo you wish to proceed?"; - JTextArea ta = new JTextArea(disclaimer); - ta.setEditable(false); - int userChoice = PopupGenerator.showComponentOKCancelDialog(this, ta, "Model Transformation Warning"); - if (userChoice != JOptionPane.OK_OPTION) { - return; - } - BioModel biomodel = null; - if (this.getWindowManager().getVCDocument() instanceof BioModel) { - biomodel = (BioModel) this.getWindowManager().getVCDocument(); - } - TransformMassActionPanel transMAPanel = new TransformMassActionPanel(); - TransformMassActions transformMassActions = new TransformMassActions(); - - Hashtable hashTable = new Hashtable<>(); - hashTable.put("biomodel", biomodel); - hashTable.put("window", this); - - ProgressDialog progressDialog = new LinearDefiniteProgressDialog(this); - - AsynchClientTask task1 = new AsynchClientTask("transform", AsynchClientTask.TASKTYPE_NONSWING_BLOCKING) { - @Override - public void run(Hashtable hashTable) throws Exception { - BioModel biomodel = (BioModel) hashTable.get("biomodel"); - if (biomodel == null) { - throw new RuntimeException("Biomodel cannot be null"); - } - try { - transMAPanel.setModel(biomodel.getModel()); - ReactionStep[] origReactions = biomodel.getModel().getReactionSteps(); - transformMassActions.initializeTransformation(origReactions); - for (int i = 0; i < origReactions.length; i++) { - progressDialog.setProgress(i * 100 / origReactions.length); - TransformedReaction[] transReactionSteps = transformMassActions.getTransformedReactionSteps(); - boolean[] isTransformable = transformMassActions.getIsTransformable(); - - transReactionSteps[i] = transformMassActions.transformOne(origReactions[i]); // here all the work is done - isTransformable[i] = transReactionSteps[i].getTransformType() == TransformedReaction.TRANSFORMABLE; - } - progressDialog.setProgress(100); - transMAPanel.setTransformation(transformMassActions); - } catch (Throwable e) { - System.out.println(e.getMessage()); - } - System.out.println("done"); - } - }; - - AsynchClientTask task2 = new AsynchClientTask("starting exporting", AsynchClientTask.TASKTYPE_SWING_NONBLOCKING) { - @Override - public void run(Hashtable hashTable) throws Exception { - // if we hit Cancel on the ProgressDialog, this task won't get executed - Component requester = (Component) hashTable.get("window"); - int choice = DialogUtils.showComponentOKCancelDialog(requester, transMAPanel, "Transform to Stochastic Capable Model"); - if (choice == JOptionPane.OK_OPTION) { - try { - transMAPanel.saveTransformedReactions(); - } catch (Exception e) { - PopupGenerator.showWarningDialog(DocumentWindow.this.getTopLevelWindowManager(), null, new UserMessage(e.getMessage(), new String[]{"Ok"}, "Ok"), null); - } - } - } - }; - - AsynchClientTask[] tasks = new AsynchClientTask[]{task1, task2}; - boolean bShowProgressPopup = true; - boolean bKnowProgress = true; - boolean cancelable = true; - boolean bInputBlocking = false; // default: false - ClientTaskDispatcher.dispatch(this, hashTable, tasks, progressDialog, - bShowProgressPopup, bKnowProgress, cancelable, null, bInputBlocking, - ClientTaskDispatcher.StopStrategy.THREAD_KILL); - } +public void showTransMADialog() +{ + String disclaimer = "Transforming reactions to stochastic capable cannot be undone. You may want to make a copy of the model.\nAlso some existing applications may need to be recreated in order to maintain consistency.\nLast but not least, stochastic transfomation may not be mathematically equivalent to the orignal model. \nDo you wish to proceed?"; + JTextArea ta = new JTextArea(disclaimer); + ta.setEditable(false); + int userChoice = PopupGenerator.showComponentOKCancelDialog(this, ta, "Model Transformation Warning"); + if(userChoice != JOptionPane.OK_OPTION) { + return; + } + BioModel biomodel = null; + if (getWindowManager().getVCDocument() instanceof BioModel) { + biomodel = (BioModel)getWindowManager().getVCDocument(); + } + TransformMassActionPanel transMAPanel = new TransformMassActionPanel(); + TransformMassActions transformMassActions = new TransformMassActions(); + + Hashtable hashTable = new Hashtable<> (); + hashTable.put("biomodel", biomodel); + hashTable.put("window", this); + + ProgressDialog progressDialog = new LinearDefiniteProgressDialog(this); + + AsynchClientTask task1 = new AsynchClientTask("transform", AsynchClientTask.TASKTYPE_NONSWING_BLOCKING) { + @Override + public void run(Hashtable hashTable) throws Exception { + BioModel biomodel = (BioModel)hashTable.get("biomodel"); + if(biomodel == null) { + throw new RuntimeException("Biomodel cannot be null"); + } + try { + transMAPanel.setModel(biomodel.getModel()); + ReactionStep[] origReactions = biomodel.getModel().getReactionSteps(); + transformMassActions.initializeTransformation(origReactions); + for (int i = 0; i < origReactions.length; i++) { + progressDialog.setProgress(i * 100 / origReactions.length); + TransformedReaction[] transReactionSteps = transformMassActions.getTransformedReactionSteps(); + boolean[] isTransformable = transformMassActions.getIsTransformable(); + + transReactionSteps[i] = transformMassActions.transformOne(origReactions[i]); // here all the work is done + if (transReactionSteps[i].getTransformType() == TransformedReaction.TRANSFORMABLE) { + isTransformable[i] = true; + } else { + isTransformable[i] = false; + } + } + progressDialog.setProgress(100); + transMAPanel.setTransformation(transformMassActions); + } catch(Throwable e) { + System.out.println(e.getMessage()); + } + System.out.println("done"); + } + }; + + AsynchClientTask task2 = new AsynchClientTask("starting exporting", AsynchClientTask.TASKTYPE_SWING_NONBLOCKING) { + @Override + public void run(Hashtable hashTable) throws Exception { + // if we hit Cancel on the ProgressDialog, this task won't get executed + Component requester = (Component)hashTable.get("window"); + int choice = DialogUtils.showComponentOKCancelDialog(requester, transMAPanel, "Transform to Stochastic Capable Model"); + if(choice == JOptionPane.OK_OPTION) { + try { + transMAPanel.saveTransformedReactions(); + } catch(Exception e) { + PopupGenerator.showWarningDialog(getTopLevelWindowManager(), null, new UserMessage(e.getMessage(), new String[]{"Ok"},"Ok"), null); + } + } + } + }; + + AsynchClientTask[] tasks = new AsynchClientTask[] { task1, task2 }; + boolean bShowProgressPopup = true; + boolean bKnowProgress = true; + boolean cancelable = true; + boolean bInputBlocking = false; // default: false + ClientTaskDispatcher.dispatch(this, hashTable, tasks, progressDialog, + bShowProgressPopup, bKnowProgress, cancelable, null, bInputBlocking, + ClientTaskDispatcher.StopStrategy.THREAD_KILL); +} - public void showViewJobsDialog() { - System.out.println("ViewJobs menu item pressed."); - // https://vcellapi.cam.uchc.edu/simtask?submitLow=&submitHigh=&startRow=1&maxRows=100&serverId=&computeHost+value%3D=&simId=&jobId=&taskId=&hasData=all&queued=on&dispatched=on&running=on - DocumentWindowManager dwm = this.getWindowManager(); - ViewJobsPanel panel = new ViewJobsPanel(dwm); - panel.setPreferredSize(new Dimension(1000, 600)); +public void showViewJobsDialog() { + System.out.println("ViewJobs menu item pressed."); + // https://vcellapi.cam.uchc.edu/simtask?submitLow=&submitHigh=&startRow=1&maxRows=100&serverId=&computeHost+value%3D=&simId=&jobId=&taskId=&hasData=all&queued=on&dispatched=on&running=on + DocumentWindowManager dwm = getWindowManager(); + ViewJobsPanel panel = new ViewJobsPanel(dwm); + panel.setPreferredSize(new Dimension(1000,600)); - if (this.viewSpeciesDialog != null) { // uncomment these 3 lines to allow only one instance of the dialog - this.viewSpeciesDialog.dispose(); - } + if(viewSpeciesDialog != null) { // uncomment these 3 lines to allow only one instance of the dialog + viewSpeciesDialog.dispose(); + } - JOptionPane pane = new JOptionPane(panel, JOptionPane.PLAIN_MESSAGE, 0, null, new Object[]{"Close"}); - this.viewSpeciesDialog = pane.createDialog(this, "View Simulation Jobs Status"); - this.viewSpeciesDialog.setModal(false); - this.viewSpeciesDialog.setResizable(true); - this.viewSpeciesDialog.setVisible(true); + JOptionPane pane = new JOptionPane(panel, JOptionPane.PLAIN_MESSAGE, 0, null, new Object[] {"Close"}); + viewSpeciesDialog = pane.createDialog(this, "View Simulation Jobs Status"); + viewSpeciesDialog.setModal(false); + viewSpeciesDialog.setResizable(true); + viewSpeciesDialog.setVisible(true); // ClientRequestManager.idToNameConversion(getWindowManager().getVCDocument()); - } - - public void showViewExportedDataDialog() { - DocumentWindowManager dwm = this.getWindowManager(); - ExportedDataViewer exportedDataViewer = new ExportedDataViewer(); - exportedDataViewer.setPreferredSize(new Dimension(1030, 590)); - - if (this.viewSpeciesDialog != null) { // uncomment these 3 lines to allow only one instance of the dialog - this.viewSpeciesDialog.dispose(); - } +} - JOptionPane pane = new JOptionPane(exportedDataViewer, JOptionPane.PLAIN_MESSAGE, 0, null, new Object[]{"Close"}); - this.viewSpeciesDialog = pane.createDialog(this, "View Exported Data"); - this.viewSpeciesDialog.setModal(false); - this.viewSpeciesDialog.setResizable(true); - this.viewSpeciesDialog.setVisible(true); - } +public void showViewExportedDataDialog() { + DocumentWindowManager dwm = getWindowManager(); + ExportedDataViewer exportedDataViewer = new ExportedDataViewer(); + exportedDataViewer.setPreferredSize(new Dimension(1030, 590)); - private JMenuItem getMntmLicenseInformation() { - if (this.mntmLicenseInformation == null) { - this.mntmLicenseInformation = new JMenuItem("VCell License Information"); - this.mntmLicenseInformation.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent arg0) { - Integer year = 2013; - try { - int tempYear = Integer.parseInt((new SimpleDateFormat("yyyy")).format(Calendar.getInstance().getTime())); - if (tempYear > year && tempYear < 2100) {//sanity check - year = tempYear; - } - } catch (Exception e) { - e.printStackTrace(); - } - final String OK = "OK"; - final String SAVE_LICENSE = "Save VCell license"; - final String SAVE_THIRD_PARTY = "Save third party licenses"; - String licenseStr = - "The Virtual Cell is free software distributed under the following MIT licensing terms:\n\n" + - "Copyright (c) 1998-" + year + " University of Connecticut Health Center\n\n" + - "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\n" + - "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n" + - "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n"; - - if (OperatingSystemInfo.getInstance().isWindows()) { - licenseStr += "The Virtual Cell Windows Edition is licensed under the GNU General Public License Version 3\n\n"; - } + if(viewSpeciesDialog != null) { // uncomment these 3 lines to allow only one instance of the dialog + viewSpeciesDialog.dispose(); + } - String result = DialogUtils.showWarningDialog(DocumentWindow.this, "VCell Licensing Information", licenseStr, new String[]{OK, SAVE_THIRD_PARTY, SAVE_LICENSE,}, OK); - if (result != null && (result.equals(SAVE_THIRD_PARTY) || result.equals(SAVE_LICENSE))) { - JFileChooser saveLicenseJFC = new JFileChooser(); - int returnVal = saveLicenseJFC.showSaveDialog(DocumentWindow.this); - if (returnVal == JFileChooser.APPROVE_OPTION) { - File outFile = saveLicenseJFC.getSelectedFile(); - try { - if (result.equals(SAVE_THIRD_PARTY)) { - ResourceUtil.writeResourceToFile("/" + System.getProperty(PropertyLoader.vcellThirdPartyLicense), outFile); - } else if (result.equals(SAVE_LICENSE)) { - XmlUtil.writeXMLStringToFile(licenseStr, outFile.getAbsolutePath(), false); - } - } catch (Exception e) { - e.printStackTrace(); - DialogUtils.showErrorDialog(DocumentWindow.this, "Error saving license info: " + e.getMessage()); - } - } - } - } - }); - } - return this.mntmLicenseInformation; - } + JOptionPane pane = new JOptionPane(exportedDataViewer, JOptionPane.PLAIN_MESSAGE, 0, null, new Object[] {"Close"}); + viewSpeciesDialog = pane.createDialog(this, "View Exported Data"); + viewSpeciesDialog.setModal(false); + viewSpeciesDialog.setResizable(true); + viewSpeciesDialog.setVisible(true); +} - private JSeparator getSeparator() { - if (this.separator == null) { - this.separator = new JSeparator(); - } - return this.separator; - } + private JMenuItem getMntmLicenseInformation() { + if (mntmLicenseInformation == null) { + mntmLicenseInformation = new JMenuItem("VCell License Information"); + mntmLicenseInformation.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent arg0) { + Integer year = 2013; + try{ + int tempYear = Integer.parseInt((new SimpleDateFormat("yyyy")).format(Calendar.getInstance().getTime())); + if(tempYear > year && tempYear < 2100){//sanity check + year = tempYear; + } + }catch(Exception e){ + e.printStackTrace(); + } + final String OK = "OK"; + final String SAVE_LICENSE = "Save VCell license"; + final String SAVE_THIRD_PARTY = "Save third party licenses"; + String licenseStr = + "The Virtual Cell is free software distributed under the following MIT licensing terms:\n\n"+ + "Copyright (c) 1998-"+year+" University of Connecticut Health Center\n\n" + + "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\n" + + "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n"+ + "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n"; + + if (OperatingSystemInfo.getInstance().isWindows()) { + licenseStr += "The Virtual Cell Windows Edition is licensed under the GNU General Public License Version 3\n\n"; + } + + String result = DialogUtils.showWarningDialog(DocumentWindow.this, "VCell Licensing Information", licenseStr, new String[] {OK,SAVE_THIRD_PARTY,SAVE_LICENSE,}, OK); + if(result != null && (result.equals(SAVE_THIRD_PARTY) || result.equals(SAVE_LICENSE))){ + JFileChooser saveLicenseJFC = new JFileChooser(); + int returnVal = saveLicenseJFC.showSaveDialog(DocumentWindow.this); + if(returnVal == JFileChooser.APPROVE_OPTION) { + File outFile = saveLicenseJFC.getSelectedFile(); + try{ + if(result.equals(SAVE_THIRD_PARTY)){ + ResourceUtil.writeResourceToFile("/"+System.getProperty(PropertyLoader.vcellThirdPartyLicense), outFile); + }else if (result.equals(SAVE_LICENSE)){ + XmlUtil.writeXMLStringToFile(licenseStr, outFile.getAbsolutePath(), false); + } + }catch(Exception e){ + e.printStackTrace(); + DialogUtils.showErrorDialog(DocumentWindow.this, "Error saving license info: "+e.getMessage()); + } + } + } + } + }); + } + return mntmLicenseInformation; + } + private JSeparator getSeparator() { + if (separator == null) { + separator = new JSeparator(); + } + return separator; + } - public ChildWindowManager getChildWindowManager() { - return this.childWindowManager; - } + public ChildWindowManager getChildWindowManager() { + return childWindowManager; + } } From 5d4ec7ba7754c6ba331aaea2e8d09a82bf9bbea6 Mon Sep 17 00:00:00 2001 From: Logan Drescher Date: Wed, 3 Jul 2024 10:03:40 -0400 Subject: [PATCH 10/21] Remove Geometry menus again --- .../vcell/client/desktop/DocumentWindow.java | 41 ------------------- 1 file changed, 41 deletions(-) diff --git a/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java b/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java index 8266e02532..3fbcca0013 100644 --- a/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java +++ b/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java @@ -100,7 +100,6 @@ public class DocumentWindow extends LWTopFrame implements TopLevelWindow, Reconn private JSeparator ivjJSeparator6 = null; private JMenuItem ivjJMenuItemNewBioModel = null; private JMenuItem ivjJMenuItemOpenBioModel = null; - private JMenuItem ivjJMenuItemOpenGeometry = null; private JMenuItem ivjJMenuItemOpenLocal = null; private JMenuItem ivjJMenuItemOpenMathModel = null; private JProgressBar ivjJProgressBarMemory = null; @@ -110,7 +109,6 @@ public class DocumentWindow extends LWTopFrame implements TopLevelWindow, Reconn private JProgressBar ivjJProgressBarConnection = null; private JMenuItem ivjJMenuItemCompare = null; private JMenuItem ivjJMenuItemRevert = null; - private JMenuItem ivjGeometryMenu = null; private JMenuItem ivjMathFromBioMenuItem = null; private JMenu ivjMathMenu = null; private JMenuItem ivjNonSpatialMenuItem = null; @@ -598,24 +596,6 @@ private JMenuItem getExportedDataViewer(){ return exportedDataViewer; } -private javax.swing.JMenuItem getGeometryMenuItem() { - if (ivjGeometryMenu == null) { - try { - ivjGeometryMenu = new javax.swing.JMenuItem(); - ivjGeometryMenu.setName("GeometryMenu"); - ivjGeometryMenu.setText("Geometry"); - ivjGeometryMenu.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - DocumentWindow.showGeometryCreationWarning(DocumentWindow.this); - } - }); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjGeometryMenu; -} - public static void showGeometryCreationWarning(Component parentComponent){ DialogUtils.showWarningDialog(parentComponent, "Geometries are now viewed/edited/created within BioModels or MathModels.\n"+ @@ -840,24 +820,6 @@ private javax.swing.JMenuItem getJMenuItemOpenLocal() { return ivjJMenuItemOpenLocal; } -private javax.swing.JMenuItem getJMenuItemOpenGeometry() { - if (ivjJMenuItemOpenGeometry == null) { - try { - ivjJMenuItemOpenGeometry = new javax.swing.JMenuItem(); - ivjJMenuItemOpenGeometry.setName("JMenuItemOpenGeometry"); - ivjJMenuItemOpenGeometry.setText("Geometry..."); - ivjJMenuItemOpenGeometry.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - DocumentWindow.showGeometryCreationWarning(DocumentWindow.this); - } - }); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjJMenuItemOpenGeometry; -} - private javax.swing.JMenuItem getJMenuItemOpenMathModel() { if (ivjJMenuItemOpenMathModel == null) { try { @@ -964,7 +926,6 @@ private javax.swing.JMenu getNewMenuItem() { ivjNewMenuItem.setText("New"); ivjNewMenuItem.add(getJMenuItemNewBioModel()); ivjNewMenuItem.add(getMathMenu()); - ivjNewMenuItem.add(getGeometryMenuItem()); } catch (java.lang.Throwable ivjExc) { handleException(ivjExc); } @@ -994,7 +955,6 @@ private javax.swing.JMenu getOpenMenuItem() { ivjOpenMenuItem.setEnabled(false); ivjOpenMenuItem.add(getJMenuItemOpenBioModel()); ivjOpenMenuItem.add(getJMenuItemOpenMathModel()); - ivjOpenMenuItem.add(getJMenuItemOpenGeometry()); ivjOpenMenuItem.add(getJMenuItemOpenLocal()); } catch (java.lang.Throwable ivjExc) { handleException(ivjExc); @@ -1626,7 +1586,6 @@ private void enableOpenMenuItems(boolean bEnableServerOps){ getOpenMenuItem().setEnabled(true); getJMenuItemOpenBioModel().setEnabled(bEnableServerOps); getJMenuItemOpenMathModel().setEnabled(bEnableServerOps); - getJMenuItemOpenGeometry().setEnabled(bEnableServerOps); getJMenuItemOpenLocal().setEnabled(true); } /** From 4758338d7b0bf9948b0625a2606366c83d1eda5a Mon Sep 17 00:00:00 2001 From: Logan Drescher Date: Wed, 3 Jul 2024 10:05:37 -0400 Subject: [PATCH 11/21] Cleaned up file --- .../vcell/client/desktop/DocumentWindow.java | 3417 +++++++++-------- 1 file changed, 1719 insertions(+), 1698 deletions(-) diff --git a/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java b/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java index 3fbcca0013..a372407ab4 100644 --- a/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java +++ b/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java @@ -69,210 +69,212 @@ @SuppressWarnings("serial") public class DocumentWindow extends LWTopFrame implements TopLevelWindow, ReconnectListener { - @SuppressWarnings("unused") //PENDING Window Manager redesign - private final static String HelpViewerContextObject = "HelpViewerWindow"; // this object instance is the context for the help ChildWindow + @SuppressWarnings("unused") //PENDING Window Manager redesign + private final static String HelpViewerContextObject = "HelpViewerWindow"; // this object instance is the context for the help ChildWindow private static final String notificationsUrl = "https://vcell.org/webstart/VCell_alert/VCell_Alert.html"; - private final ChildWindowManager childWindowManager; - - private JMenuItem ivjAbout_BoxMenuItem = null; - private JMenuItem ivjManageUser = null; - private JMenuItem loginMenuItem = null; - private JMenuItem ivjLogoutUser = null; - private JMenuItem ivjCloseMenuItem = null; - private JMenuBar ivjDocumentWindowJMenuBar = null; - private IvjEventHandler ivjEventHandler = new IvjEventHandler(); - private JMenuItem ivjExitMenuItem = null; - private JMenu ivjFileMenu = null; - private JMenu ivjHelpMenu = null; - private JMenu ivjNewMenuItem = null; - private JMenu ivjOpenMenuItem = null; - //private JMenu recentMenuItem = new JMenu("Open Recent..."); - private JMenuItem ivjReconnectMenuItem = null; -// private JMenuItem ivjImageJServiceMenuItem = null; - private JMenuItem ivjSave_AsMenuItem = null; - private JMenuItem ivjSave_AsLocalMenuItem = null; - private JMenuItem ivjSave_VersionMenuItem = null; - private JMenuItem ivjSaveMenuItem = null; - private JMenu ivjServerMenu = null; - private JCheckBoxMenuItem ivjStatusbarMenuItem = null; - private JPanel ivjStatusBarPane = null; - //-------------------------------------- - private JSeparator ivjJSeparator6 = null; - private JMenuItem ivjJMenuItemNewBioModel = null; - private JMenuItem ivjJMenuItemOpenBioModel = null; - private JMenuItem ivjJMenuItemOpenLocal = null; - private JMenuItem ivjJMenuItemOpenMathModel = null; - private JProgressBar ivjJProgressBarMemory = null; - private DocumentWindowManager fieldWindowManager = null; - private JMenuItem ivjJMenuItemExport = null; - private JMenuItem menuItemImport = null; - private JProgressBar ivjJProgressBarConnection = null; - private JMenuItem ivjJMenuItemCompare = null; - private JMenuItem ivjJMenuItemRevert = null; - private JMenuItem ivjMathFromBioMenuItem = null; - private JMenu ivjMathMenu = null; - private JMenuItem ivjNonSpatialMenuItem = null; - private JMenuItem ivjSpatialExistingMenuItem = null; - private JMenuItem ivjSpatialCreateNewMenuItem = null; -// private JMenuItem ivjEdit_Annotation_JMenuItem = null; - private JMenuItem ivjTestingFrameworkMenuItem = null; - private JMenuItem ivjJMenuItemOnlineHelp = null; - private JMenuItem ivjJMenuItemOnlineSupport = null; - private JMenuItem ivjJMenuItemDiscussionGroup = null; - private JMenuItem ivjJMenuItemManagePermissions = null; - private JMenuItem ivjJMenuItemOnlinePublish = null; - private JMenuItem jMenuItemGrantPermissionsToVCellSupport = null; - - private JMenuItem ivjJMenuItemEmailSupport = null; - private JMenuItem newHelpMenuItem = null; -// private JMenuItem ivjRunBNGMenuItem = null; - private JMenuItem ivjRunVFrapMenuItem = null; - //Added Oct. 17th, 2007. To put a tool menu in - private JMenu toolMenu = null; - private JMenuItem transMAMenuItem = null; - private JMenuItem viewJobsMenuItem = null; - private JMenuItem jMenuItemPermissions = null; - private JLabel warningText = null; - private JLabel iconText = null; - private JDialog viewSpeciesDialog = null; - - private JMenuItem exportedDataViewer = null; - - private JMenuItem menuItemImportPathwayWebLocation = null; - private JMenuItem menuItemImportPathwayFile = null; - private JMenuItem menuItemImportPathwayExample = null; - -class IvjEventHandler implements java.awt.event.ActionListener, java.awt.event.ItemListener, java.awt.event.MouseListener { - public void actionPerformed(java.awt.event.ActionEvent e) { - try { - if (e.getSource() == DocumentWindow.this.getAbout_BoxMenuItem()) + private final ChildWindowManager childWindowManager; + + private JMenuItem ivjAbout_BoxMenuItem = null; + private JMenuItem ivjManageUser = null; + private JMenuItem loginMenuItem = null; + private JMenuItem ivjLogoutUser = null; + private JMenuItem ivjCloseMenuItem = null; + private JMenuBar ivjDocumentWindowJMenuBar = null; + private final IvjEventHandler ivjEventHandler = new IvjEventHandler(); + private JMenuItem ivjExitMenuItem = null; + private JMenu ivjFileMenu = null; + private JMenu ivjHelpMenu = null; + private JMenu ivjNewMenuItem = null; + private JMenu ivjOpenMenuItem = null; + //private JMenu recentMenuItem = new JMenu("Open Recent..."); + private JMenuItem ivjReconnectMenuItem = null; + // private JMenuItem ivjImageJServiceMenuItem = null; + private JMenuItem ivjSave_AsMenuItem = null; + private JMenuItem ivjSave_AsLocalMenuItem = null; + private JMenuItem ivjSave_VersionMenuItem = null; + private JMenuItem ivjSaveMenuItem = null; + private JMenu ivjServerMenu = null; + private JCheckBoxMenuItem ivjStatusbarMenuItem = null; + private JPanel ivjStatusBarPane = null; + //-------------------------------------- + private JSeparator ivjJSeparator6 = null; + private JMenuItem ivjJMenuItemNewBioModel = null; + private JMenuItem ivjJMenuItemOpenBioModel = null; + private JMenuItem ivjJMenuItemOpenLocal = null; + private JMenuItem ivjJMenuItemOpenMathModel = null; + private JProgressBar ivjJProgressBarMemory = null; + private DocumentWindowManager fieldWindowManager = null; + private JMenuItem ivjJMenuItemExport = null; + private JMenuItem menuItemImport = null; + private JProgressBar ivjJProgressBarConnection = null; + private JMenuItem ivjJMenuItemCompare = null; + private JMenuItem ivjJMenuItemRevert = null; + private JMenuItem ivjMathFromBioMenuItem = null; + private JMenu ivjMathMenu = null; + private JMenuItem ivjNonSpatialMenuItem = null; + private JMenuItem ivjSpatialExistingMenuItem = null; + private JMenuItem ivjSpatialCreateNewMenuItem = null; + // private JMenuItem ivjEdit_Annotation_JMenuItem = null; + private JMenuItem ivjTestingFrameworkMenuItem = null; + private JMenuItem ivjJMenuItemOnlineHelp = null; + private JMenuItem ivjJMenuItemOnlineSupport = null; + private JMenuItem ivjJMenuItemDiscussionGroup = null; + private JMenuItem ivjJMenuItemManagePermissions = null; + private JMenuItem ivjJMenuItemOnlinePublish = null; + private JMenuItem jMenuItemGrantPermissionsToVCellSupport = null; + + private JMenuItem ivjJMenuItemEmailSupport = null; + private JMenuItem newHelpMenuItem = null; + // private JMenuItem ivjRunBNGMenuItem = null; + private JMenuItem ivjRunVFrapMenuItem = null; + //Added Oct. 17th, 2007. To put a tool menu in + private JMenu toolMenu = null; + private JMenuItem transMAMenuItem = null; + private JMenuItem viewJobsMenuItem = null; + private JMenuItem jMenuItemPermissions = null; + private JLabel warningText = null; + private JLabel iconText = null; + private JDialog viewSpeciesDialog = null; + + private JMenuItem exportedDataViewer = null; + + private final JMenuItem menuItemImportPathwayWebLocation = null; + private final JMenuItem menuItemImportPathwayFile = null; + private final JMenuItem menuItemImportPathwayExample = null; + + class IvjEventHandler implements java.awt.event.ActionListener, java.awt.event.ItemListener, java.awt.event.MouseListener { + public void actionPerformed(java.awt.event.ActionEvent e) { + try { + if (e.getSource() == DocumentWindow.this.getAbout_BoxMenuItem()) showAboutBox(DocumentWindow.this); - if (e.getSource() == DocumentWindow.this.getCloseMenuItem()) - getWindowManager().closeWindow(); - if (e.getSource() == DocumentWindow.this.getExitMenuItem()) - getWindowManager().exitApplication(); - if (e.getSource() == DocumentWindow.this.getJMenuItemNewBioModel()) - DocumentWindow.this.newDocument(e); - if (e.getSource() == DocumentWindow.this.getJMenuItemOpenBioModel()) - DocumentWindow.this.openDocument(e); - if (e.getSource() == DocumentWindow.this.getJMenuItemOpenLocal()) - importExternalDocument(); - if (e.getSource() == DocumentWindow.this.getJMenuItemOpenMathModel()) - DocumentWindow.this.openDocument(e); - if (e.getSource() == DocumentWindow.this.getSaveMenuItem()) - DocumentWindow.this.saveDocument(true); - if (e.getSource() == DocumentWindow.this.getSave_AsMenuItem()) - getWindowManager().saveDocumentAsNew(); - if (e.getSource() == DocumentWindow.this.getSave_AsLocalMenuItem()) - saveAsLocal(); - try { - if (e.getSource() == DocumentWindow.this.getJMenuItemImport()) - DocumentWindow.this.importExternalDocument(); - if (e.getSource() == DocumentWindow.this.menuItemImportPathwayWebLocation) - DocumentWindow.this.importPathway(PathwayImportOption.Web_Location); - else if (e.getSource() == DocumentWindow.this.menuItemImportPathwayFile) - DocumentWindow.this.importPathway(PathwayImportOption.File); - else if (e.getSource() == DocumentWindow.this.menuItemImportPathwayExample) - DocumentWindow.this.importPathway(PathwayImportOption.Example); - } catch (Throwable throwable) { - DocumentWindow.this.handleException(throwable); - } - if (e.getSource() == DocumentWindow.this.getSave_VersionMenuItem()) - DocumentWindow.this.saveDocument(false); - if (e.getSource() == DocumentWindow.this.getChange_ProxyMenuItem()) - setProxy(); - if (e.getSource() == DocumentWindow.this.getReconnectUserMenuItem()) - DocumentWindow.this.reconnect(); - if (e.getSource() == DocumentWindow.this.getJMenuItemRevert()) - getWindowManager().revertToSaved(); - if (e.getSource() == DocumentWindow.this.getJMenuItemCompare()) - getWindowManager().compareWithSaved(); - if (e.getSource() == DocumentWindow.this.getNonSpatialMenuItem()) - DocumentWindow.this.newDocument(e); - if (e.getSource() == DocumentWindow.this.getMathFromBioMenuItem()) - DocumentWindow.this.newDocument(e); - if (e.getSource() == DocumentWindow.this.getSpatialExistingMenuItem()) - newDocument(e); - if (e.getSource() == DocumentWindow.this.getSpatialCreateNewMenuItem()) - newDocument(e); - if (e.getSource() == DocumentWindow.this.getJMenuItemExport()) - getWindowManager().exportDocument(null); - if (e.getSource() == DocumentWindow.this.getTestingFrameworkMenuItem()) - DocumentWindow.this.showTestingFrameworkWindow(); - if (e.getSource() == DocumentWindow.this.getJMenuItemOnlineHelp()) - DocumentWindow.this.invokeOnlineHelp(); - if (e.getSource() == DocumentWindow.this.getJMenuItemOnlineSupport()) - DocumentWindow.this.invokeOnlineSupport(); - if (e.getSource() == DocumentWindow.this.getJMenuItemDiscussionGroup()) - DocumentWindow.this.invokeDiscussionGroup(); - if (e.getSource() == DocumentWindow.this.getJMenuItemManagePermissions()) - DocumentWindow.this.invokeManagePermissions(); - if (e.getSource() == DocumentWindow.this.getJMenuItemOnlinePublish()) - DocumentWindow.this.invokeOnlinePublish(); - if (e.getSource() == DocumentWindow.this.getJMenuItemEmailSupport()) - emailSupport(e); - if (e.getSource() == DocumentWindow.this.getNewHelpMenuItem()) - showVCellHelpWindow(); - if (e.getSource() == DocumentWindow.this.getLogOutMenuItem()) - getWindowManager().getRequestManager().logOut(getWindowManager()); - if (e.getSource() == DocumentWindow.this.getRunVFrapItem()) - startVirtualFRAP(); - if (e.getSource() == DocumentWindow.this.getTransMAMenuItem()) - showTransMADialog(); - if (e.getSource() == DocumentWindow.this.getViewJobsMenuItem()) - showViewJobsDialog(); - if (e.getSource() == DocumentWindow.this.getJMenuItemFieldData()) - getWindowManager().showFieldDataWindow(); - if (e.getSource() == DocumentWindow.this.getManageUserMenuItem()){ - if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)){ + if (e.getSource() == DocumentWindow.this.getCloseMenuItem()) + DocumentWindow.this.getWindowManager().closeWindow(); + if (e.getSource() == DocumentWindow.this.getExitMenuItem()) + DocumentWindow.this.getWindowManager().exitApplication(); + if (e.getSource() == DocumentWindow.this.getJMenuItemNewBioModel()) + DocumentWindow.this.newDocument(e); + if (e.getSource() == DocumentWindow.this.getJMenuItemOpenBioModel()) + DocumentWindow.this.openDocument(e); + if (e.getSource() == DocumentWindow.this.getJMenuItemOpenLocal()) + DocumentWindow.this.importExternalDocument(); + if (e.getSource() == DocumentWindow.this.getJMenuItemOpenMathModel()) + DocumentWindow.this.openDocument(e); + if (e.getSource() == DocumentWindow.this.getSaveMenuItem()) + DocumentWindow.this.saveDocument(true); + if (e.getSource() == DocumentWindow.this.getSave_AsMenuItem()) + DocumentWindow.this.getWindowManager().saveDocumentAsNew(); + if (e.getSource() == DocumentWindow.this.getSave_AsLocalMenuItem()) + DocumentWindow.this.saveAsLocal(); + try { + if (e.getSource() == DocumentWindow.this.getJMenuItemImport()) + DocumentWindow.this.importExternalDocument(); + if (e.getSource() == DocumentWindow.this.menuItemImportPathwayWebLocation) + DocumentWindow.this.importPathway(PathwayImportOption.Web_Location); + else if (e.getSource() == DocumentWindow.this.menuItemImportPathwayFile) + DocumentWindow.this.importPathway(PathwayImportOption.File); + else if (e.getSource() == DocumentWindow.this.menuItemImportPathwayExample) + DocumentWindow.this.importPathway(PathwayImportOption.Example); + } catch (Throwable throwable) { + DocumentWindow.this.handleException(throwable); + } + if (e.getSource() == DocumentWindow.this.getSave_VersionMenuItem()) + DocumentWindow.this.saveDocument(false); + if (e.getSource() == DocumentWindow.this.getChange_ProxyMenuItem()) + DocumentWindow.this.setProxy(); + if (e.getSource() == DocumentWindow.this.getReconnectUserMenuItem()) + DocumentWindow.this.reconnect(); + if (e.getSource() == DocumentWindow.this.getJMenuItemRevert()) + DocumentWindow.this.getWindowManager().revertToSaved(); + if (e.getSource() == DocumentWindow.this.getJMenuItemCompare()) + DocumentWindow.this.getWindowManager().compareWithSaved(); + if (e.getSource() == DocumentWindow.this.getNonSpatialMenuItem()) + DocumentWindow.this.newDocument(e); + if (e.getSource() == DocumentWindow.this.getMathFromBioMenuItem()) + DocumentWindow.this.newDocument(e); + if (e.getSource() == DocumentWindow.this.getSpatialExistingMenuItem()) + DocumentWindow.this.newDocument(e); + if (e.getSource() == DocumentWindow.this.getSpatialCreateNewMenuItem()) + DocumentWindow.this.newDocument(e); + if (e.getSource() == DocumentWindow.this.getJMenuItemExport()) + DocumentWindow.this.getWindowManager().exportDocument(null); + if (e.getSource() == DocumentWindow.this.getTestingFrameworkMenuItem()) + DocumentWindow.this.showTestingFrameworkWindow(); + if (e.getSource() == DocumentWindow.this.getJMenuItemOnlineHelp()) + DocumentWindow.this.invokeOnlineHelp(); + if (e.getSource() == DocumentWindow.this.getJMenuItemOnlineSupport()) + DocumentWindow.this.invokeOnlineSupport(); + if (e.getSource() == DocumentWindow.this.getJMenuItemDiscussionGroup()) + DocumentWindow.this.invokeDiscussionGroup(); + if (e.getSource() == DocumentWindow.this.getJMenuItemManagePermissions()) + DocumentWindow.this.invokeManagePermissions(); + if (e.getSource() == DocumentWindow.this.getJMenuItemOnlinePublish()) + DocumentWindow.this.invokeOnlinePublish(); + if (e.getSource() == DocumentWindow.this.getJMenuItemEmailSupport()) + DocumentWindow.this.emailSupport(e); + if (e.getSource() == DocumentWindow.this.getNewHelpMenuItem()) + DocumentWindow.this.showVCellHelpWindow(); + if (e.getSource() == DocumentWindow.this.getLogOutMenuItem()) + DocumentWindow.this.getWindowManager().getRequestManager().logOut(DocumentWindow.this.getWindowManager()); + if (e.getSource() == DocumentWindow.this.getRunVFrapItem()) + DocumentWindow.this.startVirtualFRAP(); + if (e.getSource() == DocumentWindow.this.getTransMAMenuItem()) + DocumentWindow.this.showTransMADialog(); + if (e.getSource() == DocumentWindow.this.getViewJobsMenuItem()) + DocumentWindow.this.showViewJobsDialog(); + if (e.getSource() == DocumentWindow.this.getJMenuItemFieldData()) + DocumentWindow.this.getWindowManager().showFieldDataWindow(); + if (e.getSource() == DocumentWindow.this.getManageUserMenuItem()) { + if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) { Desktop.getDesktop().browse(new URI("https://vcell-stage.cam.uchc.edu/profile")); } - } - if (e.getSource() == DocumentWindow.this.getLoginItem()){ - login(); - } - if (e.getSource() == DocumentWindow.this.getPermissionsMenuItem()) { - getWindowManager().getRequestManager().accessPermissions(DocumentWindow.this, getWindowManager().getVCDocument()); - } - if (e.getSource() == DocumentWindow.this.getGrantPermissionsToVCellSupportMenuItem()) { - RequestManager rm = getWindowManager().getRequestManager(); - if(rm instanceof ClientRequestManager) { - ClientRequestManager crm = (ClientRequestManager)rm; - crm.accessPermissionsEx(DocumentWindow.this, getWindowManager().getVCDocument(), true); - } else { - rm.accessPermissions(DocumentWindow.this, getWindowManager().getVCDocument()); - } - } - if (e.getSource() == DocumentWindow.this.getExportedDataViewer()){ - DocumentWindow.this.showViewExportedDataDialog(); - } - } - catch (Throwable throwable){ - handleException(throwable); - } - - }; - - public void itemStateChanged(java.awt.event.ItemEvent e) { - if (e.getSource() == DocumentWindow.this.getStatusbarMenuItem()) - getStatusBarPane().setVisible(getStatusbarMenuItem().isSelected()); - } + } + if (e.getSource() == DocumentWindow.this.getLoginItem()) { + DocumentWindow.this.login(); + } + if (e.getSource() == DocumentWindow.this.getPermissionsMenuItem()) { + DocumentWindow.this.getWindowManager().getRequestManager().accessPermissions(DocumentWindow.this, DocumentWindow.this.getWindowManager().getVCDocument()); + } + if (e.getSource() == DocumentWindow.this.getGrantPermissionsToVCellSupportMenuItem()) { + RequestManager rm = DocumentWindow.this.getWindowManager().getRequestManager(); + if (rm instanceof ClientRequestManager crm) { + crm.accessPermissionsEx(DocumentWindow.this, DocumentWindow.this.getWindowManager().getVCDocument(), true); + } else { + rm.accessPermissions(DocumentWindow.this, DocumentWindow.this.getWindowManager().getVCDocument()); + } + } + if (e.getSource() == DocumentWindow.this.getExportedDataViewer()) { + DocumentWindow.this.showViewExportedDataDialog(); + } + } catch (Throwable throwable) { + DocumentWindow.this.handleException(throwable); + } - @Override - public void mouseClicked(MouseEvent e) { - } - @Override - public void mouseEntered(MouseEvent e) { - } - @Override - public void mouseExited(MouseEvent e) { - } - @Override - public void mousePressed(MouseEvent e) { - } - @Override - public void mouseReleased(MouseEvent e) { - if(e.getSource() == DocumentWindow.this.getIconBar()) { + } + + public void itemStateChanged(java.awt.event.ItemEvent e) { + if (e.getSource() == DocumentWindow.this.getStatusbarMenuItem()) + DocumentWindow.this.getStatusBarPane().setVisible(DocumentWindow.this.getStatusbarMenuItem().isSelected()); + } + + @Override + public void mouseClicked(MouseEvent e) { + } + + @Override + public void mouseEntered(MouseEvent e) { + } + + @Override + public void mouseExited(MouseEvent e) { + } + + @Override + public void mousePressed(MouseEvent e) { + } + + @Override + public void mouseReleased(MouseEvent e) { + if (e.getSource() == DocumentWindow.this.getIconBar()) { // PopupGenerator.showInfoDialog(DocumentWindow.this, "VCell admin notification message"); DialogUtils.browserLauncher(DocumentWindow.this, notificationsUrl, "Please visit '" + notificationsUrl + "' for server administrator notifications."); @@ -280,48 +282,47 @@ public void mouseReleased(MouseEvent e) { // PopupGenerator.browserLauncher(this, BeanUtils.getDynamicClientProperties().getProperty(PropertyLoader.VC_TUT_PERMISSION_URL), // "Please visit "+BeanUtils.getDynamicClientProperties().getProperty(PropertyLoader.VC_TUT_PERMISSION_URL)+" for instructions on how to change permissions to your Model"); } - }; - }; - private JMenuItem ivjJMenuItemFieldData = null; -// private JMenuItem jMenuItemMIRIAM = null; - private JMenuItem jMenuItemPreferences = null; + } -/** - * DocumentWindow constructor comment. - */ -public DocumentWindow() { - super(); - initialize(); - childWindowManager = new ChildWindowManager(this); -} + } -@Override -public String menuDescription() { - return getTitle( ); -} + private JMenuItem ivjJMenuItemFieldData = null; + // private JMenuItem jMenuItemMIRIAM = null; + private JMenuItem jMenuItemPreferences = null; + + /** + * DocumentWindow constructor comment. + */ + public DocumentWindow() { + super(); + this.initialize(); + this.childWindowManager = new ChildWindowManager(this); + } + @Override + public String menuDescription() { + return this.getTitle(); + } - private void setProxy(){ - try { - NetworkProxyPreferences.setProxyPrefs(this, (restartMsg) -> DialogUtils.showInfoDialog(this, restartMsg) ); - if(getTopLevelWindowManager()==null || getTopLevelWindowManager().getRequestManager()==null || - getTopLevelWindowManager().getRequestManager().getDocumentManager()==null){ - DialogUtils.showInfoDialog(this, "Update Proxy settings by restarting VCell or using menu Server->'change user' or Server->reconnect"); - }else if(getTopLevelWindowManager().getRequestManager().getDocumentManager().getUser() == null){ - return; - }else{ - reconnect(); - } - } catch (UtilCancelException e) { - return; - } -} + private void setProxy() { + try { + NetworkProxyPreferences.setProxyPrefs(this, (restartMsg) -> DialogUtils.showInfoDialog(this, restartMsg)); + if (this.getTopLevelWindowManager() == null || this.getTopLevelWindowManager().getRequestManager() == null || + this.getTopLevelWindowManager().getRequestManager().getDocumentManager() == null) { + DialogUtils.showInfoDialog(this, "Update Proxy settings by restarting VCell or using menu Server->'change user' or Server->reconnect"); + } else if (this.getTopLevelWindowManager().getRequestManager().getDocumentManager().getUser() == null) { + } else { + this.reconnect(); + } + } catch (UtilCancelException e) { + } + } - private void showVCellHelpWindow() { - VcellHelpViewer.showStandaloneViewer(); - //PENDING Window Manager redesign + private void showVCellHelpWindow() { + VcellHelpViewer.showStandaloneViewer(); + //PENDING Window Manager redesign // ChildWindow helpWindow = childWindowManager.getChildWindowFromContext(HelpViewerContextObject); // if (helpWindow!=null){ @@ -340,10 +341,10 @@ private void showVCellHelpWindow() { // helpWindow.show(); // showHierarchy("shown",vcellHelpViewer); // } -} + } -@SuppressWarnings("unused") //Pending Window Manager redesign -private void showHierarchy(String when, VcellHelpViewer vcellHelpViewer ) { + @SuppressWarnings("unused") //Pending Window Manager redesign + private void showHierarchy(String when, VcellHelpViewer vcellHelpViewer) { /* System.out.println(when); Container ctn = vcellHelpViewer.getParent(); @@ -352,1604 +353,1624 @@ private void showHierarchy(String when, VcellHelpViewer vcellHelpViewer ) { ctn = ctn.getParent(); } */ -} + } private void emailSupport(java.awt.event.ActionEvent arg1) { - try { - Desktop desktop; - if (Desktop.isDesktopSupported() && (desktop = Desktop.getDesktop()).isSupported(Desktop.Action.MAIL) ) { - URI mailto = new URI("mailto:vcell_support@uchc.edu"); // "mailto:john@example.com?subject=Hello%20World" - desktop.mail(mailto); - } else { - throw new RuntimeException("Desktop doesn't support mailto"); - } - } catch(URISyntaxException | IOException ex) { - handleException(ex); - } - + try { + Desktop desktop; + if (Desktop.isDesktopSupported() && (desktop = Desktop.getDesktop()).isSupported(Desktop.Action.MAIL)) { + URI mailto = new URI("mailto:vcell_support@uchc.edu"); // "mailto:john@example.com?subject=Hello%20World" + desktop.mail(mailto); + } else { + throw new RuntimeException("Desktop doesn't support mailto"); + } + } catch (URISyntaxException | IOException ex) { + this.handleException(ex); + } -} + } private javax.swing.JMenuItem getAbout_BoxMenuItem() { - if (ivjAbout_BoxMenuItem == null) { + if (this.ivjAbout_BoxMenuItem == null) { try { - ivjAbout_BoxMenuItem = new javax.swing.JMenuItem(); - ivjAbout_BoxMenuItem.setName("About_BoxMenuItem"); - ivjAbout_BoxMenuItem.setText("About VCell"); + this.ivjAbout_BoxMenuItem = new javax.swing.JMenuItem(); + this.ivjAbout_BoxMenuItem.setName("About_BoxMenuItem"); + this.ivjAbout_BoxMenuItem.setText("About VCell"); } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); + this.handleException(ivjExc); } } - return ivjAbout_BoxMenuItem; + return this.ivjAbout_BoxMenuItem; } -private void startVirtualFRAP(){ - final DocumentWindowManager dwm = getWindowManager(); - final Hashtable ht = new Hashtable<>(); - ClientTaskDispatcher.dispatch(this, ht,LaunchVirtualFRAP.taskList(dwm), true,false,false,null,false); -} + private void startVirtualFRAP() { + final DocumentWindowManager dwm = this.getWindowManager(); + final Hashtable ht = new Hashtable<>(); + ClientTaskDispatcher.dispatch(this, ht, LaunchVirtualFRAP.taskList(dwm), true, false, false, null, false); + } -private JMenu getToolMenu() { - if (toolMenu == null) { - try { - toolMenu = new javax.swing.JMenu(); - //getImageJServiceMenuItem().setText(createImageJServiceMenuText()); - toolMenu.addMenuListener(new MenuListener() { - @Override - public void menuSelected(MenuEvent e) { + private JMenu getToolMenu() { + if (this.toolMenu == null) { + try { + this.toolMenu = new javax.swing.JMenu(); + //getImageJServiceMenuItem().setText(createImageJServiceMenuText()); + this.toolMenu.addMenuListener(new MenuListener() { + @Override + public void menuSelected(MenuEvent e) { // getImageJServiceMenuItem().setText(createImageJServiceMenuText()); - } - @Override - public void menuDeselected(MenuEvent e) { - } - @Override - public void menuCanceled(MenuEvent e) { - } - }); - - toolMenu.setName("ToolMenu"); - toolMenu.setText("Tools"); - toolMenu.add(new JSeparator()); - toolMenu.add(getRunVFrapItem()); - toolMenu.add(getExportedDataViewer()); - toolMenu.add(new JSeparator()); - toolMenu.add(getTransMAMenuItem()); + } + + @Override + public void menuDeselected(MenuEvent e) { + } + + @Override + public void menuCanceled(MenuEvent e) { + } + }); + + this.toolMenu.setName("ToolMenu"); + this.toolMenu.setText("Tools"); + this.toolMenu.add(new JSeparator()); + this.toolMenu.add(this.getRunVFrapItem()); + this.toolMenu.add(this.getExportedDataViewer()); + this.toolMenu.add(new JSeparator()); + this.toolMenu.add(this.getTransMAMenuItem()); // toolMenu.add(getViewJobsMenuItem()); // moved to Server - } catch (Throwable ivjExc) { - handleException(ivjExc); - } - } - return toolMenu; -} + } catch (Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.toolMenu; + } -private javax.swing.JMenuItem getTransMAMenuItem() { - if (transMAMenuItem == null) { - try { - transMAMenuItem = new javax.swing.JMenuItem(); - transMAMenuItem.setName("TransMA"); - transMAMenuItem.setText("Transform to Stochastic Capable"); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return transMAMenuItem; -} + private javax.swing.JMenuItem getTransMAMenuItem() { + if (this.transMAMenuItem == null) { + try { + this.transMAMenuItem = new javax.swing.JMenuItem(); + this.transMAMenuItem.setName("TransMA"); + this.transMAMenuItem.setText("Transform to Stochastic Capable"); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.transMAMenuItem; + } -private javax.swing.JMenuItem getViewJobsMenuItem() { - if (viewJobsMenuItem == null) { - try { - viewJobsMenuItem = new javax.swing.JMenuItem(); - viewJobsMenuItem.setName("ViewJobs"); - viewJobsMenuItem.setText("View Simulation Jobs"); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return viewJobsMenuItem; -} + private javax.swing.JMenuItem getViewJobsMenuItem() { + if (this.viewJobsMenuItem == null) { + try { + this.viewJobsMenuItem = new javax.swing.JMenuItem(); + this.viewJobsMenuItem.setName("ViewJobs"); + this.viewJobsMenuItem.setText("View Simulation Jobs"); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.viewJobsMenuItem; + } -private JMenuItem getLoginItem(){ - if (loginMenuItem == null){ - loginMenuItem = new javax.swing.JMenuItem(); - loginMenuItem.setName("LoginMenuItem"); - loginMenuItem.setText("Login"); - loginMenuItem.setEnabled(false); - } - return loginMenuItem; -} + private JMenuItem getLoginItem() { + if (this.loginMenuItem == null) { + this.loginMenuItem = new javax.swing.JMenuItem(); + this.loginMenuItem.setName("LoginMenuItem"); + this.loginMenuItem.setText("Login"); + this.loginMenuItem.setEnabled(false); + } + return this.loginMenuItem; + } -private JMenuItem getManageUserMenuItem(){ - if (ivjManageUser == null){ - ivjManageUser = new javax.swing.JMenuItem(); - ivjManageUser.setName("ManageUserMenuItem"); - ivjManageUser.setText("Manage User"); - ivjManageUser.setEnabled(false); - } - return ivjManageUser; -} + private JMenuItem getManageUserMenuItem() { + if (this.ivjManageUser == null) { + this.ivjManageUser = new javax.swing.JMenuItem(); + this.ivjManageUser.setName("ManageUserMenuItem"); + this.ivjManageUser.setText("Manage User"); + this.ivjManageUser.setEnabled(false); + } + return this.ivjManageUser; + } -private JMenuItem getLogOutMenuItem() { - if (ivjLogoutUser == null){ - ivjLogoutUser = new javax.swing.JMenuItem(); - ivjLogoutUser.setName("LogoutMenuItem"); - ivjLogoutUser.setText("Logout"); - ivjLogoutUser.setEnabled(false); - } - return ivjLogoutUser; -} + private JMenuItem getLogOutMenuItem() { + if (this.ivjLogoutUser == null) { + this.ivjLogoutUser = new javax.swing.JMenuItem(); + this.ivjLogoutUser.setName("LogoutMenuItem"); + this.ivjLogoutUser.setText("Logout"); + this.ivjLogoutUser.setEnabled(false); + } + return this.ivjLogoutUser; + } -private JMenuItem getReconnectUserMenuItem(){ - if (ivjReconnectMenuItem == null){ - ivjReconnectMenuItem = new javax.swing.JMenuItem(); - ivjReconnectMenuItem.setName("ReconnectMenuItem"); - ivjReconnectMenuItem.setText("Reconnect (Refresh)"); - ivjReconnectMenuItem.setEnabled(false); - } - return ivjReconnectMenuItem; -} + private JMenuItem getReconnectUserMenuItem() { + if (this.ivjReconnectMenuItem == null) { + this.ivjReconnectMenuItem = new javax.swing.JMenuItem(); + this.ivjReconnectMenuItem.setName("ReconnectMenuItem"); + this.ivjReconnectMenuItem.setText("Reconnect (Refresh)"); + this.ivjReconnectMenuItem.setEnabled(false); + } + return this.ivjReconnectMenuItem; + } -private JMenuItem ivjChange_ProxyMenuItem; -private javax.swing.JMenuItem getChange_ProxyMenuItem() { - if (ivjChange_ProxyMenuItem == null) { - try { - ivjChange_ProxyMenuItem = new javax.swing.JMenuItem(); - ivjChange_ProxyMenuItem.setName("Change_ProxyMenuItem"); - ivjChange_ProxyMenuItem.setText("Set Proxy..."); - ivjChange_ProxyMenuItem.setEnabled(true); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjChange_ProxyMenuItem; -} + private JMenuItem ivjChange_ProxyMenuItem; -private javax.swing.JMenuItem getCloseMenuItem() { - if (ivjCloseMenuItem == null) { - try { - ivjCloseMenuItem = new javax.swing.JMenuItem(); - ivjCloseMenuItem.setName("CloseMenuItem"); - ivjCloseMenuItem.setText("Close"); - ivjCloseMenuItem.setAccelerator(GeneralGuiUtils.CLOSE_WINDOW_KEY_STROKE); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjCloseMenuItem; -} + private javax.swing.JMenuItem getChange_ProxyMenuItem() { + if (this.ivjChange_ProxyMenuItem == null) { + try { + this.ivjChange_ProxyMenuItem = new javax.swing.JMenuItem(); + this.ivjChange_ProxyMenuItem.setName("Change_ProxyMenuItem"); + this.ivjChange_ProxyMenuItem.setText("Set Proxy..."); + this.ivjChange_ProxyMenuItem.setEnabled(true); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjChange_ProxyMenuItem; + } -private javax.swing.JMenuBar getDocumentWindowJMenuBar() { - if (ivjDocumentWindowJMenuBar == null) { - try { - ivjDocumentWindowJMenuBar = new javax.swing.JMenuBar(); - ivjDocumentWindowJMenuBar.setName("DocumentWindowJMenuBar"); - ivjDocumentWindowJMenuBar.add(getFileMenu()); - ivjDocumentWindowJMenuBar.add(getServerMenu()); - ivjDocumentWindowJMenuBar.add(createWindowMenu(true)); - ivjDocumentWindowJMenuBar.add(getToolMenu()); - ivjDocumentWindowJMenuBar.add(getHelpMenu()); - ivjDocumentWindowJMenuBar.add(Box.createHorizontalGlue()); - ivjDocumentWindowJMenuBar.add(createWindowMenu(false)); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjDocumentWindowJMenuBar; -} + private javax.swing.JMenuItem getCloseMenuItem() { + if (this.ivjCloseMenuItem == null) { + try { + this.ivjCloseMenuItem = new javax.swing.JMenuItem(); + this.ivjCloseMenuItem.setName("CloseMenuItem"); + this.ivjCloseMenuItem.setText("Close"); + this.ivjCloseMenuItem.setAccelerator(GeneralGuiUtils.CLOSE_WINDOW_KEY_STROKE); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjCloseMenuItem; + } -private javax.swing.JMenuItem getExitMenuItem() { - if (ivjExitMenuItem == null) { - try { - ivjExitMenuItem = new javax.swing.JMenuItem(); - ivjExitMenuItem.setName("ExitMenuItem"); - ivjExitMenuItem.setText("Exit"); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjExitMenuItem; -} + private javax.swing.JMenuBar getDocumentWindowJMenuBar() { + if (this.ivjDocumentWindowJMenuBar == null) { + try { + this.ivjDocumentWindowJMenuBar = new javax.swing.JMenuBar(); + this.ivjDocumentWindowJMenuBar.setName("DocumentWindowJMenuBar"); + this.ivjDocumentWindowJMenuBar.add(this.getFileMenu()); + this.ivjDocumentWindowJMenuBar.add(this.getServerMenu()); + this.ivjDocumentWindowJMenuBar.add(createWindowMenu(true)); + this.ivjDocumentWindowJMenuBar.add(this.getToolMenu()); + this.ivjDocumentWindowJMenuBar.add(this.getHelpMenu()); + this.ivjDocumentWindowJMenuBar.add(Box.createHorizontalGlue()); + this.ivjDocumentWindowJMenuBar.add(createWindowMenu(false)); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjDocumentWindowJMenuBar; + } -private javax.swing.JMenu getFileMenu() { - if (ivjFileMenu == null) { - try { - ivjFileMenu = new javax.swing.JMenu(); - ivjFileMenu.setName("FileMenu"); - ivjFileMenu.setText("File"); - ivjFileMenu.add(getNewMenuItem()); - ivjFileMenu.add(getOpenMenuItem()); - ivjFileMenu.add(getCloseMenuItem()); - ivjFileMenu.add(new JSeparator()); - ivjFileMenu.add(getSaveMenuItem()); - ivjFileMenu.add(getSave_VersionMenuItem()); - ivjFileMenu.add(getSave_AsMenuItem()); - ivjFileMenu.add(getSave_AsLocalMenuItem()); - ivjFileMenu.add(new JSeparator()); - ivjFileMenu.add(getJMenuItemRevert()); - ivjFileMenu.add(getJMenuItemCompare()); - ivjFileMenu.add(new JSeparator()); - ivjFileMenu.add(getPermissionsMenuItem()); - ivjFileMenu.add(new JSeparator()); - ivjFileMenu.add(getJMenuItemFieldData()); - ivjFileMenu.add(getTestingFrameworkMenuItem()); - ivjFileMenu.add(new JSeparator()); - ivjFileMenu.add(getJMenuItemImport()); - ivjFileMenu.add(getJMenuItemExport()); - ivjFileMenu.add(new JSeparator()); - ivjFileMenu.add(new JSeparator()); - ivjFileMenu.add(getExitMenuItem()); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjFileMenu; -} + private javax.swing.JMenuItem getExitMenuItem() { + if (this.ivjExitMenuItem == null) { + try { + this.ivjExitMenuItem = new javax.swing.JMenuItem(); + this.ivjExitMenuItem.setName("ExitMenuItem"); + this.ivjExitMenuItem.setText("Exit"); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjExitMenuItem; + } -private JMenuItem getExportedDataViewer(){ - if(exportedDataViewer == null){ - exportedDataViewer = new JMenuItem(); - exportedDataViewer.setName("Exported Data Viewer"); - exportedDataViewer.setText("Exported Data Viewer"); - } - return exportedDataViewer; -} + private javax.swing.JMenu getFileMenu() { + if (this.ivjFileMenu == null) { + try { + this.ivjFileMenu = new javax.swing.JMenu(); + this.ivjFileMenu.setName("FileMenu"); + this.ivjFileMenu.setText("File"); + this.ivjFileMenu.add(this.getNewMenuItem()); + this.ivjFileMenu.add(this.getOpenMenuItem()); + this.ivjFileMenu.add(this.getCloseMenuItem()); + this.ivjFileMenu.add(new JSeparator()); + this.ivjFileMenu.add(this.getSaveMenuItem()); + this.ivjFileMenu.add(this.getSave_VersionMenuItem()); + this.ivjFileMenu.add(this.getSave_AsMenuItem()); + this.ivjFileMenu.add(this.getSave_AsLocalMenuItem()); + this.ivjFileMenu.add(new JSeparator()); + this.ivjFileMenu.add(this.getJMenuItemRevert()); + this.ivjFileMenu.add(this.getJMenuItemCompare()); + this.ivjFileMenu.add(new JSeparator()); + this.ivjFileMenu.add(this.getPermissionsMenuItem()); + this.ivjFileMenu.add(new JSeparator()); + this.ivjFileMenu.add(this.getJMenuItemFieldData()); + this.ivjFileMenu.add(this.getTestingFrameworkMenuItem()); + this.ivjFileMenu.add(new JSeparator()); + this.ivjFileMenu.add(this.getJMenuItemImport()); + this.ivjFileMenu.add(this.getJMenuItemExport()); + this.ivjFileMenu.add(new JSeparator()); + this.ivjFileMenu.add(new JSeparator()); + this.ivjFileMenu.add(this.getExitMenuItem()); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjFileMenu; + } -public static void showGeometryCreationWarning(Component parentComponent){ - DialogUtils.showWarningDialog(parentComponent, - "Geometries are now viewed/edited/created within BioModels or MathModels.\n"+ - "\nBioModel geometries are viewed/edited from a BioModel document within an Application in the 'Geometry' section.\n"+ - " \nMathModel geometries are viewed/edited from a MathModel document by pressing the 'Geometry Viewer' button."); + private JMenuItem getExportedDataViewer() { + if (this.exportedDataViewer == null) { + this.exportedDataViewer = new JMenuItem(); + this.exportedDataViewer.setName("Exported Data Viewer"); + this.exportedDataViewer.setText("Exported Data Viewer"); + } + return this.exportedDataViewer; + } -} -/** - * Return the HelpMenu property value. - * @return javax.swing.JMenu - */ -/* WARNING: THIS METHOD WILL BE REGENERATED. */ -private javax.swing.JMenu getHelpMenu() { - if (ivjHelpMenu == null) { - try { - ivjHelpMenu = new javax.swing.JMenu(); - ivjHelpMenu.setName("HelpMenu"); - ivjHelpMenu.setText("Help"); - ivjHelpMenu.add(getNewHelpMenuItem()); - ivjHelpMenu.add(getJMenuItemOnlineHelp()); - //ivjHelpMenu.add(getJMenuItemOnlineSupport()); - ivjHelpMenu.add(getJMenuItemDiscussionGroup()); - ivjHelpMenu.add(getJMenuItemManagePermissions()); - ivjHelpMenu.add(getJMenuItemOnlinePublish()); - ivjHelpMenu.add(getJMenuItemEmailSupport()); - ivjHelpMenu.add(getGrantPermissionsToVCellSupportMenuItem()); - ivjHelpMenu.add(getJMenuItemPreferences()); + public static void showGeometryCreationWarning(Component parentComponent) { + DialogUtils.showWarningDialog(parentComponent, + "Geometries are now viewed/edited/created within BioModels or MathModels.\n" + + "\nBioModel geometries are viewed/edited from a BioModel document within an Application in the 'Geometry' section.\n" + + " \nMathModel geometries are viewed/edited from a MathModel document by pressing the 'Geometry Viewer' button."); + + } + + /** + * Return the HelpMenu property value. + * + * @return javax.swing.JMenu + */ + /* WARNING: THIS METHOD WILL BE REGENERATED. */ + private javax.swing.JMenu getHelpMenu() { + if (this.ivjHelpMenu == null) { + try { + this.ivjHelpMenu = new javax.swing.JMenu(); + this.ivjHelpMenu.setName("HelpMenu"); + this.ivjHelpMenu.setText("Help"); + this.ivjHelpMenu.add(this.getNewHelpMenuItem()); + this.ivjHelpMenu.add(this.getJMenuItemOnlineHelp()); + //ivjHelpMenu.add(getJMenuItemOnlineSupport()); + this.ivjHelpMenu.add(this.getJMenuItemDiscussionGroup()); + this.ivjHelpMenu.add(this.getJMenuItemManagePermissions()); + this.ivjHelpMenu.add(this.getJMenuItemOnlinePublish()); + this.ivjHelpMenu.add(this.getJMenuItemEmailSupport()); + this.ivjHelpMenu.add(this.getGrantPermissionsToVCellSupportMenuItem()); + this.ivjHelpMenu.add(this.getJMenuItemPreferences()); // ivjHelpMenu.add(getSeparator()); // ivjHelpMenu.add(getPermissionsMenuItem()); - ivjHelpMenu.add(getJSeparator6()); - ivjHelpMenu.add(getMntmLicenseInformation()); - ivjHelpMenu.add(getAbout_BoxMenuItem()); + this.ivjHelpMenu.add(this.getJSeparator6()); + this.ivjHelpMenu.add(this.getMntmLicenseInformation()); + this.ivjHelpMenu.add(this.getAbout_BoxMenuItem()); // ivjHelpMenu.add(getSeparator()); - ivjHelpMenu.add(getStatusbarMenuItem()); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjHelpMenu; -} - -private javax.swing.JMenuItem getJMenuItemCompare() { - if (ivjJMenuItemCompare == null) { - try { - ivjJMenuItemCompare = new javax.swing.JMenuItem(); - ivjJMenuItemCompare.setName("JMenuItemCompare"); - ivjJMenuItemCompare.setText("Compare with Saved"); - ivjJMenuItemCompare.setEnabled(false); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjJMenuItemCompare; -} + this.ivjHelpMenu.add(this.getStatusbarMenuItem()); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjHelpMenu; + } -private javax.swing.JMenuItem getJMenuItemExport() { - if (ivjJMenuItemExport == null) { - try { - ivjJMenuItemExport = new javax.swing.JMenuItem(); - ivjJMenuItemExport.setName("JMenuItemExport"); - ivjJMenuItemExport.setText("Export..."); - ivjJMenuItemExport.setActionCommand(GuiConstants.ACTIONCMD_EXPORT); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjJMenuItemExport; -} + private javax.swing.JMenuItem getJMenuItemCompare() { + if (this.ivjJMenuItemCompare == null) { + try { + this.ivjJMenuItemCompare = new javax.swing.JMenuItem(); + this.ivjJMenuItemCompare.setName("JMenuItemCompare"); + this.ivjJMenuItemCompare.setText("Compare with Saved"); + this.ivjJMenuItemCompare.setEnabled(false); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjJMenuItemCompare; + } -private javax.swing.JMenuItem getJMenuItemFieldData() { - if (ivjJMenuItemFieldData == null) { - try { - ivjJMenuItemFieldData = new javax.swing.JMenuItem(); - ivjJMenuItemFieldData.setName("JMenuItemFieldData"); - ivjJMenuItemFieldData.setText("Field Data..."); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjJMenuItemFieldData; -} + private javax.swing.JMenuItem getJMenuItemExport() { + if (this.ivjJMenuItemExport == null) { + try { + this.ivjJMenuItemExport = new javax.swing.JMenuItem(); + this.ivjJMenuItemExport.setName("JMenuItemExport"); + this.ivjJMenuItemExport.setText("Export..."); + this.ivjJMenuItemExport.setActionCommand(GuiConstants.ACTIONCMD_EXPORT); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjJMenuItemExport; + } + private javax.swing.JMenuItem getJMenuItemFieldData() { + if (this.ivjJMenuItemFieldData == null) { + try { + this.ivjJMenuItemFieldData = new javax.swing.JMenuItem(); + this.ivjJMenuItemFieldData.setName("JMenuItemFieldData"); + this.ivjJMenuItemFieldData.setText("Field Data..."); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjJMenuItemFieldData; + } -private JMenuItem getJMenuItemImport() { - if (menuItemImport == null) { - try { - menuItemImport = new JMenuItem(); - menuItemImport.setName("JMenuItemImport"); - menuItemImport.setText("Import..."); - } catch (Throwable throwable) { - handleException(throwable); - } - } - return menuItemImport; -} -private javax.swing.JMenuItem getJMenuItemNewBioModel() { - if (ivjJMenuItemNewBioModel == null) { - try { - ivjJMenuItemNewBioModel = new javax.swing.JMenuItem(); - ivjJMenuItemNewBioModel.setName("JMenuItemNewBioModel"); - ivjJMenuItemNewBioModel.setText("BioModel"); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjJMenuItemNewBioModel; -} + private JMenuItem getJMenuItemImport() { + if (this.menuItemImport == null) { + try { + this.menuItemImport = new JMenuItem(); + this.menuItemImport.setName("JMenuItemImport"); + this.menuItemImport.setText("Import..."); + } catch (Throwable throwable) { + this.handleException(throwable); + } + } + return this.menuItemImport; + } + private javax.swing.JMenuItem getJMenuItemNewBioModel() { + if (this.ivjJMenuItemNewBioModel == null) { + try { + this.ivjJMenuItemNewBioModel = new javax.swing.JMenuItem(); + this.ivjJMenuItemNewBioModel.setName("JMenuItemNewBioModel"); + this.ivjJMenuItemNewBioModel.setText("BioModel"); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjJMenuItemNewBioModel; + } -private javax.swing.JMenuItem getJMenuItemOnlineHelp() { - if (ivjJMenuItemOnlineHelp == null) { - try { - ivjJMenuItemOnlineHelp = new javax.swing.JMenuItem(); - ivjJMenuItemOnlineHelp.setName("JMenuItemOnlineHelp"); - ivjJMenuItemOnlineHelp.setText("VCell Website"); // "Online Resources" - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjJMenuItemOnlineHelp; -} -private javax.swing.JMenuItem getJMenuItemOnlineSupport() { - if (ivjJMenuItemOnlineSupport == null) { - try { - ivjJMenuItemOnlineSupport = new javax.swing.JMenuItem(); - ivjJMenuItemOnlineSupport.setName("JMenuItemOnlineSupport"); - ivjJMenuItemOnlineSupport.setText("VCell Support on the Web"); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjJMenuItemOnlineSupport; -} -private javax.swing.JMenuItem getJMenuItemDiscussionGroup() { - if (ivjJMenuItemDiscussionGroup == null) { - try { - ivjJMenuItemDiscussionGroup = new javax.swing.JMenuItem(); - ivjJMenuItemDiscussionGroup.setName("JMenuItemDiscussionGroup"); - ivjJMenuItemDiscussionGroup.setText("VCell Open Discussion Forum"); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjJMenuItemDiscussionGroup; -} -private javax.swing.JMenuItem getJMenuItemManagePermissions() { - if (ivjJMenuItemManagePermissions == null) { - try { - ivjJMenuItemManagePermissions = new javax.swing.JMenuItem(); - ivjJMenuItemManagePermissions.setName("JMenuItemManagePermissions"); - ivjJMenuItemManagePermissions.setText("How to Change Permissions"); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjJMenuItemManagePermissions; -} -private javax.swing.JMenuItem getJMenuItemOnlinePublish() { - if (ivjJMenuItemOnlinePublish == null) { - try { - ivjJMenuItemOnlinePublish = new javax.swing.JMenuItem(); - ivjJMenuItemOnlinePublish.setName("JMenuItemOnlinePublish"); - ivjJMenuItemOnlinePublish.setText("How to Publish a Model "); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjJMenuItemOnlinePublish; -} -private javax.swing.JMenuItem getJMenuItemEmailSupport() { - if (ivjJMenuItemEmailSupport == null) { - try { - ivjJMenuItemEmailSupport = new javax.swing.JMenuItem(); - ivjJMenuItemEmailSupport.setName("JMenuItemEmailSupport"); - ivjJMenuItemEmailSupport.setText("Contact VCell Support"); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjJMenuItemEmailSupport; -} -private javax.swing.JMenuItem getNewHelpMenuItem() { - if (newHelpMenuItem == null) { - try { - newHelpMenuItem = new javax.swing.JMenuItem(); - newHelpMenuItem.setName("newHelpMenuItem"); - newHelpMenuItem.setText("VCell Help"); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return newHelpMenuItem; -} + private javax.swing.JMenuItem getJMenuItemOnlineHelp() { + if (this.ivjJMenuItemOnlineHelp == null) { + try { + this.ivjJMenuItemOnlineHelp = new javax.swing.JMenuItem(); + this.ivjJMenuItemOnlineHelp.setName("JMenuItemOnlineHelp"); + this.ivjJMenuItemOnlineHelp.setText("VCell Website"); // "Online Resources" + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjJMenuItemOnlineHelp; + } -private javax.swing.JMenuItem getJMenuItemOpenBioModel() { - if (ivjJMenuItemOpenBioModel == null) { - try { - ivjJMenuItemOpenBioModel = new javax.swing.JMenuItem(); - ivjJMenuItemOpenBioModel.setName("JMenuItemOpenBioModel"); - ivjJMenuItemOpenBioModel.setText("BioModel..."); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjJMenuItemOpenBioModel; -} + private javax.swing.JMenuItem getJMenuItemOnlineSupport() { + if (this.ivjJMenuItemOnlineSupport == null) { + try { + this.ivjJMenuItemOnlineSupport = new javax.swing.JMenuItem(); + this.ivjJMenuItemOnlineSupport.setName("JMenuItemOnlineSupport"); + this.ivjJMenuItemOnlineSupport.setText("VCell Support on the Web"); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjJMenuItemOnlineSupport; + } -private javax.swing.JMenuItem getJMenuItemOpenLocal() { - if (ivjJMenuItemOpenLocal == null) { - try { - ivjJMenuItemOpenLocal = new javax.swing.JMenuItem(); - ivjJMenuItemOpenLocal.setName("JMenuItemOpenLocal"); - ivjJMenuItemOpenLocal.setText("Local..."); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjJMenuItemOpenLocal; -} + private javax.swing.JMenuItem getJMenuItemDiscussionGroup() { + if (this.ivjJMenuItemDiscussionGroup == null) { + try { + this.ivjJMenuItemDiscussionGroup = new javax.swing.JMenuItem(); + this.ivjJMenuItemDiscussionGroup.setName("JMenuItemDiscussionGroup"); + this.ivjJMenuItemDiscussionGroup.setText("VCell Open Discussion Forum"); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjJMenuItemDiscussionGroup; + } -private javax.swing.JMenuItem getJMenuItemOpenMathModel() { - if (ivjJMenuItemOpenMathModel == null) { - try { - ivjJMenuItemOpenMathModel = new javax.swing.JMenuItem(); - ivjJMenuItemOpenMathModel.setName("JMenuItemOpenMathModel"); - ivjJMenuItemOpenMathModel.setText("MathModel..."); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjJMenuItemOpenMathModel; -} + private javax.swing.JMenuItem getJMenuItemManagePermissions() { + if (this.ivjJMenuItemManagePermissions == null) { + try { + this.ivjJMenuItemManagePermissions = new javax.swing.JMenuItem(); + this.ivjJMenuItemManagePermissions.setName("JMenuItemManagePermissions"); + this.ivjJMenuItemManagePermissions.setText("How to Change Permissions"); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjJMenuItemManagePermissions; + } -private javax.swing.JMenuItem getJMenuItemRevert() { - if (ivjJMenuItemRevert == null) { - try { - ivjJMenuItemRevert = new javax.swing.JMenuItem(); - ivjJMenuItemRevert.setName("JMenuItemRevert"); - ivjJMenuItemRevert.setText("Revert to Saved"); - ivjJMenuItemRevert.setEnabled(false); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjJMenuItemRevert; -} + private javax.swing.JMenuItem getJMenuItemOnlinePublish() { + if (this.ivjJMenuItemOnlinePublish == null) { + try { + this.ivjJMenuItemOnlinePublish = new javax.swing.JMenuItem(); + this.ivjJMenuItemOnlinePublish.setName("JMenuItemOnlinePublish"); + this.ivjJMenuItemOnlinePublish.setText("How to Publish a Model "); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjJMenuItemOnlinePublish; + } -private javax.swing.JProgressBar getJProgressBarConnection() { - if (ivjJProgressBarConnection == null) { - try { - ivjJProgressBarConnection = new javax.swing.JProgressBar(); - ivjJProgressBarConnection.setName("JProgressBarConnection"); - ivjJProgressBarConnection.setString("NOT CONNECTED"); - ivjJProgressBarConnection.setStringPainted(true); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjJProgressBarConnection; -} + private javax.swing.JMenuItem getJMenuItemEmailSupport() { + if (this.ivjJMenuItemEmailSupport == null) { + try { + this.ivjJMenuItemEmailSupport = new javax.swing.JMenuItem(); + this.ivjJMenuItemEmailSupport.setName("JMenuItemEmailSupport"); + this.ivjJMenuItemEmailSupport.setText("Contact VCell Support"); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjJMenuItemEmailSupport; + } -private javax.swing.JProgressBar getJProgressBarMemory() { - if (ivjJProgressBarMemory == null) { - try { - ivjJProgressBarMemory = new javax.swing.JProgressBar(); - ivjJProgressBarMemory.setName("JProgressBarMemory"); - ivjJProgressBarMemory.setMinimum(0); - ivjJProgressBarMemory.setStringPainted(true); - ivjJProgressBarMemory.setToolTipText("Java Memory Usage"); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjJProgressBarMemory; -} + private javax.swing.JMenuItem getNewHelpMenuItem() { + if (this.newHelpMenuItem == null) { + try { + this.newHelpMenuItem = new javax.swing.JMenuItem(); + this.newHelpMenuItem.setName("newHelpMenuItem"); + this.newHelpMenuItem.setText("VCell Help"); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.newHelpMenuItem; + } -private javax.swing.JSeparator getJSeparator6() { - if (ivjJSeparator6 == null) { - try { - ivjJSeparator6 = new javax.swing.JSeparator(); - ivjJSeparator6.setName("JSeparator6"); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjJSeparator6; -} + private javax.swing.JMenuItem getJMenuItemOpenBioModel() { + if (this.ivjJMenuItemOpenBioModel == null) { + try { + this.ivjJMenuItemOpenBioModel = new javax.swing.JMenuItem(); + this.ivjJMenuItemOpenBioModel.setName("JMenuItemOpenBioModel"); + this.ivjJMenuItemOpenBioModel.setText("BioModel..."); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjJMenuItemOpenBioModel; + } -private javax.swing.JMenuItem getMathFromBioMenuItem() { - if (ivjMathFromBioMenuItem == null) { - try { - ivjMathFromBioMenuItem = new javax.swing.JMenuItem(); - ivjMathFromBioMenuItem.setName("MathFromBioMenuItem"); - ivjMathFromBioMenuItem.setText("From BioModel"); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjMathFromBioMenuItem; -} + private javax.swing.JMenuItem getJMenuItemOpenLocal() { + if (this.ivjJMenuItemOpenLocal == null) { + try { + this.ivjJMenuItemOpenLocal = new javax.swing.JMenuItem(); + this.ivjJMenuItemOpenLocal.setName("JMenuItemOpenLocal"); + this.ivjJMenuItemOpenLocal.setText("Local..."); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjJMenuItemOpenLocal; + } -private javax.swing.JMenu getMathMenu() { - if (ivjMathMenu == null) { - try { - ivjMathMenu = new javax.swing.JMenu(); - ivjMathMenu.setName("MathMenu"); - ivjMathMenu.setText("MathModel"); - ivjMathMenu.add(getNonSpatialMenuItem()); - ivjMathMenu.add(getSpatialExistingMenuItem()); - ivjMathMenu.add(getSpatialCreateNewMenuItem()); - ivjMathMenu.add(getMathFromBioMenuItem()); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjMathMenu; -} + private javax.swing.JMenuItem getJMenuItemOpenMathModel() { + if (this.ivjJMenuItemOpenMathModel == null) { + try { + this.ivjJMenuItemOpenMathModel = new javax.swing.JMenuItem(); + this.ivjJMenuItemOpenMathModel.setName("JMenuItemOpenMathModel"); + this.ivjJMenuItemOpenMathModel.setText("MathModel..."); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjJMenuItemOpenMathModel; + } -private javax.swing.JMenu getNewMenuItem() { - if (ivjNewMenuItem == null) { - try { - ivjNewMenuItem = new javax.swing.JMenu(); - ivjNewMenuItem.setName("NewMenuItem"); - ivjNewMenuItem.setText("New"); - ivjNewMenuItem.add(getJMenuItemNewBioModel()); - ivjNewMenuItem.add(getMathMenu()); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjNewMenuItem; -} + private javax.swing.JMenuItem getJMenuItemRevert() { + if (this.ivjJMenuItemRevert == null) { + try { + this.ivjJMenuItemRevert = new javax.swing.JMenuItem(); + this.ivjJMenuItemRevert.setName("JMenuItemRevert"); + this.ivjJMenuItemRevert.setText("Revert to Saved"); + this.ivjJMenuItemRevert.setEnabled(false); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjJMenuItemRevert; + } -private javax.swing.JMenuItem getNonSpatialMenuItem() { - if (ivjNonSpatialMenuItem == null) { - try { - ivjNonSpatialMenuItem = new javax.swing.JMenuItem(); - ivjNonSpatialMenuItem.setName("NonSpatialMenuItem"); - ivjNonSpatialMenuItem.setText("Non-Spatial"); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjNonSpatialMenuItem; -} + private javax.swing.JProgressBar getJProgressBarConnection() { + if (this.ivjJProgressBarConnection == null) { + try { + this.ivjJProgressBarConnection = new javax.swing.JProgressBar(); + this.ivjJProgressBarConnection.setName("JProgressBarConnection"); + this.ivjJProgressBarConnection.setString("NOT CONNECTED"); + this.ivjJProgressBarConnection.setStringPainted(true); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjJProgressBarConnection; + } -private javax.swing.JMenu getOpenMenuItem() { - if (ivjOpenMenuItem == null) { - try { - ivjOpenMenuItem = new javax.swing.JMenu(); - ivjOpenMenuItem.setName("OpenMenuItem"); - ivjOpenMenuItem.setText("Open"); - ivjOpenMenuItem.setEnabled(false); - ivjOpenMenuItem.add(getJMenuItemOpenBioModel()); - ivjOpenMenuItem.add(getJMenuItemOpenMathModel()); - ivjOpenMenuItem.add(getJMenuItemOpenLocal()); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjOpenMenuItem; -} + private javax.swing.JProgressBar getJProgressBarMemory() { + if (this.ivjJProgressBarMemory == null) { + try { + this.ivjJProgressBarMemory = new javax.swing.JProgressBar(); + this.ivjJProgressBarMemory.setName("JProgressBarMemory"); + this.ivjJProgressBarMemory.setMinimum(0); + this.ivjJProgressBarMemory.setStringPainted(true); + this.ivjJProgressBarMemory.setToolTipText("Java Memory Usage"); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjJProgressBarMemory; + } + private javax.swing.JSeparator getJSeparator6() { + if (this.ivjJSeparator6 == null) { + try { + this.ivjJSeparator6 = new javax.swing.JSeparator(); + this.ivjJSeparator6.setName("JSeparator6"); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjJSeparator6; + } + private javax.swing.JMenuItem getMathFromBioMenuItem() { + if (this.ivjMathFromBioMenuItem == null) { + try { + this.ivjMathFromBioMenuItem = new javax.swing.JMenuItem(); + this.ivjMathFromBioMenuItem.setName("MathFromBioMenuItem"); + this.ivjMathFromBioMenuItem.setText("From BioModel"); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjMathFromBioMenuItem; + } -private JMenuItem getRunVFrapItem() { - if (ivjRunVFrapMenuItem == null) { - try { - ivjRunVFrapMenuItem = new JMenuItem(); - ivjRunVFrapMenuItem.setName("RunVFrapMenuItem"); - ivjRunVFrapMenuItem.setText("Launch Virtual FRAP"); - } catch (Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjRunVFrapMenuItem; -} + private javax.swing.JMenu getMathMenu() { + if (this.ivjMathMenu == null) { + try { + this.ivjMathMenu = new javax.swing.JMenu(); + this.ivjMathMenu.setName("MathMenu"); + this.ivjMathMenu.setText("MathModel"); + this.ivjMathMenu.add(this.getNonSpatialMenuItem()); + this.ivjMathMenu.add(this.getSpatialExistingMenuItem()); + this.ivjMathMenu.add(this.getSpatialCreateNewMenuItem()); + this.ivjMathMenu.add(this.getMathFromBioMenuItem()); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjMathMenu; + } -private javax.swing.JMenuItem getSave_AsMenuItem() { - if (ivjSave_AsMenuItem == null) { - try { - ivjSave_AsMenuItem = new javax.swing.JMenuItem(); - ivjSave_AsMenuItem.setName("Save_AsMenuItem"); - ivjSave_AsMenuItem.setText("Save As..."); - ivjSave_AsMenuItem.setEnabled(true); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjSave_AsMenuItem; -} + private javax.swing.JMenu getNewMenuItem() { + if (this.ivjNewMenuItem == null) { + try { + this.ivjNewMenuItem = new javax.swing.JMenu(); + this.ivjNewMenuItem.setName("NewMenuItem"); + this.ivjNewMenuItem.setText("New"); + this.ivjNewMenuItem.add(this.getJMenuItemNewBioModel()); + this.ivjNewMenuItem.add(this.getMathMenu()); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjNewMenuItem; + } -private javax.swing.JMenuItem getSave_AsLocalMenuItem() { - if (ivjSave_AsLocalMenuItem == null) { - try { - ivjSave_AsLocalMenuItem = new javax.swing.JMenuItem(); - ivjSave_AsLocalMenuItem.setName("Save_AsLocalMenuItem"); - ivjSave_AsLocalMenuItem.setText("Save As Local..."); - ivjSave_AsLocalMenuItem.setEnabled(true); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjSave_AsLocalMenuItem; -} + private javax.swing.JMenuItem getNonSpatialMenuItem() { + if (this.ivjNonSpatialMenuItem == null) { + try { + this.ivjNonSpatialMenuItem = new javax.swing.JMenuItem(); + this.ivjNonSpatialMenuItem.setName("NonSpatialMenuItem"); + this.ivjNonSpatialMenuItem.setText("Non-Spatial"); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjNonSpatialMenuItem; + } -private javax.swing.JMenuItem getSave_VersionMenuItem() { - if (ivjSave_VersionMenuItem == null) { - try { - ivjSave_VersionMenuItem = new javax.swing.JMenuItem(); - ivjSave_VersionMenuItem.setName("Save_VersionMenuItem"); - ivjSave_VersionMenuItem.setText("Save New Version"); - ivjSave_VersionMenuItem.setEnabled(false); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjSave_VersionMenuItem; -} + private javax.swing.JMenu getOpenMenuItem() { + if (this.ivjOpenMenuItem == null) { + try { + this.ivjOpenMenuItem = new javax.swing.JMenu(); + this.ivjOpenMenuItem.setName("OpenMenuItem"); + this.ivjOpenMenuItem.setText("Open"); + this.ivjOpenMenuItem.setEnabled(false); + this.ivjOpenMenuItem.add(this.getJMenuItemOpenBioModel()); + this.ivjOpenMenuItem.add(this.getJMenuItemOpenMathModel()); + this.ivjOpenMenuItem.add(this.getJMenuItemOpenLocal()); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjOpenMenuItem; + } -/** - * Return the SaveMenuItem property value. - * @return javax.swing.JMenuItem - */ -/* WARNING: THIS METHOD WILL BE REGENERATED. */ -private javax.swing.JMenuItem getSaveMenuItem() { - if (ivjSaveMenuItem == null) { - try { - ivjSaveMenuItem = new javax.swing.JMenuItem(); - ivjSaveMenuItem.setName("SaveMenuItem"); - ivjSaveMenuItem.setText("Save"); - ivjSaveMenuItem.setEnabled(false); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjSaveMenuItem; -} -private javax.swing.JMenuItem getPermissionsMenuItem() { - if (jMenuItemPermissions == null) { - try { - jMenuItemPermissions = new javax.swing.JMenuItem(); - jMenuItemPermissions.setText("Permissions..."); - jMenuItemPermissions.setEnabled(false); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return jMenuItemPermissions; -} -private javax.swing.JMenuItem getGrantPermissionsToVCellSupportMenuItem() { - if (jMenuItemGrantPermissionsToVCellSupport == null) { - try { - jMenuItemGrantPermissionsToVCellSupport = new javax.swing.JMenuItem(); - jMenuItemGrantPermissionsToVCellSupport.setText("Grant Permissions To VCell Support..."); - jMenuItemGrantPermissionsToVCellSupport.setEnabled(false); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return jMenuItemGrantPermissionsToVCellSupport; -} + private JMenuItem getRunVFrapItem() { + if (this.ivjRunVFrapMenuItem == null) { + try { + this.ivjRunVFrapMenuItem = new JMenuItem(); + this.ivjRunVFrapMenuItem.setName("RunVFrapMenuItem"); + this.ivjRunVFrapMenuItem.setText("Launch Virtual FRAP"); + } catch (Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjRunVFrapMenuItem; + } -private javax.swing.JMenu getServerMenu() { - if (ivjServerMenu == null) { - try { - ivjServerMenu = new javax.swing.JMenu(); - ivjServerMenu.setName("ServerMenu"); - ivjServerMenu.setText("Account"); - ivjServerMenu.add(getLoginItem()); - ivjServerMenu.add(getLogOutMenuItem()); - ivjServerMenu.add(getManageUserMenuItem()); - ivjServerMenu.add(getChange_ProxyMenuItem()); - ivjServerMenu.add(getReconnectUserMenuItem()); - ivjServerMenu.add(new JSeparator()); - ivjServerMenu.add(getViewJobsMenuItem()); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjServerMenu; -} + private javax.swing.JMenuItem getSave_AsMenuItem() { + if (this.ivjSave_AsMenuItem == null) { + try { + this.ivjSave_AsMenuItem = new javax.swing.JMenuItem(); + this.ivjSave_AsMenuItem.setName("Save_AsMenuItem"); + this.ivjSave_AsMenuItem.setText("Save As..."); + this.ivjSave_AsMenuItem.setEnabled(true); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjSave_AsMenuItem; + } -/** - * Return the SpatialMenuItem property value. - * @return javax.swing.JMenuItem - */ -/* WARNING: THIS METHOD WILL BE REGENERATED. */ -private static final String MATHMODEL_SPATIAL_EXISTING = "Spatial from database geometry"; -private javax.swing.JMenuItem getSpatialExistingMenuItem() { - if (ivjSpatialExistingMenuItem == null) { - try { - ivjSpatialExistingMenuItem = new javax.swing.JMenuItem(); - ivjSpatialExistingMenuItem.setName("SpatialMenuItem"); - ivjSpatialExistingMenuItem.setText(MATHMODEL_SPATIAL_EXISTING); - // user code begin {1} - // user code end - } catch (java.lang.Throwable ivjExc) { - // user code begin {2} - // user code end - handleException(ivjExc); - } - } - return ivjSpatialExistingMenuItem; -} + private javax.swing.JMenuItem getSave_AsLocalMenuItem() { + if (this.ivjSave_AsLocalMenuItem == null) { + try { + this.ivjSave_AsLocalMenuItem = new javax.swing.JMenuItem(); + this.ivjSave_AsLocalMenuItem.setName("Save_AsLocalMenuItem"); + this.ivjSave_AsLocalMenuItem.setText("Save As Local..."); + this.ivjSave_AsLocalMenuItem.setEnabled(true); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjSave_AsLocalMenuItem; + } -private static final String MATHMODEL_SPATIAL_CREATENEW = "Spatial from new geometry"; -private JMenuItem mntmLicenseInformation; -private JSeparator separator; - -private javax.swing.JMenuItem getSpatialCreateNewMenuItem() { - if (ivjSpatialCreateNewMenuItem == null) { - try { - ivjSpatialCreateNewMenuItem = new javax.swing.JMenuItem(); - ivjSpatialCreateNewMenuItem.setName("SpatialMenuItem"); - ivjSpatialCreateNewMenuItem.setText(MATHMODEL_SPATIAL_CREATENEW); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjSpatialCreateNewMenuItem; -} + private javax.swing.JMenuItem getSave_VersionMenuItem() { + if (this.ivjSave_VersionMenuItem == null) { + try { + this.ivjSave_VersionMenuItem = new javax.swing.JMenuItem(); + this.ivjSave_VersionMenuItem.setName("Save_VersionMenuItem"); + this.ivjSave_VersionMenuItem.setText("Save New Version"); + this.ivjSave_VersionMenuItem.setEnabled(false); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjSave_VersionMenuItem; + } -/** - * Return the StatusbarMenuItem property value. - * @return javax.swing.JCheckBoxMenuItem - */ -private javax.swing.JCheckBoxMenuItem getStatusbarMenuItem() { - if (ivjStatusbarMenuItem == null) { - try { - ivjStatusbarMenuItem = new javax.swing.JCheckBoxMenuItem(); - ivjStatusbarMenuItem.setName("StatusbarMenuItem"); - ivjStatusbarMenuItem.setSelected(true); - ivjStatusbarMenuItem.setText("Status Bar"); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjStatusbarMenuItem; -} + /** + * Return the SaveMenuItem property value. + * + * @return javax.swing.JMenuItem + */ + /* WARNING: THIS METHOD WILL BE REGENERATED. */ + private javax.swing.JMenuItem getSaveMenuItem() { + if (this.ivjSaveMenuItem == null) { + try { + this.ivjSaveMenuItem = new javax.swing.JMenuItem(); + this.ivjSaveMenuItem.setName("SaveMenuItem"); + this.ivjSaveMenuItem.setText("Save"); + this.ivjSaveMenuItem.setEnabled(false); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjSaveMenuItem; + } -/** - * Return the StatusBarPane property value. - * @return javax.swing.JPanel - */ -private javax.swing.JPanel getStatusBarPane() { - if (ivjStatusBarPane == null) { - try { - ivjStatusBarPane = new javax.swing.JPanel(); - ivjStatusBarPane.setName("StatusBarPane"); - ivjStatusBarPane.setLayout(new GridBagLayout()); - - int gridx = 0; - GridBagConstraints gbc = new GridBagConstraints(); - gbc.gridx = gridx; - gbc.gridy = 0; - gbc.weighty = 1; - gbc.fill = GridBagConstraints.VERTICAL; - gbc.insets = new Insets(4, 4, 4, 4); - ivjStatusBarPane.add(getJProgressBarConnection(), gbc); - - gridx++; - gbc = new GridBagConstraints(); - gbc.gridx = gridx; - gbc.gridy = 0; - gbc.insets = new Insets(2, 5, 2, 2); - ivjStatusBarPane.add(getIconBar(), gbc); - - gridx++; - gbc = new GridBagConstraints(); - gbc.gridx = gridx; - gbc.gridy = 0; - gbc.weightx = 1; - gbc.fill = GridBagConstraints.HORIZONTAL; - gbc.insets = new Insets(4, 4, 4, 4); - ivjStatusBarPane.add(getWarningBar(), gbc); - - gridx++; - gbc = new GridBagConstraints(); - gbc.gridx = gridx; - gbc.gridy = 0; - gbc.weighty = 1; - gbc.fill = GridBagConstraints.VERTICAL; - gbc.insets = new Insets(4, 4, 4, 4); - ivjStatusBarPane.add(getJProgressBarMemory(), gbc); - - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return ivjStatusBarPane; -} + private javax.swing.JMenuItem getPermissionsMenuItem() { + if (this.jMenuItemPermissions == null) { + try { + this.jMenuItemPermissions = new javax.swing.JMenuItem(); + this.jMenuItemPermissions.setText("Permissions..."); + this.jMenuItemPermissions.setEnabled(false); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.jMenuItemPermissions; + } -public JLabel getWarningBar() { - if (warningText == null) { - try { - warningText = new JLabel(); - warningText.setName(""); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return warningText; -} -public JLabel getIconBar() { - if (iconText == null) { - try { - iconText = new JLabel(); - iconText.setName(""); - iconText.setIcon(VCellIcons.noteRedIcon); - iconText.setToolTipText("View VCell Administrator Notification"); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - } - return iconText; -} + private javax.swing.JMenuItem getGrantPermissionsToVCellSupportMenuItem() { + if (this.jMenuItemGrantPermissionsToVCellSupport == null) { + try { + this.jMenuItemGrantPermissionsToVCellSupport = new javax.swing.JMenuItem(); + this.jMenuItemGrantPermissionsToVCellSupport.setText("Grant Permissions To VCell Support..."); + this.jMenuItemGrantPermissionsToVCellSupport.setEnabled(false); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.jMenuItemGrantPermissionsToVCellSupport; + } -//private static final String notificationsUrl = "//cfs05.cam.uchc.edu/vcell/apache_webroot/htdocs/webstart/VCell_alert/VCell_Alert.html"; -private void checkForNotifications() { - int code = HttpURLConnection.HTTP_BAD_REQUEST; - try { - URL u = new URL(notificationsUrl); - HttpURLConnection huc = (HttpURLConnection)u.openConnection (); - huc.setRequestMethod("HEAD"); // probably cheaper than huc.setRequestMethod ("GET"); - huc.connect(); - code = huc.getResponseCode(); - } catch (IOException e) { - // we just eat the exception + private javax.swing.JMenu getServerMenu() { + if (this.ivjServerMenu == null) { + try { + this.ivjServerMenu = new javax.swing.JMenu(); + this.ivjServerMenu.setName("ServerMenu"); + this.ivjServerMenu.setText("Account"); + this.ivjServerMenu.add(this.getLoginItem()); + this.ivjServerMenu.add(this.getLogOutMenuItem()); + this.ivjServerMenu.add(this.getManageUserMenuItem()); + this.ivjServerMenu.add(this.getChange_ProxyMenuItem()); + this.ivjServerMenu.add(this.getReconnectUserMenuItem()); + this.ivjServerMenu.add(new JSeparator()); + this.ivjServerMenu.add(this.getViewJobsMenuItem()); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjServerMenu; + } + + /** + * Return the SpatialMenuItem property value. + * + * @return javax.swing.JMenuItem + */ + /* WARNING: THIS METHOD WILL BE REGENERATED. */ + private static final String MATHMODEL_SPATIAL_EXISTING = "Spatial from database geometry"; + + private javax.swing.JMenuItem getSpatialExistingMenuItem() { + if (this.ivjSpatialExistingMenuItem == null) { + try { + this.ivjSpatialExistingMenuItem = new javax.swing.JMenuItem(); + this.ivjSpatialExistingMenuItem.setName("SpatialMenuItem"); + this.ivjSpatialExistingMenuItem.setText(MATHMODEL_SPATIAL_EXISTING); + // user code begin {1} + // user code end + } catch (java.lang.Throwable ivjExc) { + // user code begin {2} + // user code end + this.handleException(ivjExc); + } + } + return this.ivjSpatialExistingMenuItem; + } + + private static final String MATHMODEL_SPATIAL_CREATENEW = "Spatial from new geometry"; + private JMenuItem mntmLicenseInformation; + private JSeparator separator; + + private javax.swing.JMenuItem getSpatialCreateNewMenuItem() { + if (this.ivjSpatialCreateNewMenuItem == null) { + try { + this.ivjSpatialCreateNewMenuItem = new javax.swing.JMenuItem(); + this.ivjSpatialCreateNewMenuItem.setName("SpatialMenuItem"); + this.ivjSpatialCreateNewMenuItem.setText(MATHMODEL_SPATIAL_CREATENEW); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjSpatialCreateNewMenuItem; + } + + /** + * Return the StatusbarMenuItem property value. + * + * @return javax.swing.JCheckBoxMenuItem + */ + private javax.swing.JCheckBoxMenuItem getStatusbarMenuItem() { + if (this.ivjStatusbarMenuItem == null) { + try { + this.ivjStatusbarMenuItem = new javax.swing.JCheckBoxMenuItem(); + this.ivjStatusbarMenuItem.setName("StatusbarMenuItem"); + this.ivjStatusbarMenuItem.setSelected(true); + this.ivjStatusbarMenuItem.setText("Status Bar"); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjStatusbarMenuItem; + } + + /** + * Return the StatusBarPane property value. + * + * @return javax.swing.JPanel + */ + private javax.swing.JPanel getStatusBarPane() { + if (this.ivjStatusBarPane == null) { + try { + this.ivjStatusBarPane = new javax.swing.JPanel(); + this.ivjStatusBarPane.setName("StatusBarPane"); + this.ivjStatusBarPane.setLayout(new GridBagLayout()); + + int gridx = 0; + GridBagConstraints gbc = new GridBagConstraints(); + gbc.gridx = gridx; + gbc.gridy = 0; + gbc.weighty = 1; + gbc.fill = GridBagConstraints.VERTICAL; + gbc.insets = new Insets(4, 4, 4, 4); + this.ivjStatusBarPane.add(this.getJProgressBarConnection(), gbc); + + gridx++; + gbc = new GridBagConstraints(); + gbc.gridx = gridx; + gbc.gridy = 0; + gbc.insets = new Insets(2, 5, 2, 2); + this.ivjStatusBarPane.add(this.getIconBar(), gbc); + + gridx++; + gbc = new GridBagConstraints(); + gbc.gridx = gridx; + gbc.gridy = 0; + gbc.weightx = 1; + gbc.fill = GridBagConstraints.HORIZONTAL; + gbc.insets = new Insets(4, 4, 4, 4); + this.ivjStatusBarPane.add(this.getWarningBar(), gbc); + + gridx++; + gbc = new GridBagConstraints(); + gbc.gridx = gridx; + gbc.gridy = 0; + gbc.weighty = 1; + gbc.fill = GridBagConstraints.VERTICAL; + gbc.insets = new Insets(4, 4, 4, 4); + this.ivjStatusBarPane.add(this.getJProgressBarMemory(), gbc); + + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.ivjStatusBarPane; + } + + public JLabel getWarningBar() { + if (this.warningText == null) { + try { + this.warningText = new JLabel(); + this.warningText.setName(""); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.warningText; + } + + public JLabel getIconBar() { + if (this.iconText == null) { + try { + this.iconText = new JLabel(); + this.iconText.setName(""); + this.iconText.setIcon(VCellIcons.noteRedIcon); + this.iconText.setToolTipText("View VCell Administrator Notification"); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + } + return this.iconText; + } + + //private static final String notificationsUrl = "//cfs05.cam.uchc.edu/vcell/apache_webroot/htdocs/webstart/VCell_alert/VCell_Alert.html"; + private void checkForNotifications() { + int code = HttpURLConnection.HTTP_BAD_REQUEST; + try { + URL u = new URL(notificationsUrl); + HttpURLConnection huc = (HttpURLConnection) u.openConnection(); + huc.setRequestMethod("HEAD"); // probably cheaper than huc.setRequestMethod ("GET"); + huc.connect(); + code = huc.getResponseCode(); + } catch (IOException e) { + // we just eat the exception // e.printStackTrace(); - code = HttpURLConnection.HTTP_INTERNAL_ERROR; - } - if(code != HttpURLConnection.HTTP_OK) { - getIconBar().setEnabled(false); - getIconBar().setVisible(false); - } else { - getIconBar().setEnabled(true); - getIconBar().setVisible(true); - - Timer blinkTimer = new Timer(500, new ActionListener() { - private int count = 0; - private int maxCount = 110; // 55 seconds - public void actionPerformed(ActionEvent e) { - if (count >= maxCount) { - getIconBar().setIcon(VCellIcons.noteRedIcon); // must remain on the noteRedIcon - ((Timer) e.getSource()).stop(); - } else { - if(count %2 == 0) { - getIconBar().setIcon(VCellIcons.noteRedIcon); - } else { - getIconBar().setIcon(VCellIcons.noteWhiteIcon); - } - count++; - } - } - }); - blinkTimer.start(); - } -} + code = HttpURLConnection.HTTP_INTERNAL_ERROR; + } + if (code != HttpURLConnection.HTTP_OK) { + this.getIconBar().setEnabled(false); + this.getIconBar().setVisible(false); + } else { + this.getIconBar().setEnabled(true); + this.getIconBar().setVisible(true); + + Timer blinkTimer = new Timer(500, new ActionListener() { + private int count = 0; + private final int maxCount = 110; // 55 seconds + + public void actionPerformed(ActionEvent e) { + if (this.count >= this.maxCount) { + DocumentWindow.this.getIconBar().setIcon(VCellIcons.noteRedIcon); // must remain on the noteRedIcon + ((Timer) e.getSource()).stop(); + } else { + if (this.count % 2 == 0) { + DocumentWindow.this.getIconBar().setIcon(VCellIcons.noteRedIcon); + } else { + DocumentWindow.this.getIconBar().setIcon(VCellIcons.noteWhiteIcon); + } + this.count++; + } + } + }); + blinkTimer.start(); + } + } -private javax.swing.JMenuItem getTestingFrameworkMenuItem() { - if (ivjTestingFrameworkMenuItem == null) { - try { - ivjTestingFrameworkMenuItem = new javax.swing.JMenuItem(); - ivjTestingFrameworkMenuItem.setName("TestingFrameworkMenuItem"); - ivjTestingFrameworkMenuItem.setText("Testing Framework ..."); - // user code begin {1} - // user code end - } catch (java.lang.Throwable ivjExc) { - // user code begin {2} - // user code end - handleException(ivjExc); - } - } - return ivjTestingFrameworkMenuItem; -} + private javax.swing.JMenuItem getTestingFrameworkMenuItem() { + if (this.ivjTestingFrameworkMenuItem == null) { + try { + this.ivjTestingFrameworkMenuItem = new javax.swing.JMenuItem(); + this.ivjTestingFrameworkMenuItem.setName("TestingFrameworkMenuItem"); + this.ivjTestingFrameworkMenuItem.setText("Testing Framework ..."); + // user code begin {1} + // user code end + } catch (java.lang.Throwable ivjExc) { + // user code begin {2} + // user code end + this.handleException(ivjExc); + } + } + return this.ivjTestingFrameworkMenuItem; + } -/** - * Insert the method's description here. - * Creation date: (5/24/2004 3:38:47 PM) - * @return cbit.vcell.client.desktop.TopLevelWindowManager - */ -public TopLevelWindowManager getTopLevelWindowManager() { - return getWindowManager(); -} + /** + * Insert the method's description here. + * Creation date: (5/24/2004 3:38:47 PM) + * + * @return cbit.vcell.client.desktop.TopLevelWindowManager + */ + public TopLevelWindowManager getTopLevelWindowManager() { + return this.getWindowManager(); + } -/** - * Gets the windowManager property (cbit.vcell.client.desktop.DocumentWindowManager) value. - * @return The windowManager property value. - * @see #setWindowManager - */ -private DocumentWindowManager getWindowManager() { - return fieldWindowManager; -} + /** + * Gets the windowManager property (cbit.vcell.client.desktop.DocumentWindowManager) value. + * + * @return The windowManager property value. + * @see #setWindowManager + */ + private DocumentWindowManager getWindowManager() { + return this.fieldWindowManager; + } -/** - * Called whenever the part throws an exception. - * @param exception java.lang.Throwable - */ -private void handleException(java.lang.Throwable exception) { + /** + * Called whenever the part throws an exception. + * + * @param exception java.lang.Throwable + */ + private void handleException(java.lang.Throwable exception) { - /* Uncomment the following lines to print uncaught exceptions to stdout */ - System.out.println("--------- UNCAUGHT EXCEPTION ---------"); - exception.printStackTrace(System.out); -} + /* Uncomment the following lines to print uncaught exceptions to stdout */ + System.out.println("--------- UNCAUGHT EXCEPTION ---------"); + exception.printStackTrace(System.out); + } -private void importExternalDocument() { - getWindowManager().openDocument(VCDocumentType.EXTERNALFILE_DOC); -} + private void importExternalDocument() { + this.getWindowManager().openDocument(VCDocumentType.EXTERNALFILE_DOC); + } -private void importPathway(PathwayImportOption pathwayImportOption) { - getWindowManager().importPathway(pathwayImportOption); -} + private void importPathway(PathwayImportOption pathwayImportOption) { + this.getWindowManager().importPathway(pathwayImportOption); + } -/** - * Initializes connections - * @exception java.lang.Exception The exception description. - */ -/* WARNING: THIS METHOD WILL BE REGENERATED. */ -private void initConnections() throws java.lang.Exception { - // user code begin {1} - // user code end - getAbout_BoxMenuItem().addActionListener(ivjEventHandler); - getStatusbarMenuItem().addItemListener(ivjEventHandler); - getCloseMenuItem().addActionListener(ivjEventHandler); - getExitMenuItem().addActionListener(ivjEventHandler); - getJMenuItemNewBioModel().addActionListener(ivjEventHandler); - getJMenuItemOpenBioModel().addActionListener(ivjEventHandler); - getJMenuItemOpenMathModel().addActionListener(ivjEventHandler); - getJMenuItemOpenLocal().addActionListener(ivjEventHandler); - getSaveMenuItem().addActionListener(ivjEventHandler); - getSave_AsMenuItem().addActionListener(ivjEventHandler); - getSave_AsLocalMenuItem().addActionListener(ivjEventHandler); - getJMenuItemImport().addActionListener(ivjEventHandler); - getSave_VersionMenuItem().addActionListener(ivjEventHandler); - getManageUserMenuItem().addActionListener(ivjEventHandler); - getChange_ProxyMenuItem().addActionListener(ivjEventHandler); - getLogOutMenuItem().addActionListener(ivjEventHandler); - getReconnectUserMenuItem().addActionListener(ivjEventHandler); - getLoginItem().addActionListener(ivjEventHandler); + /** + * Initializes connections + * + * @throws java.lang.Exception The exception description. + */ + /* WARNING: THIS METHOD WILL BE REGENERATED. */ + private void initConnections() throws java.lang.Exception { + // user code begin {1} + // user code end + this.getAbout_BoxMenuItem().addActionListener(this.ivjEventHandler); + this.getStatusbarMenuItem().addItemListener(this.ivjEventHandler); + this.getCloseMenuItem().addActionListener(this.ivjEventHandler); + this.getExitMenuItem().addActionListener(this.ivjEventHandler); + this.getJMenuItemNewBioModel().addActionListener(this.ivjEventHandler); + this.getJMenuItemOpenBioModel().addActionListener(this.ivjEventHandler); + this.getJMenuItemOpenMathModel().addActionListener(this.ivjEventHandler); + this.getJMenuItemOpenLocal().addActionListener(this.ivjEventHandler); + this.getSaveMenuItem().addActionListener(this.ivjEventHandler); + this.getSave_AsMenuItem().addActionListener(this.ivjEventHandler); + this.getSave_AsLocalMenuItem().addActionListener(this.ivjEventHandler); + this.getJMenuItemImport().addActionListener(this.ivjEventHandler); + this.getSave_VersionMenuItem().addActionListener(this.ivjEventHandler); + this.getManageUserMenuItem().addActionListener(this.ivjEventHandler); + this.getChange_ProxyMenuItem().addActionListener(this.ivjEventHandler); + this.getLogOutMenuItem().addActionListener(this.ivjEventHandler); + this.getReconnectUserMenuItem().addActionListener(this.ivjEventHandler); + this.getLoginItem().addActionListener(this.ivjEventHandler); // getImageJServiceMenuItem().addActionListener(ivjEventHandler); - getJMenuItemRevert().addActionListener(ivjEventHandler); - getJMenuItemCompare().addActionListener(ivjEventHandler); - getNonSpatialMenuItem().addActionListener(ivjEventHandler); - getMathFromBioMenuItem().addActionListener(ivjEventHandler); - getSpatialExistingMenuItem().addActionListener(ivjEventHandler); - getSpatialCreateNewMenuItem().addActionListener(ivjEventHandler); - getJMenuItemExport().addActionListener(ivjEventHandler); + this.getJMenuItemRevert().addActionListener(this.ivjEventHandler); + this.getJMenuItemCompare().addActionListener(this.ivjEventHandler); + this.getNonSpatialMenuItem().addActionListener(this.ivjEventHandler); + this.getMathFromBioMenuItem().addActionListener(this.ivjEventHandler); + this.getSpatialExistingMenuItem().addActionListener(this.ivjEventHandler); + this.getSpatialCreateNewMenuItem().addActionListener(this.ivjEventHandler); + this.getJMenuItemExport().addActionListener(this.ivjEventHandler); // getEdit_Annotation_JMenuItem().addActionListener(ivjEventHandler); - getTestingFrameworkMenuItem().addActionListener(ivjEventHandler); - getJMenuItemOnlineHelp().addActionListener(ivjEventHandler); - getJMenuItemOnlineSupport().addActionListener(ivjEventHandler); - getJMenuItemDiscussionGroup().addActionListener(ivjEventHandler); - getJMenuItemManagePermissions().addActionListener(ivjEventHandler); - getJMenuItemOnlinePublish().addActionListener(ivjEventHandler); - getGrantPermissionsToVCellSupportMenuItem().addActionListener(ivjEventHandler); - - getJMenuItemEmailSupport().addActionListener(ivjEventHandler); - getNewHelpMenuItem().addActionListener(ivjEventHandler); + this.getTestingFrameworkMenuItem().addActionListener(this.ivjEventHandler); + this.getJMenuItemOnlineHelp().addActionListener(this.ivjEventHandler); + this.getJMenuItemOnlineSupport().addActionListener(this.ivjEventHandler); + this.getJMenuItemDiscussionGroup().addActionListener(this.ivjEventHandler); + this.getJMenuItemManagePermissions().addActionListener(this.ivjEventHandler); + this.getJMenuItemOnlinePublish().addActionListener(this.ivjEventHandler); + this.getGrantPermissionsToVCellSupportMenuItem().addActionListener(this.ivjEventHandler); + + this.getJMenuItemEmailSupport().addActionListener(this.ivjEventHandler); + this.getNewHelpMenuItem().addActionListener(this.ivjEventHandler); // getRunBNGMenuItem().addActionListener(ivjEventHandler); - getRunVFrapItem().addActionListener(ivjEventHandler); - getTransMAMenuItem().addActionListener(ivjEventHandler); - getViewJobsMenuItem().addActionListener(ivjEventHandler); - getJMenuItemFieldData().addActionListener(ivjEventHandler); - getPermissionsMenuItem().addActionListener(ivjEventHandler); - - getIconBar().addMouseListener(ivjEventHandler); - getExportedDataViewer().addActionListener(ivjEventHandler); -} + this.getRunVFrapItem().addActionListener(this.ivjEventHandler); + this.getTransMAMenuItem().addActionListener(this.ivjEventHandler); + this.getViewJobsMenuItem().addActionListener(this.ivjEventHandler); + this.getJMenuItemFieldData().addActionListener(this.ivjEventHandler); + this.getPermissionsMenuItem().addActionListener(this.ivjEventHandler); + + this.getIconBar().addMouseListener(this.ivjEventHandler); + this.getExportedDataViewer().addActionListener(this.ivjEventHandler); + } -/** - * Initialize the class. - */ -/* WARNING: THIS METHOD WILL BE REGENERATED. */ -private void initialize() { - try { - setName("DocumentWindow"); - setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE); - setIconImage(VCellIcons.getJFrameImageIcon()); - setJMenuBar(getDocumentWindowJMenuBar()); - setSize(460, 536); - setTitle("DocumentWindow"); - getContentPane().add(getStatusBarPane(), BorderLayout.SOUTH); - initConnections(); - checkForNotifications(); - } catch (java.lang.Throwable ivjExc) { - handleException(ivjExc); - } - // user code begin {2} - // user code end -} + /** + * Initialize the class. + */ + /* WARNING: THIS METHOD WILL BE REGENERATED. */ + private void initialize() { + try { + this.setName("DocumentWindow"); + this.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE); + this.setIconImage(VCellIcons.getJFrameImageIcon()); + this.setJMenuBar(this.getDocumentWindowJMenuBar()); + this.setSize(460, 536); + this.setTitle("DocumentWindow"); + this.getContentPane().add(this.getStatusBarPane(), BorderLayout.SOUTH); + this.initConnections(); + this.checkForNotifications(); + } catch (java.lang.Throwable ivjExc) { + this.handleException(ivjExc); + } + // user code begin {2} + // user code end + } -private void invokeOnlineHelp() { + private void invokeOnlineHelp() { - PopupGenerator.browserLauncher(this, DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VCELL_URL), - "Please visit "+ DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VCELL_URL)+" for Online Help"); -} -private void invokeOnlineSupport() { + PopupGenerator.browserLauncher(this, DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VCELL_URL), + "Please visit " + DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VCELL_URL) + " for Online Help"); + } - PopupGenerator.browserLauncher(this, DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_SUPPORT_URL), - "Please visit "+ DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_SUPPORT_URL)+" for Online Support"); -} -private void invokeDiscussionGroup() { + private void invokeOnlineSupport() { - PopupGenerator.browserLauncher(this, DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_GOOGLE_DISCUSS_URL), - "Please visit "+ DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_GOOGLE_DISCUSS_URL)+" for Discussion Group"); -} -private void invokeManagePermissions() { + PopupGenerator.browserLauncher(this, DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_SUPPORT_URL), + "Please visit " + DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_SUPPORT_URL) + " for Online Support"); + } - PopupGenerator.browserLauncher(this, DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_TUT_PERMISSION_URL), - "Please visit "+ DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_TUT_PERMISSION_URL)+" for instructions on how to change permissions to your Model"); -} -private void invokeOnlinePublish() { + private void invokeDiscussionGroup() { - PopupGenerator.browserLauncher(this, DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.ACKNOWLEGE_PUB__WEB_URL), - "Please visit "+ DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.ACKNOWLEGE_PUB__WEB_URL)+" for instructions on how to Publish your Model"); -} + PopupGenerator.browserLauncher(this, DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_GOOGLE_DISCUSS_URL), + "Please visit " + DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_GOOGLE_DISCUSS_URL) + " for Discussion Group"); + } + + private void invokeManagePermissions() { + + PopupGenerator.browserLauncher(this, DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_TUT_PERMISSION_URL), + "Please visit " + DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.VC_TUT_PERMISSION_URL) + " for instructions on how to change permissions to your Model"); + } + + private void invokeOnlinePublish() { + + PopupGenerator.browserLauncher(this, DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.ACKNOWLEGE_PUB__WEB_URL), + "Please visit " + DynamicClientProperties.getDynamicClientProperties().getProperty(PropertyLoader.ACKNOWLEGE_PUB__WEB_URL) + " for instructions on how to Publish your Model"); + } private void newDocument(java.awt.event.ActionEvent actionEvent) { - AsynchClientTask[] taskArray = null; - if (actionEvent.getActionCommand().equals("BioModel")) { - taskArray = getWindowManager().newDocument(new VCDocument.DocumentCreationInfo(VCDocumentType.BIOMODEL_DOC, VCDocument.BIO_OPTION_DEFAULT)); - } else if (actionEvent.getActionCommand().equals("Non-Spatial")) { - taskArray = getWindowManager().newDocument(new VCDocument.DocumentCreationInfo(VCDocumentType.MATHMODEL_DOC, VCDocument.MATH_OPTION_NONSPATIAL)); - } else if (actionEvent.getActionCommand().equals(MATHMODEL_SPATIAL_EXISTING)) { - taskArray = getWindowManager().newDocument(new VCDocument.DocumentCreationInfo(VCDocumentType.MATHMODEL_DOC, VCDocument.MATH_OPTION_SPATIAL_EXISTS)); - } else if (actionEvent.getActionCommand().equals(MATHMODEL_SPATIAL_CREATENEW)) { - getWindowManager().newDocument(new VCDocument.DocumentCreationInfo(VCDocumentType.MATHMODEL_DOC, VCDocument.MATH_OPTION_SPATIAL_NEW)); - return; - } else if (actionEvent.getActionCommand().equals("From BioModel")) { - taskArray = getWindowManager().newDocument(new VCDocument.DocumentCreationInfo(VCDocumentType.MATHMODEL_DOC, VCDocument.MATH_OPTION_FROMBIOMODELAPP)); - }else { - return; - } - Hashtable hash = new Hashtable(); - hash.put(ClientRequestManager.GUI_PARENT, (Component)this); - hash.put("requestManager", getWindowManager().getRequestManager()); - ClientTaskDispatcher.dispatch(this, hash, taskArray, false); -} + AsynchClientTask[] taskArray = null; + if (actionEvent.getActionCommand().equals("BioModel")) { + taskArray = this.getWindowManager().newDocument(new VCDocument.DocumentCreationInfo(VCDocumentType.BIOMODEL_DOC, VCDocument.BIO_OPTION_DEFAULT)); + } else if (actionEvent.getActionCommand().equals("Non-Spatial")) { + taskArray = this.getWindowManager().newDocument(new VCDocument.DocumentCreationInfo(VCDocumentType.MATHMODEL_DOC, VCDocument.MATH_OPTION_NONSPATIAL)); + } else if (actionEvent.getActionCommand().equals(MATHMODEL_SPATIAL_EXISTING)) { + taskArray = this.getWindowManager().newDocument(new VCDocument.DocumentCreationInfo(VCDocumentType.MATHMODEL_DOC, VCDocument.MATH_OPTION_SPATIAL_EXISTS)); + } else if (actionEvent.getActionCommand().equals(MATHMODEL_SPATIAL_CREATENEW)) { + this.getWindowManager().newDocument(new VCDocument.DocumentCreationInfo(VCDocumentType.MATHMODEL_DOC, VCDocument.MATH_OPTION_SPATIAL_NEW)); + return; + } else if (actionEvent.getActionCommand().equals("From BioModel")) { + taskArray = this.getWindowManager().newDocument(new VCDocument.DocumentCreationInfo(VCDocumentType.MATHMODEL_DOC, VCDocument.MATH_OPTION_FROMBIOMODELAPP)); + } else { + return; + } + Hashtable hash = new Hashtable(); + hash.put(ClientRequestManager.GUI_PARENT, this); + hash.put("requestManager", this.getWindowManager().getRequestManager()); + ClientTaskDispatcher.dispatch(this, hash, taskArray, false); + } -private void openDocument(java.awt.event.ActionEvent actionEvent) { - if (actionEvent.getActionCommand().equals("BioModel...")) { - getWindowManager().openDocument(VCDocumentType.BIOMODEL_DOC); - } else if (actionEvent.getActionCommand().equals("MathModel...")) { - getWindowManager().openDocument(VCDocumentType.MATHMODEL_DOC); - } else if (actionEvent.getActionCommand().equals("Geometry...")) { - getWindowManager().openDocument(VCDocumentType.GEOMETRY_DOC); - } -} + private void openDocument(java.awt.event.ActionEvent actionEvent) { + if (actionEvent.getActionCommand().equals("BioModel...")) { + this.getWindowManager().openDocument(VCDocumentType.BIOMODEL_DOC); + } else if (actionEvent.getActionCommand().equals("MathModel...")) { + this.getWindowManager().openDocument(VCDocumentType.MATHMODEL_DOC); + } else if (actionEvent.getActionCommand().equals("Geometry...")) { + this.getWindowManager().openDocument(VCDocumentType.GEOMETRY_DOC); + } + } -private void login(){ - Hashtable hash = new Hashtable(); - VCellConnectionFactory vcellConnectionFactory = VCellClientMain.injector.getInstance(VCellConnectionFactory.class); - - String host = VCellClientMain.injector.getInstance(Key.get(String.class, Names.named(DependencyConstants.VCELL_API_HOST))); - String port; - String pathPrefix; - try{ - port = VCellClientMain.injector.getInstance(Key.get(String.class, Names.named(DependencyConstants.VCELL_API_PORT))); - } - catch (ConfigurationException e){ - port = "443"; - } - try { - pathPrefix = VCellClientMain.injector.getInstance(Key.get(String.class, Names.named(DependencyConstants.VCELL_API_PATH_PREFIX_V0))); - } - catch (ConfigurationException e){ - pathPrefix = ""; - } - - AsynchClientTask task1a = ClientLogin.popupLogin(false); - AsynchClientTask task1b = ClientLogin.loginWithAuth0(vcellConnectionFactory.getAuth0ConnectionUtils()); - AsynchClientTask task2 = ClientLogin.connectToServer(vcellConnectionFactory.getAuth0ConnectionUtils(), - ClientServerInfo.createRemoteServerInfo(host, Integer.parseInt(port), pathPrefix, null)); - - AsynchClientTask[] taskArray = new AsynchClientTask[] { task1a, task1b, task2}; - ClientTaskDispatcher.dispatch(null, hash, taskArray); -} + private void login() { + Hashtable hash = new Hashtable(); + VCellConnectionFactory vcellConnectionFactory = VCellClientMain.injector.getInstance(VCellConnectionFactory.class); + + String host = VCellClientMain.injector.getInstance(Key.get(String.class, Names.named(DependencyConstants.VCELL_API_HOST))); + String port; + String pathPrefix; + try { + port = VCellClientMain.injector.getInstance(Key.get(String.class, Names.named(DependencyConstants.VCELL_API_PORT))); + } catch (ConfigurationException e) { + port = "443"; + } + try { + pathPrefix = VCellClientMain.injector.getInstance(Key.get(String.class, Names.named(DependencyConstants.VCELL_API_PATH_PREFIX_V0))); + } catch (ConfigurationException e) { + pathPrefix = ""; + } + AsynchClientTask task1a = ClientLogin.popupLogin(false); + AsynchClientTask task1b = ClientLogin.loginWithAuth0(vcellConnectionFactory.getAuth0ConnectionUtils()); + AsynchClientTask task2 = ClientLogin.connectToServer(vcellConnectionFactory.getAuth0ConnectionUtils(), + ClientServerInfo.createRemoteServerInfo(host, Integer.parseInt(port), pathPrefix, null)); -private void reconnect() { - getWindowManager().reconnect(); -} + AsynchClientTask[] taskArray = new AsynchClientTask[]{task1a, task1b, task2}; + ClientTaskDispatcher.dispatch(null, hash, taskArray); + } -private void saveDocument(boolean replace) { - getWindowManager().saveDocument(replace); -} + private void reconnect() { + this.getWindowManager().reconnect(); + } -private void saveAsLocal(){ - getWindowManager().exportDocument(FileFilters.FILE_FILTER_VCML); -} + private void saveDocument(boolean replace) { + this.getWindowManager().saveDocument(replace); + } -/** - * Sets the windowManager property (cbit.vcell.client.desktop.DocumentWindowManager) value. - * @param windowManager The new value for the property. - * @see #getWindowManager - */ -public void setWindowManager(DocumentWindowManager windowManager) { - if (fieldWindowManager == windowManager) { - return; - } - DocumentWindowManager oldValue = fieldWindowManager; - fieldWindowManager = windowManager; - firePropertyChange("windowManager", oldValue, windowManager);//May 2009,found it doesn't fire to any where. -} + private void saveAsLocal() { + this.getWindowManager().exportDocument(FileFilters.FILE_FILTER_VCML); + } + /** + * Sets the windowManager property (cbit.vcell.client.desktop.DocumentWindowManager) value. + * + * @param windowManager The new value for the property. + * @see #getWindowManager + */ + public void setWindowManager(DocumentWindowManager windowManager) { + if (this.fieldWindowManager == windowManager) { + return; + } + DocumentWindowManager oldValue = this.fieldWindowManager; + this.fieldWindowManager = windowManager; + this.firePropertyChange("windowManager", oldValue, windowManager);//May 2009,found it doesn't fire to any where. -public void setWorkArea(Component c) { - getContentPane().add(c, BorderLayout.CENTER); -} + } -public static void showAboutBox(Component parent) { - String version = ""; - String build = ""; - try { - version = "Version " + DocumentWindowAboutBox.getVERSION_NO(); - build = DocumentWindowAboutBox.getEDITION() + " edition, build no. " + DocumentWindowAboutBox.getBUILD_NO(); - } catch (Exception exc) { - System.out.println("Failed to parse vcell.softwareVersion: " + exc.getMessage()); - exc.printStackTrace(System.out); - } - /* Create the AboutBox dialog */ - DocumentWindowAboutBox aDocumentWindowAboutBox = new DocumentWindowAboutBox(version,build); - DialogUtils.showComponentCloseDialog(parent, aDocumentWindowAboutBox, "About VCell"); -} + public void setWorkArea(Component c) { + this.getContentPane().add(c, BorderLayout.CENTER); + } + + + public static void showAboutBox(Component parent) { + String version = ""; + String build = ""; + try { + version = "Version " + DocumentWindowAboutBox.getVERSION_NO(); + build = DocumentWindowAboutBox.getEDITION() + " edition, build no. " + DocumentWindowAboutBox.getBUILD_NO(); + } catch (Exception exc) { + System.out.println("Failed to parse vcell.softwareVersion: " + exc.getMessage()); + exc.printStackTrace(System.out); + } + /* Create the AboutBox dialog */ + DocumentWindowAboutBox aDocumentWindowAboutBox = new DocumentWindowAboutBox(version, build); + DialogUtils.showComponentCloseDialog(parent, aDocumentWindowAboutBox, "About VCell"); + } private void showEditAnnotationWindow() { - try { - if (getWindowManager() != null) { - VCDocument vcDoc = getWindowManager().getVCDocument(); - if (vcDoc != null) { - try{ - // initialize fields - different for biomodel and mathmodel, geometry - String oldAnnotation = null; - if (vcDoc instanceof BioModel) { - oldAnnotation = ((BioModel)vcDoc).getVCMetaData().getFreeTextAnnotation((BioModel)vcDoc); - } else { - oldAnnotation = vcDoc.getDescription(); - } - // show the editor - String newAnnotation = DialogUtils.showAnnotationDialog(this, oldAnnotation); - if (org.vcell.util.BeanUtils.triggersPropertyChangeEvent(oldAnnotation, newAnnotation)) { - // if VCDocument is a Biomodel, set the vcMetadata, else edit VCDoc.description for now - if (vcDoc instanceof BioModel) { - // update free text annotation in VCMetaData - VCMetaData vcMetaData = ((BioModel)vcDoc).getVCMetaData(); - vcMetaData.setFreeTextAnnotation((BioModel)vcDoc, newAnnotation); - } else { - // Update VCDocument annotation - vcDoc.setDescription(newAnnotation); - } - } - }catch(UtilCancelException e){ - //Do Nothing - } - }else{ - throw new Exception("No Document to Edit"); - } - } - } catch (Throwable exc) { - exc.printStackTrace(System.out); - PopupGenerator.showErrorDialog(this, "Failed to edit annotation!\n"+exc.getMessage(), exc); - } -} + try { + if (this.getWindowManager() != null) { + VCDocument vcDoc = this.getWindowManager().getVCDocument(); + if (vcDoc != null) { + try { + // initialize fields - different for biomodel and mathmodel, geometry + String oldAnnotation = null; + if (vcDoc instanceof BioModel) { + oldAnnotation = ((BioModel) vcDoc).getVCMetaData().getFreeTextAnnotation((BioModel) vcDoc); + } else { + oldAnnotation = vcDoc.getDescription(); + } + // show the editor + String newAnnotation = DialogUtils.showAnnotationDialog(this, oldAnnotation); + if (org.vcell.util.BeanUtils.triggersPropertyChangeEvent(oldAnnotation, newAnnotation)) { + // if VCDocument is a Biomodel, set the vcMetadata, else edit VCDoc.description for now + if (vcDoc instanceof BioModel) { + // update free text annotation in VCMetaData + VCMetaData vcMetaData = ((BioModel) vcDoc).getVCMetaData(); + vcMetaData.setFreeTextAnnotation((BioModel) vcDoc, newAnnotation); + } else { + // Update VCDocument annotation + vcDoc.setDescription(newAnnotation); + } + } + } catch (UtilCancelException e) { + //Do Nothing + } + } else { + throw new Exception("No Document to Edit"); + } + } + } catch (Throwable exc) { + exc.printStackTrace(System.out); + PopupGenerator.showErrorDialog(this, "Failed to edit annotation!\n" + exc.getMessage(), exc); + } + } -private void showTestingFrameworkWindow() { - getWindowManager().showTestingFrameworkWindow(); -} + private void showTestingFrameworkWindow() { + this.getWindowManager().showTestingFrameworkWindow(); + } -private void enableOpenMenuItems(boolean bEnableServerOps){ - getOpenMenuItem().setEnabled(true); - getJMenuItemOpenBioModel().setEnabled(bEnableServerOps); - getJMenuItemOpenMathModel().setEnabled(bEnableServerOps); - getJMenuItemOpenLocal().setEnabled(true); -} -/** - * Insert the method's description here. - * Creation date: (5/10/2004 4:32:17 PM) - */ -public void updateConnectionStatus(ConnectionStatus connStatus) { - - // other updates - String status = ""; - User user = getWindowManager().getUser(); - boolean isTestUser = (user!=null)?(user.isTestAccount()):(false); - switch (connStatus.getStatus()) { - case ConnectionStatus.NOT_CONNECTED: { - status = ""; - getJProgressBarConnection().setString("NOT CONNECTED"); - getJProgressBarConnection().setValue(0); - getManageUserMenuItem().setEnabled(false); - getLoginItem().setEnabled(true); - getLogOutMenuItem().setEnabled(false); - getReconnectUserMenuItem().setEnabled(false); - getViewJobsMenuItem().setEnabled(false); - - enableOpenMenuItems(false); - - getSaveMenuItem().setEnabled(false); - getSave_AsMenuItem().setEnabled(false); - getSave_AsLocalMenuItem().setEnabled(true); - getSave_VersionMenuItem().setEnabled(false); - getJMenuItemRevert().setEnabled(false); - getJMenuItemCompare().setEnabled(false); - //getJMenuItemServer().setEnabled(true); - getTestingFrameworkMenuItem().setVisible(isTestUser); - getTestingFrameworkMenuItem().setEnabled(false); - getJMenuItemFieldData().setEnabled(false); - getPermissionsMenuItem().setEnabled(false); - getGrantPermissionsToVCellSupportMenuItem().setEnabled(false); - checkForReconnecting(connStatus); - break; - } - case ConnectionStatus.CONNECTED: { - status = "Server: " + connStatus.getApihost()+":"+connStatus.getApiport() + " User: " + connStatus.getUserName(); - getJProgressBarConnection().setString("CONNECTED (" + connStatus.getUserName() + ")"); - getJProgressBarConnection().setValue(100); - getManageUserMenuItem().setEnabled(true); - getLoginItem().setEnabled(false); - getLogOutMenuItem().setEnabled(true); - getReconnectUserMenuItem().setEnabled(true); - getViewJobsMenuItem().setEnabled(true); - - enableOpenMenuItems(true); - - boolean bVersionedDocument = getWindowManager() != null && getWindowManager().getVCDocument() != null - && getWindowManager().getVCDocument().getVersion() != null; - getSaveMenuItem().setEnabled( - bVersionedDocument && !( - getWindowManager().getVCDocument().getVersion().getFlag().compareEqual(VersionFlag.Archived) || - getWindowManager().getVCDocument().getVersion().getFlag().compareEqual(VersionFlag.Published) - ) - ); - getSave_AsMenuItem().setEnabled(true); - getSave_AsLocalMenuItem().setEnabled(true); - getSave_VersionMenuItem().setEnabled(bVersionedDocument); - getJMenuItemRevert().setEnabled(bVersionedDocument); - getJMenuItemCompare().setEnabled(bVersionedDocument); - //getJMenuItemServer().setEnabled(true); - getTestingFrameworkMenuItem().setVisible(isTestUser); - getTestingFrameworkMenuItem().setEnabled(true); - getJMenuItemFieldData().setEnabled(true); + private void enableOpenMenuItems(boolean bEnableServerOps) { + this.getOpenMenuItem().setEnabled(true); + this.getJMenuItemOpenBioModel().setEnabled(bEnableServerOps); + this.getJMenuItemOpenMathModel().setEnabled(bEnableServerOps); + this.getJMenuItemOpenLocal().setEnabled(true); + } + + /** + * Insert the method's description here. + * Creation date: (5/10/2004 4:32:17 PM) + */ + public void updateConnectionStatus(ConnectionStatus connStatus) { + + // other updates + String status = ""; + User user = this.getWindowManager().getUser(); + boolean isTestUser = user != null && (user.isTestAccount()); + switch (connStatus.getStatus()) { + case ConnectionStatus.NOT_CONNECTED: { + status = ""; + this.getJProgressBarConnection().setString("NOT CONNECTED"); + this.getJProgressBarConnection().setValue(0); + this.getManageUserMenuItem().setEnabled(false); + this.getLoginItem().setEnabled(true); + this.getLogOutMenuItem().setEnabled(false); + this.getReconnectUserMenuItem().setEnabled(false); + this.getViewJobsMenuItem().setEnabled(false); + + this.enableOpenMenuItems(false); + + this.getSaveMenuItem().setEnabled(false); + this.getSave_AsMenuItem().setEnabled(false); + this.getSave_AsLocalMenuItem().setEnabled(true); + this.getSave_VersionMenuItem().setEnabled(false); + this.getJMenuItemRevert().setEnabled(false); + this.getJMenuItemCompare().setEnabled(false); + //getJMenuItemServer().setEnabled(true); + this.getTestingFrameworkMenuItem().setVisible(isTestUser); + this.getTestingFrameworkMenuItem().setEnabled(false); + this.getJMenuItemFieldData().setEnabled(false); + this.getPermissionsMenuItem().setEnabled(false); + this.getGrantPermissionsToVCellSupportMenuItem().setEnabled(false); + this.checkForReconnecting(connStatus); + break; + } + case ConnectionStatus.CONNECTED: { + status = "Server: " + connStatus.getApihost() + ":" + connStatus.getApiport() + " User: " + connStatus.getUserName(); + this.getJProgressBarConnection().setString("CONNECTED (" + connStatus.getUserName() + ")"); + this.getJProgressBarConnection().setValue(100); + this.getManageUserMenuItem().setEnabled(true); + this.getLoginItem().setEnabled(false); + this.getLogOutMenuItem().setEnabled(true); + this.getReconnectUserMenuItem().setEnabled(true); + this.getViewJobsMenuItem().setEnabled(true); + + this.enableOpenMenuItems(true); + + boolean bVersionedDocument = this.getWindowManager() != null && this.getWindowManager().getVCDocument() != null + && this.getWindowManager().getVCDocument().getVersion() != null; + this.getSaveMenuItem().setEnabled( + bVersionedDocument && !( + this.getWindowManager().getVCDocument().getVersion().getFlag().compareEqual(VersionFlag.Archived) || + this.getWindowManager().getVCDocument().getVersion().getFlag().compareEqual(VersionFlag.Published) + ) + ); + this.getSave_AsMenuItem().setEnabled(true); + this.getSave_AsLocalMenuItem().setEnabled(true); + this.getSave_VersionMenuItem().setEnabled(bVersionedDocument); + this.getJMenuItemRevert().setEnabled(bVersionedDocument); + this.getJMenuItemCompare().setEnabled(bVersionedDocument); + //getJMenuItemServer().setEnabled(true); + this.getTestingFrameworkMenuItem().setVisible(isTestUser); + this.getTestingFrameworkMenuItem().setEnabled(true); + this.getJMenuItemFieldData().setEnabled(true); // getJMenuItemMIRIAM().setEnabled(true); - getJMenuItemPreferences().setEnabled(true); - getTransMAMenuItem().setEnabled( - getWindowManager() != null && - getWindowManager().getVCDocument() != null && - getWindowManager().getVCDocument() instanceof BioModel - ); - getViewJobsMenuItem().setEnabled(true); - //getJMenuImportPathway().setEnabled(getWindowManager().getVCDocument() instanceof BioModel); - getPermissionsMenuItem().setEnabled(bVersionedDocument && getWindowManager().getVCDocument().getVersion().getOwner().equals(getWindowManager().getUser())); - getGrantPermissionsToVCellSupportMenuItem().setEnabled(bVersionedDocument && getWindowManager().getVCDocument().getVersion().getOwner().equals(getWindowManager().getUser())); - break; - } - case ConnectionStatus.INITIALIZING: { - status = "Server: " + connStatus.getApihost()+":"+connStatus.getApiport() + " User: " + connStatus.getUserName(); - getJProgressBarConnection().setString("INITIALIZING..."); - getJProgressBarConnection().setValue(0); - getManageUserMenuItem().setEnabled(false); - getLoginItem().setEnabled(false); - getLogOutMenuItem().setEnabled(false); - getReconnectUserMenuItem().setEnabled(false); - enableOpenMenuItems(false); - getSave_AsLocalMenuItem().setEnabled(true); - getSaveMenuItem().setEnabled(false); - getSave_AsMenuItem().setEnabled(false); - getSave_AsLocalMenuItem().setEnabled(true); - getSave_VersionMenuItem().setEnabled(false); - getJMenuItemRevert().setEnabled(false); - getJMenuItemCompare().setEnabled(false); - //getJMenuItemServer().setEnabled(false); - getTestingFrameworkMenuItem().setVisible(isTestUser); - getTestingFrameworkMenuItem().setEnabled(isTestUser); - getJMenuItemFieldData().setEnabled(false); + this.getJMenuItemPreferences().setEnabled(true); + this.getTransMAMenuItem().setEnabled( + this.getWindowManager() != null && + this.getWindowManager().getVCDocument() != null && + this.getWindowManager().getVCDocument() instanceof BioModel + ); + this.getViewJobsMenuItem().setEnabled(true); + //getJMenuImportPathway().setEnabled(getWindowManager().getVCDocument() instanceof BioModel); + this.getPermissionsMenuItem().setEnabled(bVersionedDocument && this.getWindowManager().getVCDocument().getVersion().getOwner().equals(this.getWindowManager().getUser())); + this.getGrantPermissionsToVCellSupportMenuItem().setEnabled(bVersionedDocument && this.getWindowManager().getVCDocument().getVersion().getOwner().equals(this.getWindowManager().getUser())); + break; + } + case ConnectionStatus.INITIALIZING: { + status = "Server: " + connStatus.getApihost() + ":" + connStatus.getApiport() + " User: " + connStatus.getUserName(); + this.getJProgressBarConnection().setString("INITIALIZING..."); + this.getJProgressBarConnection().setValue(0); + this.getManageUserMenuItem().setEnabled(false); + this.getLoginItem().setEnabled(false); + this.getLogOutMenuItem().setEnabled(false); + this.getReconnectUserMenuItem().setEnabled(false); + this.enableOpenMenuItems(false); + this.getSave_AsLocalMenuItem().setEnabled(true); + this.getSaveMenuItem().setEnabled(false); + this.getSave_AsMenuItem().setEnabled(false); + this.getSave_AsLocalMenuItem().setEnabled(true); + this.getSave_VersionMenuItem().setEnabled(false); + this.getJMenuItemRevert().setEnabled(false); + this.getJMenuItemCompare().setEnabled(false); + //getJMenuItemServer().setEnabled(false); + this.getTestingFrameworkMenuItem().setVisible(isTestUser); + this.getTestingFrameworkMenuItem().setEnabled(isTestUser); + this.getJMenuItemFieldData().setEnabled(false); // getJMenuItemMIRIAM().setEnabled(false); - getJMenuItemPreferences().setEnabled(false); - getPermissionsMenuItem().setEnabled(false); - getGrantPermissionsToVCellSupportMenuItem().setEnabled(false); - break; - } - case ConnectionStatus.DISCONNECTED: { - status = "Server: " + connStatus.getApihost()+":"+connStatus.getApiport() + " User: " + connStatus.getUserName(); - getJProgressBarConnection().setString("DISCONNECTED"); - getJProgressBarConnection().setValue(0); - getManageUserMenuItem().setEnabled(false); - getLoginItem().setEnabled(false); - getLogOutMenuItem().setEnabled(false); - getReconnectUserMenuItem().setEnabled(true); - enableOpenMenuItems(false); - getSave_AsLocalMenuItem().setEnabled(true); - getSaveMenuItem().setEnabled(false); - getSave_AsMenuItem().setEnabled(false); - getSave_VersionMenuItem().setEnabled(false); - getJMenuItemRevert().setEnabled(false); - getJMenuItemCompare().setEnabled(false); - //getJMenuItemServer().setEnabled(true); - getTestingFrameworkMenuItem().setVisible(isTestUser); - getTestingFrameworkMenuItem().setEnabled(false); - getJMenuItemFieldData().setEnabled(false); + this.getJMenuItemPreferences().setEnabled(false); + this.getPermissionsMenuItem().setEnabled(false); + this.getGrantPermissionsToVCellSupportMenuItem().setEnabled(false); + break; + } + case ConnectionStatus.DISCONNECTED: { + status = "Server: " + connStatus.getApihost() + ":" + connStatus.getApiport() + " User: " + connStatus.getUserName(); + this.getJProgressBarConnection().setString("DISCONNECTED"); + this.getJProgressBarConnection().setValue(0); + this.getManageUserMenuItem().setEnabled(false); + this.getLoginItem().setEnabled(false); + this.getLogOutMenuItem().setEnabled(false); + this.getReconnectUserMenuItem().setEnabled(true); + this.enableOpenMenuItems(false); + this.getSave_AsLocalMenuItem().setEnabled(true); + this.getSaveMenuItem().setEnabled(false); + this.getSave_AsMenuItem().setEnabled(false); + this.getSave_VersionMenuItem().setEnabled(false); + this.getJMenuItemRevert().setEnabled(false); + this.getJMenuItemCompare().setEnabled(false); + //getJMenuItemServer().setEnabled(true); + this.getTestingFrameworkMenuItem().setVisible(isTestUser); + this.getTestingFrameworkMenuItem().setEnabled(false); + this.getJMenuItemFieldData().setEnabled(false); // getJMenuItemMIRIAM().setEnabled(false); - getJMenuItemPreferences().setEnabled(false); - getPermissionsMenuItem().setEnabled(false); - getGrantPermissionsToVCellSupportMenuItem().setEnabled(false); - checkForReconnecting(connStatus); - break; - } - } - getJProgressBarConnection().setToolTipText(status); -} + this.getJMenuItemPreferences().setEnabled(false); + this.getPermissionsMenuItem().setEnabled(false); + this.getGrantPermissionsToVCellSupportMenuItem().setEnabled(false); + this.checkForReconnecting(connStatus); + break; + } + } + this.getJProgressBarConnection().setToolTipText(status); + } -private void checkForReconnecting(ConnectionStatus connStatus) { - Reconnector rc = connStatus.getReconnector(); - if (rc.isActive()) { - rc.addListener(this); - } -} + private void checkForReconnecting(ConnectionStatus connStatus) { + Reconnector rc = connStatus.getReconnector(); + if (rc.isActive()) { + rc.addListener(this); + } + } -@Override -public void refactorCountdown(long seconds) { - if (seconds > 0) { - getJProgressBarConnection().setString("RECONNECT in " + seconds-- + " s"); - } -} + @Override + public void refactorCountdown(long seconds) { + if (seconds > 0) { + this.getJProgressBarConnection().setString("RECONNECT in " + seconds-- + " s"); + } + } -/** - * Insert the method's description here. - * Creation date: (5/7/2004 11:51:20 AM) - */ -public void updateMemoryStatus(long freeBytes, long totalBytes) { - DecimalFormat df = (DecimalFormat)DecimalFormat.getInstance(); - df.setMaximumFractionDigits(1); - String usedMB = df.format((totalBytes - freeBytes)/1000000.0); - String totalMB = df.format(totalBytes/1000000.0); - getJProgressBarMemory().setValue((int)(100 * (totalBytes - freeBytes) / totalBytes)); - getJProgressBarMemory().setString(usedMB + "MB / " + totalMB + "MB"); -} + /** + * Insert the method's description here. + * Creation date: (5/7/2004 11:51:20 AM) + */ + public void updateMemoryStatus(long freeBytes, long totalBytes) { + DecimalFormat df = (DecimalFormat) DecimalFormat.getInstance(); + df.setMaximumFractionDigits(1); + String usedMB = df.format((totalBytes - freeBytes) / 1000000.0); + String totalMB = df.format(totalBytes / 1000000.0); + this.getJProgressBarMemory().setValue((int) (100 * (totalBytes - freeBytes) / totalBytes)); + this.getJProgressBarMemory().setString(usedMB + "MB / " + totalMB + "MB"); + } -/** - * Insert the method's description here. - * Creation date: (5/10/2004 4:32:17 PM) - */ -public void updateWhileInitializing(int i) { - // extra animation while initializing connection - getJProgressBarConnection().setValue(i); -} + /** + * Insert the method's description here. + * Creation date: (5/10/2004 4:32:17 PM) + */ + public void updateWhileInitializing(int i) { + // extra animation while initializing connection + this.getJProgressBarConnection().setValue(i); + } -private JMenuItem getJMenuItemPreferences() { - if (jMenuItemPreferences == null) { - jMenuItemPreferences = new JMenuItem(); - jMenuItemPreferences.setText("VCell Properties ..."); - jMenuItemPreferences.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent e) { - getTopLevelWindowManager().showPreferencesWindow(); - } - }); - } - return jMenuItemPreferences; -} + private JMenuItem getJMenuItemPreferences() { + if (this.jMenuItemPreferences == null) { + this.jMenuItemPreferences = new JMenuItem(); + this.jMenuItemPreferences.setText("VCell Properties ..."); + this.jMenuItemPreferences.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent e) { + DocumentWindow.this.getTopLevelWindowManager().showPreferencesWindow(); + } + }); + } + return this.jMenuItemPreferences; + } -public void showTransMADialog() -{ - String disclaimer = "Transforming reactions to stochastic capable cannot be undone. You may want to make a copy of the model.\nAlso some existing applications may need to be recreated in order to maintain consistency.\nLast but not least, stochastic transfomation may not be mathematically equivalent to the orignal model. \nDo you wish to proceed?"; - JTextArea ta = new JTextArea(disclaimer); - ta.setEditable(false); - int userChoice = PopupGenerator.showComponentOKCancelDialog(this, ta, "Model Transformation Warning"); - if(userChoice != JOptionPane.OK_OPTION) { - return; - } - BioModel biomodel = null; - if (getWindowManager().getVCDocument() instanceof BioModel) { - biomodel = (BioModel)getWindowManager().getVCDocument(); - } - TransformMassActionPanel transMAPanel = new TransformMassActionPanel(); - TransformMassActions transformMassActions = new TransformMassActions(); - - Hashtable hashTable = new Hashtable<> (); - hashTable.put("biomodel", biomodel); - hashTable.put("window", this); - - ProgressDialog progressDialog = new LinearDefiniteProgressDialog(this); - - AsynchClientTask task1 = new AsynchClientTask("transform", AsynchClientTask.TASKTYPE_NONSWING_BLOCKING) { - @Override - public void run(Hashtable hashTable) throws Exception { - BioModel biomodel = (BioModel)hashTable.get("biomodel"); - if(biomodel == null) { - throw new RuntimeException("Biomodel cannot be null"); - } - try { - transMAPanel.setModel(biomodel.getModel()); - ReactionStep[] origReactions = biomodel.getModel().getReactionSteps(); - transformMassActions.initializeTransformation(origReactions); - for (int i = 0; i < origReactions.length; i++) { - progressDialog.setProgress(i * 100 / origReactions.length); - TransformedReaction[] transReactionSteps = transformMassActions.getTransformedReactionSteps(); - boolean[] isTransformable = transformMassActions.getIsTransformable(); - - transReactionSteps[i] = transformMassActions.transformOne(origReactions[i]); // here all the work is done - if (transReactionSteps[i].getTransformType() == TransformedReaction.TRANSFORMABLE) { - isTransformable[i] = true; - } else { - isTransformable[i] = false; - } - } - progressDialog.setProgress(100); - transMAPanel.setTransformation(transformMassActions); - } catch(Throwable e) { - System.out.println(e.getMessage()); - } - System.out.println("done"); - } - }; - - AsynchClientTask task2 = new AsynchClientTask("starting exporting", AsynchClientTask.TASKTYPE_SWING_NONBLOCKING) { - @Override - public void run(Hashtable hashTable) throws Exception { - // if we hit Cancel on the ProgressDialog, this task won't get executed - Component requester = (Component)hashTable.get("window"); - int choice = DialogUtils.showComponentOKCancelDialog(requester, transMAPanel, "Transform to Stochastic Capable Model"); - if(choice == JOptionPane.OK_OPTION) { - try { - transMAPanel.saveTransformedReactions(); - } catch(Exception e) { - PopupGenerator.showWarningDialog(getTopLevelWindowManager(), null, new UserMessage(e.getMessage(), new String[]{"Ok"},"Ok"), null); - } - } - } - }; - - AsynchClientTask[] tasks = new AsynchClientTask[] { task1, task2 }; - boolean bShowProgressPopup = true; - boolean bKnowProgress = true; - boolean cancelable = true; - boolean bInputBlocking = false; // default: false - ClientTaskDispatcher.dispatch(this, hashTable, tasks, progressDialog, - bShowProgressPopup, bKnowProgress, cancelable, null, bInputBlocking, - ClientTaskDispatcher.StopStrategy.THREAD_KILL); -} + public void showTransMADialog() { + String disclaimer = "Transforming reactions to stochastic capable cannot be undone. You may want to make a copy of the model.\nAlso some existing applications may need to be recreated in order to maintain consistency.\nLast but not least, stochastic transfomation may not be mathematically equivalent to the orignal model. \nDo you wish to proceed?"; + JTextArea ta = new JTextArea(disclaimer); + ta.setEditable(false); + int userChoice = PopupGenerator.showComponentOKCancelDialog(this, ta, "Model Transformation Warning"); + if (userChoice != JOptionPane.OK_OPTION) { + return; + } + BioModel biomodel = null; + if (this.getWindowManager().getVCDocument() instanceof BioModel) { + biomodel = (BioModel) this.getWindowManager().getVCDocument(); + } + TransformMassActionPanel transMAPanel = new TransformMassActionPanel(); + TransformMassActions transformMassActions = new TransformMassActions(); + + Hashtable hashTable = new Hashtable<>(); + hashTable.put("biomodel", biomodel); + hashTable.put("window", this); + + ProgressDialog progressDialog = new LinearDefiniteProgressDialog(this); + + AsynchClientTask task1 = new AsynchClientTask("transform", AsynchClientTask.TASKTYPE_NONSWING_BLOCKING) { + @Override + public void run(Hashtable hashTable) throws Exception { + BioModel biomodel = (BioModel) hashTable.get("biomodel"); + if (biomodel == null) { + throw new RuntimeException("Biomodel cannot be null"); + } + try { + transMAPanel.setModel(biomodel.getModel()); + ReactionStep[] origReactions = biomodel.getModel().getReactionSteps(); + transformMassActions.initializeTransformation(origReactions); + for (int i = 0; i < origReactions.length; i++) { + progressDialog.setProgress(i * 100 / origReactions.length); + TransformedReaction[] transReactionSteps = transformMassActions.getTransformedReactionSteps(); + boolean[] isTransformable = transformMassActions.getIsTransformable(); + + transReactionSteps[i] = transformMassActions.transformOne(origReactions[i]); // here all the work is done + isTransformable[i] = transReactionSteps[i].getTransformType() == TransformedReaction.TRANSFORMABLE; + } + progressDialog.setProgress(100); + transMAPanel.setTransformation(transformMassActions); + } catch (Throwable e) { + System.out.println(e.getMessage()); + } + System.out.println("done"); + } + }; + + AsynchClientTask task2 = new AsynchClientTask("starting exporting", AsynchClientTask.TASKTYPE_SWING_NONBLOCKING) { + @Override + public void run(Hashtable hashTable) throws Exception { + // if we hit Cancel on the ProgressDialog, this task won't get executed + Component requester = (Component) hashTable.get("window"); + int choice = DialogUtils.showComponentOKCancelDialog(requester, transMAPanel, "Transform to Stochastic Capable Model"); + if (choice == JOptionPane.OK_OPTION) { + try { + transMAPanel.saveTransformedReactions(); + } catch (Exception e) { + PopupGenerator.showWarningDialog(DocumentWindow.this.getTopLevelWindowManager(), null, new UserMessage(e.getMessage(), new String[]{"Ok"}, "Ok"), null); + } + } + } + }; + + AsynchClientTask[] tasks = new AsynchClientTask[]{task1, task2}; + boolean bShowProgressPopup = true; + boolean bKnowProgress = true; + boolean cancelable = true; + boolean bInputBlocking = false; // default: false + ClientTaskDispatcher.dispatch(this, hashTable, tasks, progressDialog, + bShowProgressPopup, bKnowProgress, cancelable, null, bInputBlocking, + ClientTaskDispatcher.StopStrategy.THREAD_KILL); + } -public void showViewJobsDialog() { - System.out.println("ViewJobs menu item pressed."); - // https://vcellapi.cam.uchc.edu/simtask?submitLow=&submitHigh=&startRow=1&maxRows=100&serverId=&computeHost+value%3D=&simId=&jobId=&taskId=&hasData=all&queued=on&dispatched=on&running=on - DocumentWindowManager dwm = getWindowManager(); - ViewJobsPanel panel = new ViewJobsPanel(dwm); - panel.setPreferredSize(new Dimension(1000,600)); + public void showViewJobsDialog() { + System.out.println("ViewJobs menu item pressed."); + // https://vcellapi.cam.uchc.edu/simtask?submitLow=&submitHigh=&startRow=1&maxRows=100&serverId=&computeHost+value%3D=&simId=&jobId=&taskId=&hasData=all&queued=on&dispatched=on&running=on + DocumentWindowManager dwm = this.getWindowManager(); + ViewJobsPanel panel = new ViewJobsPanel(dwm); + panel.setPreferredSize(new Dimension(1000, 600)); - if(viewSpeciesDialog != null) { // uncomment these 3 lines to allow only one instance of the dialog - viewSpeciesDialog.dispose(); - } + if (this.viewSpeciesDialog != null) { // uncomment these 3 lines to allow only one instance of the dialog + this.viewSpeciesDialog.dispose(); + } - JOptionPane pane = new JOptionPane(panel, JOptionPane.PLAIN_MESSAGE, 0, null, new Object[] {"Close"}); - viewSpeciesDialog = pane.createDialog(this, "View Simulation Jobs Status"); - viewSpeciesDialog.setModal(false); - viewSpeciesDialog.setResizable(true); - viewSpeciesDialog.setVisible(true); + JOptionPane pane = new JOptionPane(panel, JOptionPane.PLAIN_MESSAGE, 0, null, new Object[]{"Close"}); + this.viewSpeciesDialog = pane.createDialog(this, "View Simulation Jobs Status"); + this.viewSpeciesDialog.setModal(false); + this.viewSpeciesDialog.setResizable(true); + this.viewSpeciesDialog.setVisible(true); // ClientRequestManager.idToNameConversion(getWindowManager().getVCDocument()); -} + } -public void showViewExportedDataDialog() { - DocumentWindowManager dwm = getWindowManager(); - ExportedDataViewer exportedDataViewer = new ExportedDataViewer(); - exportedDataViewer.setPreferredSize(new Dimension(1030, 590)); + public void showViewExportedDataDialog() { + DocumentWindowManager dwm = this.getWindowManager(); + ExportedDataViewer exportedDataViewer = new ExportedDataViewer(); + exportedDataViewer.setPreferredSize(new Dimension(1030, 590)); - if(viewSpeciesDialog != null) { // uncomment these 3 lines to allow only one instance of the dialog - viewSpeciesDialog.dispose(); - } + if (this.viewSpeciesDialog != null) { // uncomment these 3 lines to allow only one instance of the dialog + this.viewSpeciesDialog.dispose(); + } - JOptionPane pane = new JOptionPane(exportedDataViewer, JOptionPane.PLAIN_MESSAGE, 0, null, new Object[] {"Close"}); - viewSpeciesDialog = pane.createDialog(this, "View Exported Data"); - viewSpeciesDialog.setModal(false); - viewSpeciesDialog.setResizable(true); - viewSpeciesDialog.setVisible(true); -} + JOptionPane pane = new JOptionPane(exportedDataViewer, JOptionPane.PLAIN_MESSAGE, 0, null, new Object[]{"Close"}); + this.viewSpeciesDialog = pane.createDialog(this, "View Exported Data"); + this.viewSpeciesDialog.setModal(false); + this.viewSpeciesDialog.setResizable(true); + this.viewSpeciesDialog.setVisible(true); + } - private JMenuItem getMntmLicenseInformation() { - if (mntmLicenseInformation == null) { - mntmLicenseInformation = new JMenuItem("VCell License Information"); - mntmLicenseInformation.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent arg0) { - Integer year = 2013; - try{ - int tempYear = Integer.parseInt((new SimpleDateFormat("yyyy")).format(Calendar.getInstance().getTime())); - if(tempYear > year && tempYear < 2100){//sanity check - year = tempYear; - } - }catch(Exception e){ - e.printStackTrace(); - } - final String OK = "OK"; - final String SAVE_LICENSE = "Save VCell license"; - final String SAVE_THIRD_PARTY = "Save third party licenses"; - String licenseStr = - "The Virtual Cell is free software distributed under the following MIT licensing terms:\n\n"+ - "Copyright (c) 1998-"+year+" University of Connecticut Health Center\n\n" + - "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\n" + - "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n"+ - "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n"; - - if (OperatingSystemInfo.getInstance().isWindows()) { - licenseStr += "The Virtual Cell Windows Edition is licensed under the GNU General Public License Version 3\n\n"; - } - - String result = DialogUtils.showWarningDialog(DocumentWindow.this, "VCell Licensing Information", licenseStr, new String[] {OK,SAVE_THIRD_PARTY,SAVE_LICENSE,}, OK); - if(result != null && (result.equals(SAVE_THIRD_PARTY) || result.equals(SAVE_LICENSE))){ - JFileChooser saveLicenseJFC = new JFileChooser(); - int returnVal = saveLicenseJFC.showSaveDialog(DocumentWindow.this); - if(returnVal == JFileChooser.APPROVE_OPTION) { - File outFile = saveLicenseJFC.getSelectedFile(); - try{ - if(result.equals(SAVE_THIRD_PARTY)){ - ResourceUtil.writeResourceToFile("/"+System.getProperty(PropertyLoader.vcellThirdPartyLicense), outFile); - }else if (result.equals(SAVE_LICENSE)){ - XmlUtil.writeXMLStringToFile(licenseStr, outFile.getAbsolutePath(), false); - } - }catch(Exception e){ - e.printStackTrace(); - DialogUtils.showErrorDialog(DocumentWindow.this, "Error saving license info: "+e.getMessage()); - } - } - } - } - }); - } - return mntmLicenseInformation; - } - private JSeparator getSeparator() { - if (separator == null) { - separator = new JSeparator(); - } - return separator; - } + private JMenuItem getMntmLicenseInformation() { + if (this.mntmLicenseInformation == null) { + this.mntmLicenseInformation = new JMenuItem("VCell License Information"); + this.mntmLicenseInformation.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent arg0) { + Integer year = 2013; + try { + int tempYear = Integer.parseInt((new SimpleDateFormat("yyyy")).format(Calendar.getInstance().getTime())); + if (tempYear > year && tempYear < 2100) {//sanity check + year = tempYear; + } + } catch (Exception e) { + e.printStackTrace(); + } + final String OK = "OK"; + final String SAVE_LICENSE = "Save VCell license"; + final String SAVE_THIRD_PARTY = "Save third party licenses"; + String licenseStr = + "The Virtual Cell is free software distributed under the following MIT licensing terms:\n\n" + + "Copyright (c) 1998-" + year + " University of Connecticut Health Center\n\n" + + "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\n" + + "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n" + + "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n"; + + if (OperatingSystemInfo.getInstance().isWindows()) { + licenseStr += "The Virtual Cell Windows Edition is licensed under the GNU General Public License Version 3\n\n"; + } + + String result = DialogUtils.showWarningDialog(DocumentWindow.this, "VCell Licensing Information", licenseStr, new String[]{OK, SAVE_THIRD_PARTY, SAVE_LICENSE,}, OK); + if (result != null && (result.equals(SAVE_THIRD_PARTY) || result.equals(SAVE_LICENSE))) { + JFileChooser saveLicenseJFC = new JFileChooser(); + int returnVal = saveLicenseJFC.showSaveDialog(DocumentWindow.this); + if (returnVal == JFileChooser.APPROVE_OPTION) { + File outFile = saveLicenseJFC.getSelectedFile(); + try { + if (result.equals(SAVE_THIRD_PARTY)) { + ResourceUtil.writeResourceToFile("/" + System.getProperty(PropertyLoader.vcellThirdPartyLicense), outFile); + } else if (result.equals(SAVE_LICENSE)) { + XmlUtil.writeXMLStringToFile(licenseStr, outFile.getAbsolutePath(), false); + } + } catch (Exception e) { + e.printStackTrace(); + DialogUtils.showErrorDialog(DocumentWindow.this, "Error saving license info: " + e.getMessage()); + } + } + } + } + }); + } + return this.mntmLicenseInformation; + } - public ChildWindowManager getChildWindowManager() { - return childWindowManager; - } + private JSeparator getSeparator() { + if (this.separator == null) { + this.separator = new JSeparator(); + } + return this.separator; + } + + public ChildWindowManager getChildWindowManager() { + return this.childWindowManager; + } } From 4db71e4f6ef511949f93b29adb47488955f31edf Mon Sep 17 00:00:00 2001 From: Dan Vasilescu Date: Wed, 3 Jul 2024 16:28:54 -0400 Subject: [PATCH 12/21] AnnotationsPanel: Fix multiple null pointer exceptions --- .../desktop/biomodel/AnnotationsPanel.java | 15 +++- .../annotations/AddAnnotationsPanel.java | 90 +++++++++++++++---- 2 files changed, 85 insertions(+), 20 deletions(-) diff --git a/vcell-client/src/main/java/cbit/vcell/client/desktop/biomodel/AnnotationsPanel.java b/vcell-client/src/main/java/cbit/vcell/client/desktop/biomodel/AnnotationsPanel.java index 70032f8be3..c5f5a9cc20 100644 --- a/vcell-client/src/main/java/cbit/vcell/client/desktop/biomodel/AnnotationsPanel.java +++ b/vcell-client/src/main/java/cbit/vcell/client/desktop/biomodel/AnnotationsPanel.java @@ -146,8 +146,8 @@ public void actionPerformed(ActionEvent evt) { addIdentifier(); } else if(evt.getSource() == getJButtonSearchRef()) { initializeAddAnnotationsPanel(); - } else if(evt.getSource() == addAnnotationsPanel.getOkButton()) { - annotationTextArea.setText("A test from the void"); + } else if(addAnnotationsPanel != null && evt.getSource() == addAnnotationsPanel.getOkButton()) { + annotationTextArea.setText(""); } else if(evt.getSource() == getJButtonDeleteRef()) { removeIdentifier(); } else if(evt.getSource() == getJButtonRemoveText()) { @@ -728,7 +728,7 @@ private void showBrowseToLink(LinkNode linkNode) { DialogUtils.showWarningDialog(this, "No Web-site link available"); } } - private void showBrowseToLink(VCMetaDataDataType md) { + public void showBrowseToLink(VCMetaDataDataType md) { String link = md.getDataTypeURL(); if (link != null) { DialogUtils.browserLauncher(getJComboBoxURI(), link, "Failed to launch"); @@ -761,7 +761,8 @@ private void initialize() { initializeComboBoxQualifier(); initializeComboBoxURI(); - getJTreeMIRIAM().addTreeSelectionListener(new TreeSelectionListener() { + JTree miriamTree = getJTreeMIRIAM(); + miriamTree.addTreeSelectionListener(new TreeSelectionListener() { public void valueChanged(TreeSelectionEvent e) { TreePath tp = ((JTree)e.getSource()).getSelectionPath(); if(tp == null) { @@ -1033,6 +1034,9 @@ else if (uri.toString().contains("GO")) id = uri.getPath().replace("/obo/GO_",""); else if (uri.toString().contains("ncit")) id = uri.toString().replace("https://ncit.nci.nih.gov/ncitbrowser/ConceptReport.jsp?dictionary=NCI_Thesaurus&ns=ncit&code=",""); + + // TODO: links are not working, and links with UBERON are giving error + // TODO: links need to point to the same database as in purl else if (uri.toString().contains("PATO")) id = uri.getPath().replace("/obo/PATO_",""); else if (uri.toString().contains("PR")) @@ -1114,6 +1118,9 @@ private void initializeComboBoxURI() { List tooltips = new ArrayList<> (); List dataTypeList = new ArrayList<>(); if(entity == null) { + if(bioModel == null || vcMetaData == null) { + return; // called way too early, will be again called later + } for (DataType dt : vcMetaData.getMiriamManager().getAllDataTypes().values()) { dataTypeList.add(dt); } diff --git a/vcell-client/src/main/java/cbit/vcell/client/desktop/biomodel/annotations/AddAnnotationsPanel.java b/vcell-client/src/main/java/cbit/vcell/client/desktop/biomodel/annotations/AddAnnotationsPanel.java index 416bf93620..455be75b13 100644 --- a/vcell-client/src/main/java/cbit/vcell/client/desktop/biomodel/annotations/AddAnnotationsPanel.java +++ b/vcell-client/src/main/java/cbit/vcell/client/desktop/biomodel/annotations/AddAnnotationsPanel.java @@ -11,15 +11,21 @@ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.io.IOException; import java.net.URISyntaxException; +import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.StringTokenizer; import static cbit.vcell.biomodel.meta.VCMetaDataMiriamManager.VCMetaDataDataType.DataType_UNIPROT; public class AddAnnotationsPanel extends JFrame implements ActionListener { + public static final int MAX_DESCRIPTION_LENGTH = 160; + private JButton searchButton; private JTextField searchBar; private JTextField organismSearchField = new JTextField(20); @@ -140,9 +146,10 @@ private void addSearchPanelComponents(JPanel topPanel) { VCMetaDataMiriamManager.VCMetaDataDataType mdt = (VCMetaDataMiriamManager.VCMetaDataDataType)jComboBoxURI.getSelectedItem(); topPanel.setLayout(new GridBagLayout()); + int gridy = 0; GridBagConstraints sGbc = new GridBagConstraints(); //adding select ontology Label - sGbc.gridy = 0; + sGbc.gridy = gridy; sGbc.gridx = 0; sGbc.insets = new Insets(0,0,10,0); sGbc.anchor = GridBagConstraints.WEST; @@ -151,12 +158,31 @@ private void addSearchPanelComponents(JPanel topPanel) { sGbc = new GridBagConstraints(); sGbc.insets = new Insets(3, 5, 3, 4); - sGbc.gridy = 0; + sGbc.gridy = gridy; sGbc.gridx = 1; sGbc.insets = new Insets(0,10,10,20); sGbc.anchor = GridBagConstraints.WEST; topPanel.add(new JLabel("" + mdt.getDataTypeName() + ""), sGbc); + JLabel linkLabel = new JLabel(); + String s = "" + "URL : " + " " + mdt.getDataTypeURL() + "  " + ""; + linkLabel.setToolTipText("Double-click to open link"); + linkLabel.setText(s); + linkLabel.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + if(e.getClickCount() == 2) { + annotationsPanel.showBrowseToLink(mdt); + } + } + }); + sGbc = new GridBagConstraints(); + sGbc.insets = new Insets(3, 5, 3, 4); + sGbc.gridy = gridy; + sGbc.gridx = 2; + sGbc.insets = new Insets(0,10,10,20); + sGbc.anchor = GridBagConstraints.WEST; + topPanel.add(linkLabel, sGbc); + // sGbc = new GridBagConstraints(); // sGbc.gridy = 0; // sGbc.gridx = 1; @@ -171,48 +197,80 @@ private void addSearchPanelComponents(JPanel topPanel) { // topPanel.add(jComboBoxURI, sGbc); // ontologies combobox sGbc = new GridBagConstraints(); - sGbc.gridy = 0; - sGbc.gridx = 2; + sGbc.gridy = gridy; + sGbc.gridx = 3; sGbc.weightx = 1; topPanel.add(new javax.swing.JLabel(""), sGbc); // empty filler // ---------- second row ----------------------------------------------------------------- +// gridy++; + List rows = new ArrayList<>(); + String value = mdt.getDescription(); + StringTokenizer tokenizer = new StringTokenizer(value, " "); + String row = ""; + while(tokenizer.hasMoreTokens()) { + String word = tokenizer.nextToken(); + if((row.length() + word.length()) > MAX_DESCRIPTION_LENGTH) { + rows.add(row); + row = word + " "; + } else { + row += word + " "; + } + } + if(!row.isEmpty()) { + rows.add(row); + } + for(String currentRow : rows) { + gridy++; + sGbc = new GridBagConstraints(); + sGbc.insets = new Insets(2, 4, 4, 0); + sGbc.gridx = 0; + sGbc.gridy = gridy; + sGbc.gridwidth = 8; + sGbc.fill = GridBagConstraints.HORIZONTAL; + sGbc.weightx = 1.0; + topPanel.add(new JLabel(currentRow), sGbc); + } + + // ---------- next row ------------------------------------------------------------------- + gridy++; sGbc = new GridBagConstraints(); - sGbc.gridy = 1; + sGbc.gridy = gridy; sGbc.gridx = 0; sGbc.anchor = GridBagConstraints.WEST; - sGbc.insets = new Insets(0,0,10,0); + sGbc.insets = new Insets(9,0,10,0); JLabel searchLabel = new JLabel("Search term:"); // search label topPanel.add(searchLabel, sGbc); sGbc = new GridBagConstraints(); - sGbc.gridy = 1; + sGbc.gridy = gridy; sGbc.gridx = 1; sGbc.anchor = GridBagConstraints.WEST; - sGbc.insets = new Insets(0,10,10,0); + sGbc.insets = new Insets(9,10,10,0); containsBox = new JComboBox<>(); // contains/exact Jcombobox containsBox.addItem("contains"); containsBox.addItem("exact"); topPanel.add(containsBox, sGbc); sGbc = new GridBagConstraints(); - sGbc.gridy = 1; + sGbc.gridy = gridy; sGbc.fill = GridBagConstraints.HORIZONTAL; sGbc.gridx = 2; sGbc.weightx = 1; sGbc.gridwidth = 3; sGbc.anchor = GridBagConstraints.WEST; - sGbc.insets = new Insets(0,20,10,0); + sGbc.insets = new Insets(9,20,10,0); // searchBar = new JTextField(25); // searchBar = new JTextField(15); // leftPanel.add(searchBar, sGbc); topPanel.add(getSearchComponentsPanel(), sGbc); // the searchComponentsPanel - // --------- third row ------------------------------------------------------------------- + // --------- next row ------------------------------------------------------------------- + gridy++; sGbc.fill = GridBagConstraints.NONE; sGbc.anchor = GridBagConstraints.WEST; sGbc.gridwidth = 1; - sGbc.gridy = 2; + sGbc.gridy = gridy; sGbc.gridx = 0; sGbc.insets = new Insets(0,0,0,10); JLabel limitLabel = new JLabel("Limit to"); // limit label @@ -221,7 +279,7 @@ private void addSearchPanelComponents(JPanel topPanel) { //adding limit JComboBox sGbc.fill = GridBagConstraints.HORIZONTAL; sGbc.anchor = GridBagConstraints.WEST; - sGbc.gridy = 2; + sGbc.gridy = gridy; sGbc.gridx = 1; sGbc.insets = new Insets(0,10,0,10); limitBox = new JComboBox<>(); @@ -233,20 +291,20 @@ private void addSearchPanelComponents(JPanel topPanel) { //adding limit term label sGbc.fill = GridBagConstraints.NONE; sGbc.anchor = GridBagConstraints.WEST; - sGbc.gridy = 2; + sGbc.gridy = gridy; sGbc.gridx = 2; sGbc.insets = new Insets(0,0,0,20); JLabel elementLabel = new JLabel("elements"); topPanel.add(elementLabel, sGbc); sGbc = new GridBagConstraints(); - sGbc.gridy = 2; + sGbc.gridy = gridy; sGbc.gridx = 3; sGbc.weightx = 1; topPanel.add(new javax.swing.JLabel(""), sGbc); // empty filler sGbc.anchor = GridBagConstraints.EAST; - sGbc.gridy = 2; + sGbc.gridy = gridy; sGbc.gridx = 4; sGbc.insets = new Insets(0,10,0,0); searchButton = new JButton("Search"); // the Search button From 2ad60303cf75d24f9979a1fbb5406803c840ef5f Mon Sep 17 00:00:00 2001 From: Logan Drescher Date: Fri, 5 Jul 2024 10:43:47 -0400 Subject: [PATCH 13/21] Progress on updating help --- .../topics/ch_1/Introduction/General.xml | 69 +++++++++++-------- .../topics/ch_1/Introduction/New.xml | 2 +- 2 files changed, 43 insertions(+), 28 deletions(-) diff --git a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/General.xml b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/General.xml index 02ebb41e84..4ed26e03e2 100644 --- a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/General.xml +++ b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/General.xml @@ -1,31 +1,46 @@ - - - -The Virtual Cell Software provides 2 environments for defining computational models. -BioModels and MathModels allow the user to create models using the tool that best suits their experience. -A BioModel consists of a model description (Physiology), and one or more Applications generated using a graphical interface to define model elements. -A MathModel is a document defined using the VCell Markup Language (VCML) and is created using VCML 'code'. -BioModel -The BioModel Physiology -includes what is known about the biological system in terms of cellular structures, species and biochemical reactions. - -Each BioModel Application -allows the user to define the quantitative conditions needed to define, run and visualize a Virtual Experiment, i.e. numerical simulation. Thus, an Application includes the Geometry, the Specifications (species, -reactions), Protocols (events, electrical mapping), Simulations and Parameter Estimation (if applicable). - -A single BioModel may have numerous -Applications, in which geometries and/or parameters have been changed. Each -Application, in turn can have multiple Simulations, in which different numerical -methods or conditions are used. - -MathModel -MathModels define Virtual Experiments using VCell Markup Language. - - - - - + + + + VCell provides two styles of developing computational models: + + BioModels + MathModels + + Each uses a different methodology of model creation that best suits a given user's experience. + + BioModel + A BioModel is a computational model defined and built through defining biological concepts within + a graphical interface. + + BioModels consist of: + + a model's biological system, including cellular structures, species and biochemical reactions ("Physiology") + one or more sets of constraints and conditions imposed on the model ("Application") + + + Each Application + allows the user to define the quantitative values needed to define, run and visualize a Virtual + Experiment (i.e. numerical simulation). Thus, an Application includes: + + Geometry + Specifications (e.g. species, reactions) + Protocols (e.g. events, electrical mapping) + one or more Simulations + Parameter Estimation (if applicable) + + + MathModel + MathModels define Virtual Experiments using the Virtual Cell Markup Language (VCML). + A MathModel consists of: + + + + + + + + \ No newline at end of file diff --git a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/New.xml b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/New.xml index b34c8ef4ce..06ebde9daf 100644 --- a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/New.xml +++ b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/New.xml @@ -3,7 +3,7 @@ - This section describes the File->New menu option. The New menu option allows the user to create a new VCell document - biomodel, mathmodel or a geometry document. + The File->New menu option allows the user to create a new VCell document - biomodel, mathmodel. From 3453b3f35290d1b446d6929e31a3b99ed86f1f28 Mon Sep 17 00:00:00 2001 From: Logan Drescher Date: Fri, 5 Jul 2024 14:26:42 -0400 Subject: [PATCH 14/21] Streamlined menu-based login process, and improved messages to users --- .../vcell/client/ClientRequestManager.java | 17 ++++- .../vcell/client/desktop/DocumentWindow.java | 31 +++++++-- .../java/cbit/vcell/desktop/ClientLogin.java | 68 +++++++++++++------ 3 files changed, 90 insertions(+), 26 deletions(-) diff --git a/vcell-client/src/main/java/cbit/vcell/client/ClientRequestManager.java b/vcell-client/src/main/java/cbit/vcell/client/ClientRequestManager.java index fd540b0a2f..afe25ede2d 100644 --- a/vcell-client/src/main/java/cbit/vcell/client/ClientRequestManager.java +++ b/vcell-client/src/main/java/cbit/vcell/client/ClientRequestManager.java @@ -658,8 +658,21 @@ public void connectToServer(TopLevelWindowManager requester, ClientServerInfo cl public void logOut(final TopLevelWindowManager requester){ JDialog dialog = new JDialog(); dialog.setAlwaysOnTop(true); - int confirm = JOptionPane.showOptionDialog(dialog, "You are about to logout of VCell, and in doing so close the app. " + - "To complete this process you'll be redirected to a logout page. Do you want to continue?", + StringBuilder dialogMessage = new StringBuilder(); + dialogMessage.append("You are about to log out of the VCell client.\n\n"); + if (requester instanceof DocumentWindowManager documentWindowManager){ + if(!User.isGuest(documentWindowManager.getUser().getName())){ + dialogMessage.append(""" + Because VCell uses a browser-based login, + you'll be redirected to a logout page to + complete the logout process there. + + """); + } + } + dialogMessage.append("Do you wish to continue?"); + + int confirm = JOptionPane.showOptionDialog(dialog, dialogMessage.toString(), "Logout", JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE, null, new String[] { "Continue", "Cancel" }, "Continue"); if (confirm == JOptionPane.OK_OPTION) { diff --git a/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java b/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java index a372407ab4..5a1c11e3c0 100644 --- a/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java +++ b/vcell-client/src/main/java/cbit/vcell/client/desktop/DocumentWindow.java @@ -77,6 +77,7 @@ public class DocumentWindow extends LWTopFrame implements TopLevelWindow, Reconn private JMenuItem ivjAbout_BoxMenuItem = null; private JMenuItem ivjManageUser = null; private JMenuItem loginMenuItem = null; + private JMenuItem loginAsGuestMenuItem = null; private JMenuItem ivjLogoutUser = null; private JMenuItem ivjCloseMenuItem = null; private JMenuBar ivjDocumentWindowJMenuBar = null; @@ -213,8 +214,9 @@ else if (e.getSource() == DocumentWindow.this.menuItemImportPathwayExample) DocumentWindow.this.emailSupport(e); if (e.getSource() == DocumentWindow.this.getNewHelpMenuItem()) DocumentWindow.this.showVCellHelpWindow(); - if (e.getSource() == DocumentWindow.this.getLogOutMenuItem()) + if (e.getSource() == DocumentWindow.this.getLogOutMenuItem()){ DocumentWindow.this.getWindowManager().getRequestManager().logOut(DocumentWindow.this.getWindowManager()); + } if (e.getSource() == DocumentWindow.this.getRunVFrapItem()) DocumentWindow.this.startVirtualFRAP(); if (e.getSource() == DocumentWindow.this.getTransMAMenuItem()) @@ -229,7 +231,10 @@ else if (e.getSource() == DocumentWindow.this.menuItemImportPathwayExample) } } if (e.getSource() == DocumentWindow.this.getLoginItem()) { - DocumentWindow.this.login(); + DocumentWindow.this.login(false); + } + if (e.getSource() == DocumentWindow.this.getLoginAsGuestItem()) { + DocumentWindow.this.login(true); } if (e.getSource() == DocumentWindow.this.getPermissionsMenuItem()) { DocumentWindow.this.getWindowManager().getRequestManager().accessPermissions(DocumentWindow.this, DocumentWindow.this.getWindowManager().getVCDocument()); @@ -463,6 +468,16 @@ private JMenuItem getLoginItem() { return this.loginMenuItem; } + private JMenuItem getLoginAsGuestItem() { + if (this.loginAsGuestMenuItem == null) { + this.loginAsGuestMenuItem = new javax.swing.JMenuItem(); + this.loginAsGuestMenuItem.setName("LoginAsGuestMenuItem"); + this.loginAsGuestMenuItem.setText("Login as Guest"); + this.loginAsGuestMenuItem.setEnabled(false); + } + return this.loginAsGuestMenuItem; + } + private JMenuItem getManageUserMenuItem() { if (this.ivjManageUser == null) { this.ivjManageUser = new javax.swing.JMenuItem(); @@ -1082,6 +1097,7 @@ private javax.swing.JMenu getServerMenu() { this.ivjServerMenu.setName("ServerMenu"); this.ivjServerMenu.setText("Account"); this.ivjServerMenu.add(this.getLoginItem()); + this.ivjServerMenu.add(this.getLoginAsGuestItem()); this.ivjServerMenu.add(this.getLogOutMenuItem()); this.ivjServerMenu.add(this.getManageUserMenuItem()); this.ivjServerMenu.add(this.getChange_ProxyMenuItem()); @@ -1364,6 +1380,7 @@ private void initConnections() throws java.lang.Exception { this.getLogOutMenuItem().addActionListener(this.ivjEventHandler); this.getReconnectUserMenuItem().addActionListener(this.ivjEventHandler); this.getLoginItem().addActionListener(this.ivjEventHandler); + this.getLoginAsGuestItem().addActionListener(this.ivjEventHandler); // getImageJServiceMenuItem().addActionListener(ivjEventHandler); this.getJMenuItemRevert().addActionListener(this.ivjEventHandler); this.getJMenuItemCompare().addActionListener(this.ivjEventHandler); @@ -1480,7 +1497,7 @@ private void openDocument(java.awt.event.ActionEvent actionEvent) { } } - private void login() { + private void login(boolean asGuest) { Hashtable hash = new Hashtable(); VCellConnectionFactory vcellConnectionFactory = VCellClientMain.injector.getInstance(VCellConnectionFactory.class); @@ -1498,7 +1515,9 @@ private void login() { pathPrefix = ""; } - AsynchClientTask task1a = ClientLogin.popupLogin(false); + ClientLogin.LoginOptions loginType = asGuest ? + ClientLogin.LoginOptions.GUEST_LOGIN : ClientLogin.LoginOptions.STANDARD_LOGIN; + AsynchClientTask task1a = ClientLogin.popupLogin(loginType); AsynchClientTask task1b = ClientLogin.loginWithAuth0(vcellConnectionFactory.getAuth0ConnectionUtils()); AsynchClientTask task2 = ClientLogin.connectToServer(vcellConnectionFactory.getAuth0ConnectionUtils(), ClientServerInfo.createRemoteServerInfo(host, Integer.parseInt(port), pathPrefix, null)); @@ -1630,6 +1649,7 @@ public void updateConnectionStatus(ConnectionStatus connStatus) { this.getJProgressBarConnection().setValue(0); this.getManageUserMenuItem().setEnabled(false); this.getLoginItem().setEnabled(true); + this.getLoginAsGuestItem().setEnabled(true); this.getLogOutMenuItem().setEnabled(false); this.getReconnectUserMenuItem().setEnabled(false); this.getViewJobsMenuItem().setEnabled(false); @@ -1657,6 +1677,7 @@ public void updateConnectionStatus(ConnectionStatus connStatus) { this.getJProgressBarConnection().setValue(100); this.getManageUserMenuItem().setEnabled(true); this.getLoginItem().setEnabled(false); + this.getLoginAsGuestItem().setEnabled(false); this.getLogOutMenuItem().setEnabled(true); this.getReconnectUserMenuItem().setEnabled(true); this.getViewJobsMenuItem().setEnabled(true); @@ -1699,6 +1720,7 @@ public void updateConnectionStatus(ConnectionStatus connStatus) { this.getJProgressBarConnection().setValue(0); this.getManageUserMenuItem().setEnabled(false); this.getLoginItem().setEnabled(false); + this.getLoginAsGuestItem().setEnabled(false); this.getLogOutMenuItem().setEnabled(false); this.getReconnectUserMenuItem().setEnabled(false); this.enableOpenMenuItems(false); @@ -1725,6 +1747,7 @@ public void updateConnectionStatus(ConnectionStatus connStatus) { this.getJProgressBarConnection().setValue(0); this.getManageUserMenuItem().setEnabled(false); this.getLoginItem().setEnabled(false); + this.getLoginAsGuestItem().setEnabled(false); this.getLogOutMenuItem().setEnabled(false); this.getReconnectUserMenuItem().setEnabled(true); this.enableOpenMenuItems(false); diff --git a/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java b/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java index 6d1efcc9df..37312d9c66 100644 --- a/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java +++ b/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java @@ -11,50 +11,78 @@ import com.google.inject.name.Names; import org.vcell.DependencyConstants; import org.vcell.util.document.User; +import org.vcell.util.gui.VCellIcons; import javax.swing.*; import java.util.Hashtable; public class ClientLogin { + public enum LoginOptions { + FULL_DIALOG, + STANDARD_LOGIN, + GUEST_LOGIN + } + - public static int showFullLoginPanel(){ - int answer = JOptionPane.showOptionDialog(null, - "VCell is going to redirect you to your browser to login. Do you wish to proceed?","VCell Login", - JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, new String[] {"Login", "Offline", "Guest"}, "Login"); - return answer; + public static String showFullLoginPanel(){ + String OFFLINE = "Offline", GUEST = "Guest", LOGIN = "Login"; + String[] options = new String[] {OFFLINE, GUEST, LOGIN}; + int result = JOptionPane.showOptionDialog(null, + """ + Welcome to The Virtual Cell! + + For non-guest logins, VCell now uses `Auth0`, + a browser based way to securely login to VCell. + + (Note: If you do not log out, `Auth0` will + automatically log you in when you reopen VCell) + + Please select one of the following login options.""","Login to VCell", + JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE, VCellIcons.makeIcon("/icons/vcell.png"), options, "Login"); + return result < 0 ? OFFLINE : options[result]; } - public static int showAcceptLoginPanel(){ - int answer = JOptionPane.showOptionDialog(null, "VCell is going to redirect you to your browser to login. Do you wish to proceed?", - "VCell Login", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, null, new String[] {"Okay", "Cancel"}, "Okay"); - return answer; + public static String showAcceptLoginPanel(){ + String OKAY = "Okay", CANCEL = "Cancel"; + String[] options = new String[] {OKAY, CANCEL}; + int result = JOptionPane.showOptionDialog(null, "VCell is going to redirect you to your browser to login. Do you wish to proceed?", + "VCell Login", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options, "Okay"); + return result < 0 ? CANCEL : options[result]; } - public static boolean doesTheUserWantToLogin(int answer){ - return !(answer == JOptionPane.NO_OPTION || answer == JOptionPane.CLOSED_OPTION); + public static boolean doesTheUserWantToLogin(String answer){ + return switch (answer) { + case "Guest", "Login", "Okay" -> true; + default -> false; + }; } - public static boolean doesTheUserWantToBeGuest(int answer){ - return (answer == JOptionPane.CANCEL_OPTION); + public static boolean doesTheUserWantToBeGuest(String answer){ + return switch (answer) { + case "Guest" -> true; + default -> false; + }; } public static AsynchClientTask popupLogin(){ - return popupLogin(true); + return popupLogin(LoginOptions.FULL_DIALOG); } - public static AsynchClientTask popupLogin(boolean showFullPopup){ + public static AsynchClientTask popupLogin(LoginOptions loginOption){ AsynchClientTask task = new AsynchClientTask("Popup Login...", AsynchClientTask.TASKTYPE_SWING_BLOCKING) { @Override public void run(Hashtable hashTable) throws Exception { boolean showPopupMenu = Auth0ConnectionUtils.shouldWeShowLoginPopUp(); hashTable.put("login", true); hashTable.put("guest", false); - if(showPopupMenu){ - int accept = showFullPopup ? ClientLogin.showFullLoginPanel() : ClientLogin.showAcceptLoginPanel(); - hashTable.put("login", ClientLogin.doesTheUserWantToLogin(accept)); - hashTable.put("guest", ClientLogin.doesTheUserWantToBeGuest(accept)); - } + if (!showPopupMenu) return; + String result = LoginOptions.FULL_DIALOG.equals(loginOption) ? + ClientLogin.showFullLoginPanel() : LoginOptions.STANDARD_LOGIN.equals(loginOption) ? + "Login" : LoginOptions.GUEST_LOGIN.equals(loginOption) ? + "Guest" : "Offline"; + hashTable.put("login", ClientLogin.doesTheUserWantToLogin(result)); + hashTable.put("guest", ClientLogin.doesTheUserWantToBeGuest(result)); } }; return task; From 902f1c0ad6a2f136ab4929198423c37f5986fd53 Mon Sep 17 00:00:00 2001 From: Logan Drescher Date: Fri, 5 Jul 2024 14:26:53 -0400 Subject: [PATCH 15/21] Small text fix --- .../client/desktop/biomodel/BioModelEditorAnnotationPanel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vcell-client/src/main/java/cbit/vcell/client/desktop/biomodel/BioModelEditorAnnotationPanel.java b/vcell-client/src/main/java/cbit/vcell/client/desktop/biomodel/BioModelEditorAnnotationPanel.java index c555156604..561b509a2d 100644 --- a/vcell-client/src/main/java/cbit/vcell/client/desktop/biomodel/BioModelEditorAnnotationPanel.java +++ b/vcell-client/src/main/java/cbit/vcell/client/desktop/biomodel/BioModelEditorAnnotationPanel.java @@ -164,7 +164,7 @@ protected void onSelectedObjectsChange(Object[] selectedObjects) { } private static String generalInfo = "Overview
" + - "The Virtual Cell Software provides 2 environments for defining computational models. BioModels and MathModels " + "The Virtual Cell Software provides two environments for defining computational models. BioModels and MathModels " + "allow the user to create models using the tool that best suits their experience. A BioModel consists of a " + "model description (Physiology), and one or more Applications generated using a graphical interface to define " + "model elements. A MathModel is a document defined using the VCell Markup Language (VCML) and is created using " From 5eb3715be56ce247a16a45d67faa4f2aa7f4318c Mon Sep 17 00:00:00 2001 From: Logan Drescher Date: Fri, 5 Jul 2024 14:49:09 -0400 Subject: [PATCH 16/21] Changed "Offline" to "Skip" --- .../src/main/java/cbit/vcell/desktop/ClientLogin.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java b/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java index 37312d9c66..1c52cd63bc 100644 --- a/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java +++ b/vcell-client/src/main/java/cbit/vcell/desktop/ClientLogin.java @@ -26,8 +26,8 @@ public enum LoginOptions { public static String showFullLoginPanel(){ - String OFFLINE = "Offline", GUEST = "Guest", LOGIN = "Login"; - String[] options = new String[] {OFFLINE, GUEST, LOGIN}; + String SKIP = "Skip", GUEST = "Guest", LOGIN = "Login"; + String[] options = new String[] {SKIP, GUEST, LOGIN}; int result = JOptionPane.showOptionDialog(null, """ Welcome to The Virtual Cell! @@ -40,7 +40,7 @@ public static String showFullLoginPanel(){ Please select one of the following login options.""","Login to VCell", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE, VCellIcons.makeIcon("/icons/vcell.png"), options, "Login"); - return result < 0 ? OFFLINE : options[result]; + return result < 0 ? SKIP : options[result]; } public static String showAcceptLoginPanel(){ @@ -80,7 +80,7 @@ public void run(Hashtable hashTable) throws Exception { String result = LoginOptions.FULL_DIALOG.equals(loginOption) ? ClientLogin.showFullLoginPanel() : LoginOptions.STANDARD_LOGIN.equals(loginOption) ? "Login" : LoginOptions.GUEST_LOGIN.equals(loginOption) ? - "Guest" : "Offline"; + "Guest" : "Skip"; hashTable.put("login", ClientLogin.doesTheUserWantToLogin(result)); hashTable.put("guest", ClientLogin.doesTheUserWantToBeGuest(result)); } From 4cfc73bc5eb57fdd1303b6c7c94aa3d5b4634df0 Mon Sep 17 00:00:00 2001 From: Logan Drescher Date: Mon, 8 Jul 2024 11:08:19 -0400 Subject: [PATCH 17/21] more help changes --- .../originalXML/topics/ch_1/Introduction/New.xml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/New.xml b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/New.xml index 06ebde9daf..91d6ec72cf 100644 --- a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/New.xml +++ b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/New.xml @@ -3,7 +3,8 @@ - The File->New menu option allows the user to create a new VCell document - biomodel, mathmodel. + The File->New menu option allows the user to create a new VCell project + (BioModel or MathModel). @@ -12,9 +13,10 @@ - Clicking on File->New menu option shows another menu popup where the user can choose to create a new BioModel, MathModel or Geometry document. - Clicking on any of those options opens a new document of the chosen type. If the user chooses to create a MathModel, further options are provided in the next level of popup menu. - There are 4 options to create a MathModel: + Clicking on the File->New menu option shows another menu where the user can choose to create + either a new BioModel, MathModel. + Clicking on any of those options opens a new project of the chosen type. Note that if the user wishes to create a MathModel, + there are four further options (provided in the next level of menu) to create a MathModel: Non-spatial - creates a non-spatial (with Ordinary Differential Equations) MathModel. From 8e60f8d7e2c702a275cf18adecf9f69898e85650 Mon Sep 17 00:00:00 2001 From: Logan Drescher Date: Tue, 9 Jul 2024 13:22:18 -0400 Subject: [PATCH 18/21] More Help Changes --- .../ch_1/Introduction/GeneralOverview.xml | 24 +++++++------------ .../topics/ch_1/Introduction/New.xml | 24 +++++++++++++++---- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/GeneralOverview.xml b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/GeneralOverview.xml index c8f0db073c..1cdf717175 100644 --- a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/GeneralOverview.xml +++ b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/GeneralOverview.xml @@ -3,32 +3,26 @@ -The Virtual Cell Modeling and Simulation Framework (VCell) +The Virtual Cell Modeling and Simulation Framework (VCell) was developed by the National Resource for Cell Analysis and Modeling. This unique software platform has been designed to model cell -biological processes. Biochemical and electrophysiological data describing -individual reactions are associated with experimental microscopic -image data describing their subcellular locations. Cell physiological events +biological processes, through describing and processing biochemical and electrophysiological data of +individual reactions; commonly, the model is built based off of associated experimental microscopic +image data that describes the model's subcellular locations. Cell physiological events can then be simulated within the empirically derived geometries, thus facilitating the direct comparison of model predictions with experiment. -VCell consists of a biological and mathematical framework. As described in the Overview, users can create -biological models from which the software will generate the mathematical code +VCell consists of a biological and mathematical framework. As described in the Overview, + users can create biological models from which the software will generate the mathematical code needed to run simulations. Mathematicians may opt to use the math framework, -based on the Virtual Cell Markup Language, for creating their own mathematical descriptions. +based on the Virtual Cell Markup Language (VCML), for creating their own mathematical descriptions. Models can be reused, updated, and made available to the scientific community. In addition, models may also be privately shared amongst collaborating groups. The data from simulations are stored on the Virtual Cell database server and are easily exported in a variety of formats. -Access to the Virtual Cell modeling software is available via the internet using a JAVA based interface. +Access to the Virtual Cell modeling software is available a desktop application written in java, with certain features + available through a REST API. The Virtual Cell has been developed using the latest supported Java technology. - -Virtual Cell also supports -rule-based modeling, which allows the representation -of species as structured objects consisting of molecules -and uses reaction rules to define molecular interactions that transform the attributes of species. -The rule-based approach allows one to systematically incorporate site-specific details of -molecular interactions into a model. diff --git a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/New.xml b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/New.xml index 91d6ec72cf..2bd5fcb6a0 100644 --- a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/New.xml +++ b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/New.xml @@ -22,22 +22,28 @@ Non-spatial - creates a non-spatial (with Ordinary Differential Equations) MathModel. - Spatial from database geometry - creates a spatial MathModel where the spatial geometry is selected from VCell geometries stored in the VCell database (any geometry that belongs to the current user or that is shared by other users). + Spatial from database geometry - creates a spatial MathModel where the spatial geometry is + selected from VCell geometries stored in the VCell database (any geometry that belongs to the current user + or that is shared by other users). Spatial from new geometry - creates a spatial MathModel from a new geometry. - The image below shows the dialog the user is prompted with to create a new geometry. The geometry can be analytical (1, 2, or 3D); image-based (from VCell database or imported from image file and processed); - mesh-based (from STL file); copied from a BioModel application or another MathModel or a saved Geometry from the VCell database; or created from scratch. + The image below shows the dialog the user is prompted with to create a new geometry. The geometry can be analytical + (1, 2, or 3D); image-based (from VCell database or imported from image file and processed); + mesh-based (from STL file); copied from a BioModel application or another MathModel or a saved Geometry from the + VCell database; or created from scratch. For further information on creating geometries, refer to the section on Geometry. - From BioModel - creates a MathModel from a BioModel that can be selected from a list of the user's bioModels or those that are shared with the user. - Upon selecting the BioModel, a dialog prompts the user to select an application from a list of applications in the BioModel that should be converted to a MathModel. + From BioModel - creates a MathModel from an existing BioModel within the list of the user's + BioModels (or those that are shared with the user). + Upon selecting the BioModel, a dialog prompts the user to select an application from a list of all applications + in the BioModel that should be converted to a MathModel. Note: Each application has a separate MathModel associated with it. @@ -45,6 +51,14 @@ + + Virtual Cell also supports + rule-based modeling, which allows the representation + of species as structured objects consisting of molecules + and uses reaction rules to define molecular interactions that transform + the attributes of species. + The rule-based approach allows one to systematically incorporate site-specific details of + molecular interactions into a model. From 7a5667f16b4be739f3b1e6c7c9c44dc46b7d307c Mon Sep 17 00:00:00 2001 From: Logan Drescher Date: Thu, 11 Jul 2024 15:09:18 -0400 Subject: [PATCH 19/21] WIP on Fix_Help_Back_Button --- .../UserDocumentation/originalXML/TOC.xml | 12 ++-- .../Auth0/Auth0ExistingUserAccountLinking.xml | 22 ++++++ .../topics/Auth0/Auth0LinkAccount.xml | 24 +++++++ .../Auth0/Auth0NewUserAccountCreation.xml | 23 +++++++ .../topics/Auth0/Auth0Overview.xml | 26 +++++++ .../topics/Auth0/Auth0ProfilePage.xml | 28 ++++++++ .../Auth0ReturningUserAccountLinking.xml | 24 +++++++ .../NewUserRegistration.xml | 0 .../topics/ch_1/Introduction/Account.xml | 16 +++-- .../topics/ch_1/Introduction/File.xml | 2 +- .../topics/ch_1/Introduction/Login.xml | 37 +++++----- .../topics/ch_1/Introduction/New.xml | 4 +- .../topics/ch_1/Introduction/Open.xml | 2 +- .../topics/ch_1/Introduction/SaveAs.xml | 2 +- .../Introduction/UpdateRegistrationInfo.xml | 19 ------ .../originalXML/topics/image/AccountMenu.png | Bin 7686 -> 80835 bytes .../topics/image/ApplicationTypes.png | Bin 4739 -> 9767 bytes .../originalXML/topics/image/FileMenu.PNG | Bin 8625 -> 126108 bytes .../topics/image/FileNewMathFromBio.PNG | Bin 29304 -> 54583 bytes .../topics/image/FileNewMathModelDBGeom.PNG | Bin 11242 -> 15298 bytes .../topics/image/FileNewMathModelMenuItem.PNG | Bin 28139 -> 138597 bytes .../originalXML/topics/image/FileOpen.png | Bin 14736 -> 147162 bytes .../originalXML/topics/image/FileSaveAs.png | Bin 19058 -> 46402 bytes .../originalXML/topics/image/LoginPrompt.png | Bin 0 -> 97766 bytes .../topics/image/MainPageWithLogin.png | Bin 0 -> 51783 bytes .../topics/image/ProfileCreateNew.png | Bin 0 -> 21522 bytes .../topics/image/ProfileOldLogin.png | Bin 0 -> 19463 bytes .../topics/image/ProfileRecoverAccount.png | Bin 0 -> 18174 bytes .../topics/image/ProfileUserMapped.png | Bin 0 -> 19576 bytes .../image/ProfileUsernameExplanation.png | Bin 0 -> 30849 bytes .../topics/image/UserMenuOptions.png | Bin 0 -> 16048 bytes .../topics/image/VCellLoginPopup.png | Bin 0 -> 47905 bytes .../originalXML/topics/image/VCellMain.png | Bin 66102 -> 59153 bytes .../topics/image/recoveryEmail.png | Bin 0 -> 128368 bytes .../topics/originalImages/FileMenu.png | Bin 0 -> 126108 bytes .../originalImages/FileNewMathFromBio.PNG | Bin 52514 -> 83204 bytes .../originalImages/FileNewMathModelDBGeom.png | Bin 0 -> 41664 bytes .../FileNewMathModelMenuItem.PNG | Bin 54322 -> 138597 bytes .../topics/originalImages/FileOpen.PNG | Bin 45384 -> 147162 bytes .../topics/originalImages/FileSaveAs.PNG | Bin 47129 -> 106943 bytes .../topics/originalImages/LoginPrompt.png | Bin 0 -> 97766 bytes .../originalImages/MainPageWithLogin.png | Bin 0 -> 317556 bytes .../originalImages/ProfileCreateNew.png | Bin 0 -> 76841 bytes .../topics/originalImages/ProfileOldLogin.png | Bin 0 -> 87117 bytes .../originalImages/ProfileRecoverAccount.png | Bin 0 -> 74607 bytes .../originalImages/ProfileUserMapped.png | Bin 0 -> 54858 bytes .../ProfileUsernameExplanation.png | Bin 0 -> 105809 bytes .../topics/originalImages/UserMenuOptions.png | Bin 0 -> 16048 bytes .../topics/originalImages/VCellLoginPopup.png | Bin 0 -> 89082 bytes .../topics/originalImages/VCellMain.png | Bin 0 -> 358818 bytes .../topics/originalImages/accountMenu.png | Bin 0 -> 80835 bytes .../topics/originalImages/recoveryEmail.png | Bin 0 -> 128368 bytes .../vcell/documentation/VcellHelpViewer.java | 64 ++++++++---------- 53 files changed, 214 insertions(+), 91 deletions(-) create mode 100644 vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0ExistingUserAccountLinking.xml create mode 100644 vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0LinkAccount.xml create mode 100644 vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0NewUserAccountCreation.xml create mode 100644 vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0Overview.xml create mode 100644 vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0ProfilePage.xml create mode 100644 vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0ReturningUserAccountLinking.xml rename vcell-client/UserDocumentation/originalXML/topics/{ch_1/Introduction => Auth0}/NewUserRegistration.xml (100%) delete mode 100644 vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/UpdateRegistrationInfo.xml create mode 100644 vcell-client/UserDocumentation/originalXML/topics/image/LoginPrompt.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/image/MainPageWithLogin.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/image/ProfileCreateNew.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/image/ProfileOldLogin.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/image/ProfileRecoverAccount.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/image/ProfileUserMapped.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/image/ProfileUsernameExplanation.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/image/UserMenuOptions.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/image/VCellLoginPopup.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/image/recoveryEmail.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/originalImages/FileMenu.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/originalImages/FileNewMathModelDBGeom.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/originalImages/LoginPrompt.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/originalImages/MainPageWithLogin.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/originalImages/ProfileCreateNew.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/originalImages/ProfileOldLogin.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/originalImages/ProfileRecoverAccount.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/originalImages/ProfileUserMapped.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/originalImages/ProfileUsernameExplanation.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/originalImages/UserMenuOptions.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/originalImages/VCellLoginPopup.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/originalImages/VCellMain.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/originalImages/accountMenu.png create mode 100644 vcell-client/UserDocumentation/originalXML/topics/originalImages/recoveryEmail.png diff --git a/vcell-client/UserDocumentation/originalXML/TOC.xml b/vcell-client/UserDocumentation/originalXML/TOC.xml index c4aec4571a..42f2f48ea1 100644 --- a/vcell-client/UserDocumentation/originalXML/TOC.xml +++ b/vcell-client/UserDocumentation/originalXML/TOC.xml @@ -6,6 +6,7 @@ + @@ -18,11 +19,14 @@ - - + + + + + + + - - diff --git a/vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0ExistingUserAccountLinking.xml b/vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0ExistingUserAccountLinking.xml new file mode 100644 index 0000000000..e7d41c03b2 --- /dev/null +++ b/vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0ExistingUserAccountLinking.xml @@ -0,0 +1,22 @@ + + + + + + Users who remember their existing VCell account login can easily access their old account by providing the username + and password of their old VCell account. All the user's existing models, permissions, and old VCell Username will + immediately become available to the user, once the old credentials are input. + + + + + + + + If the user has forgotten their credentials, they will need to follow the instructions + Here + + + + + \ No newline at end of file diff --git a/vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0LinkAccount.xml b/vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0LinkAccount.xml new file mode 100644 index 0000000000..bf046a42b7 --- /dev/null +++ b/vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0LinkAccount.xml @@ -0,0 +1,24 @@ + + + + + + After logging into Auth0 for the first time, the user will be redirected to the Profile page + in Auth0. There, the user will complete the final step to creating an Auth0 account. + + + + + + + + The Virtual Cell User Registration dialog prompts the user to choose a 'login id' (user name, case sensitive) and password. + In order to complete the registration, the user needs to provide other information such as a valid email address (for VCell software notifications and to retrieve forgotten passwords), first and last name of user, job title, organization and address. + The user can choose to decline receiving emails regarding VCell notifications by clicking on the checkbox at the bottom of the registration dialog. + + + + + + + \ No newline at end of file diff --git a/vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0NewUserAccountCreation.xml b/vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0NewUserAccountCreation.xml new file mode 100644 index 0000000000..9c4c6ef29e --- /dev/null +++ b/vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0NewUserAccountCreation.xml @@ -0,0 +1,23 @@ + + + + + + New users (or those who simply wish to make a fresh new VCell account) simply need to fill out the bottom + section of the profile page + + + + + + + + If a message saying "Failed to map new user, please try again", the likely cause is the VCell username + already exists. Pick a new one and try again. + + + + + + + \ No newline at end of file diff --git a/vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0Overview.xml b/vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0Overview.xml new file mode 100644 index 0000000000..0efadb630b --- /dev/null +++ b/vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0Overview.xml @@ -0,0 +1,26 @@ + + + + + + Auth0 is a browser and web-based authentication service that allows (in the context of VCell) users to login + to VCell in a secure and modern way. Some benefits include: + + Modern and secure login + Ability to login with Google accounts + Ability to remember login upon opening VCell, while providing a multiple ways to logout + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0ProfilePage.xml b/vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0ProfilePage.xml new file mode 100644 index 0000000000..d75dbd3f5d --- /dev/null +++ b/vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0ProfilePage.xml @@ -0,0 +1,28 @@ + + + + + + After logging into Auth0 for the first time, the user will be redirected to the Profile page + in Auth0. There, the user will complete the final step to creating an Auth0 account. + + + + + + In order to properly use VCell, users must have a VCell Username. There are three ways to link a VCell + username to an Auth0 login: + + Existing Users - Use old VCell login + Forgot your password? - Recover old VCell Account + New VCell Users - Create new Username + + + Once a VCell Username is applied, a new Auth0 account has been successfully created, as indicated by seeing + a new Auth0 profile page layout, similar to the image below: + + + + + + \ No newline at end of file diff --git a/vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0ReturningUserAccountLinking.xml b/vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0ReturningUserAccountLinking.xml new file mode 100644 index 0000000000..936822f3dd --- /dev/null +++ b/vcell-client/UserDocumentation/originalXML/topics/Auth0/Auth0ReturningUserAccountLinking.xml @@ -0,0 +1,24 @@ + + + + + + Users who have forgotten their password are still able to recover their account, by providing the username + and associated email of their old VCell account. + + + + + + + + If the correct combination was input, an email will be sent to the old account's email address, with a link + to immediately approve the linking of the VCell account to the Auth0 account. + + + Note that if you do not remember both old username and email, you will have to contact VCell Support + at VCell_Support@uchc.edu + + + + \ No newline at end of file diff --git a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/NewUserRegistration.xml b/vcell-client/UserDocumentation/originalXML/topics/Auth0/NewUserRegistration.xml similarity index 100% rename from vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/NewUserRegistration.xml rename to vcell-client/UserDocumentation/originalXML/topics/Auth0/NewUserRegistration.xml diff --git a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/Account.xml b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/Account.xml index 966de0e899..becac1487a 100644 --- a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/Account.xml +++ b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/Account.xml @@ -7,23 +7,29 @@ - + Clicking the Account menu displays the following selections - Change User... - allows user to change the user of the currently open VCell document by providing a different user name and password. + Login - allows user to login if they have not do so already. - Set Proxy... - allows the user to set a Proxy if local policy prevents direct connection to the VCell server. + Login as Guest - allows user to login as guest if they are not logged in already. + + + Logout - allows user to logout if they are logged in. - Update Registration Info... - allows user to update his/her registration information. + Manage User - takes the user to the Auth0 profile page. + + + Set Proxy... - allows the user to set a Proxy if local policy prevents direct connection to the VCell server. - Reconnect - allows user to reconnect to the server. The status bar displays the connecting status. + Reconnect (Refresh) - allows user to reconnect to the server. The status bar displays the connecting status. View Simulation Jobs - provides a way to view and stop simulation jobs. diff --git a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/File.xml b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/File.xml index a6283fd33e..76fb04ed43 100644 --- a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/File.xml +++ b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/File.xml @@ -7,7 +7,7 @@ - + diff --git a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/Login.xml b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/Login.xml index 834611be8e..70160369f9 100644 --- a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/Login.xml +++ b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/Login.xml @@ -3,31 +3,26 @@ - The Login dialog allows a user to log in to his/her VCell user account to access and manipulate his/her VCell models. + When VCell is launched, a dialog window will pop up, welcoming the user and asking how they would like to proceed + with login. There are three options: + + + Login - Redirect to the default browser of the computer, to authenticate through Auth0. + + + Guest - Immediately login as the VCell Guest User, allowing limited access to VCell features. + + + Skip - Dismisses the dialog, placing VCell in a "offline" state. Should the user wish to login + at a future time, it is possible through the `Account` menu. + + + For more information about what happens after clicking Login, see Auth0 Overview - + - - - - The Login dialog prompts user to provide a 'login ID' (User Name, case sensitive) and password. Clicking OK authenticates the user name and password and if successful, the user is logged in and can proceed with editing/creating models. - Clicking Cancel cancels the login process. The user can still create models, but cannot save or run simulations. - - - - If the user has forgotten his/her password, clicking on the Forgot Login Password... button displays a message to the user saying that the password will be sent via email to the user's currently registered email address. - The user can choose to accept or cancel the operation. - - . - - - First time users should register with VCell to enable interaction with the VCell Database and access to VCell simulation servers. Clicking on the New User Registration allows a user to register and use the Virtual Cell. - - Login as Guestallows an individual to open public models and to build models and run simulations on their local machine. Guests cannot save models to the database or use VCell simulation servers. - - diff --git a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/New.xml b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/New.xml index 2bd5fcb6a0..58f2be0fd5 100644 --- a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/New.xml +++ b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/New.xml @@ -8,7 +8,7 @@ - + @@ -46,7 +46,7 @@ in the BioModel that should be converted to a MathModel. Note: Each application has a separate MathModel associated with it. - + diff --git a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/Open.xml b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/Open.xml index b453cdfd23..8111e50691 100644 --- a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/Open.xml +++ b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/Open.xml @@ -17,7 +17,7 @@ For example, clicking on 'File->Open->BioModel' will open a dialog that lists all BioModels accessible to current user. Additionally, Local... displays a local file chooser to select VCell documents saved on the user's own computer (using 'File->Export...' or 'File->Save As Local...'). - + diff --git a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/SaveAs.xml b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/SaveAs.xml index 6447e8cf48..25b5a8e74f 100644 --- a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/SaveAs.xml +++ b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/SaveAs.xml @@ -3,7 +3,7 @@ - This section describes the File->Save As menu option. The Save As menu option allows the user to save a new VCell document - BioModel, MathModel or Geometry. + This section describes the File->Save As menu option. The Save As menu option allows the user to save a new VCell document - BioModel or MathModel. The operation allows a document/model that has already been saved to be saved as a different model, and a new model to be saved in the database for the first time. diff --git a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/UpdateRegistrationInfo.xml b/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/UpdateRegistrationInfo.xml deleted file mode 100644 index d54218c694..0000000000 --- a/vcell-client/UserDocumentation/originalXML/topics/ch_1/Introduction/UpdateRegistrationInfo.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - Please refer to documentation for New User Registration. - - - - - - - - The Update Registration Info... dialog opens up the Virtual Cell User Registration dialog with the registration credentials of current user. The user can choose to change any information previously provided. - - - - - - \ No newline at end of file diff --git a/vcell-client/UserDocumentation/originalXML/topics/image/AccountMenu.png b/vcell-client/UserDocumentation/originalXML/topics/image/AccountMenu.png index 74006eb743005c8382b4179a3b94d9d88e35c9ee..db77710a377d5cb00df13c65f35d89aceda2f475 100644 GIT binary patch literal 80835 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 i7v}5*(L(Ka{uTFDX|$&`HSlN=q@(^-5AE2 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 literal 7686 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 diff --git a/vcell-client/UserDocumentation/originalXML/topics/image/ApplicationTypes.png b/vcell-client/UserDocumentation/originalXML/topics/image/ApplicationTypes.png index e7d34f06153d667714a77be96093fe8405259138..b6b414cf8914946bf1ea9aba66c6de818600c93a 100644 GIT binary patch literal 9767 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 Hm$?4}=9&A& diff --git a/vcell-client/UserDocumentation/originalXML/topics/image/FileMenu.PNG b/vcell-client/UserDocumentation/originalXML/topics/image/FileMenu.PNG index 5124e53c110cd074a750fdda5320fe76d2d65c20..da7e42500ee9f49b2d711a172cba348a5ab42789 100644 GIT binary patch literal 126108 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 z�+k!{e*JfGEp`@L=S!LK+?(;dBihcya=x#=stl8s4?Zeva`YXk9s!V5?7#^iuio zSBplf*Gv?L@TfQ>ictA?zjETLDfB6}xtAKGCa3Ub!}&K%VLXkgr`@p#ZM`FA z|JR;|D-i~%Pf0Qe*3Wdy`E#Tr$^=@1MSeR;s(VuFJzrQ&+$0cKa2NhTGD`tS<#`+$ zI?(tS7$pM}6WlcjdD_mzq;TWLhoVN_L;Sc1Vi9qGKr)-M4E=~oh|1`WFI8Ea{k6WQp< zw~RO?iH6e^4ZXvrtyEMSIcv9>8@|8)V9=_~`Y(sLO61P7(~Z{3CmelJVH@~$X`X?3 zyV2$EU@8jd+Afeai5qr+QZrop`1PM>ke{-Ml7(Rd<9e)4dt@YF3t%I)P+4llZT~Yn zn=DG3bQ}*1?MIUC0f&DG51{}YmM3zqW9J4^<*oWADW~?`-kraI{;FYx5hKS)cR^0o zY#7fyV&!oAxw|6l=M6SvWr!0X5BRh23kD@Ks3icTBa&B(!iWl^^ zdmWAR+Mm0Esv^adMP1PqY)kNR|9(zp(GQ;rU?BvMc*N^pp13&dLW~m-6N$S_5|0@C zu%^c%*X6>y@V&_6I3k}gfX{-aY?s(Xsl8@{I;E)@GS95= z#tc<3Jo=~ZQwy{Qx)Twzg5MjH`s(n#Xq(GEbG&YkB52`n=-#VE3g|bwLTOY?a_2457Q8tbFn1| z=5(C`Y(ScVCa;>zUq{6GYcqvSxBeasJ(p?K$i<^#hFXpGg)}XIjyK6d|3LfTYti#$ zkQgKcQaPmjwTkw1A($EzT(1B8pPa;6194ik&Jf61@1#34cJ1fE+#u(0_F3?ac8(Za zGsN}b0+fT*-l8=zk#LJGzF9wcmk#shBI5>v#1nZSD$A3pd_$oY8&MEXiOeL@CWPG_m}-apFAuQj9dBx?@OxUY zFkC##{~BG@{~Vpf&IYkcUIJadjOjreX3nFdquU#;;vNrv8Z+v<_DVpD+36Hr%I zK=Jl=T?g8spFcs)5U#Gzo)8m2Uky@sW_^EXoSyD*)xYc{##P943BCf9cc04{sed)LtCOyFIciR%CWiQnD3aOeO9s4-^3 zi`Ncm{*)KG`4-%I-rM7*PkB^SMs2dbAK>RFeiNXMG410;lM%@9G{ch$Khc`T&qwC^ zZ=vkMRNI_-;W*22yOhFn=rw*~-?qS3Y$hacUkCg+p>SZbrwR{8(W*|@%j(QCj*h}` zd&D>2`)T3&6`iGZROLxb@j6AO1jInfUDC5 zpPkgy%>L1J=DukN^z*;t?&*ri05mq=u8c}V*I!}^hO2qkX#W1pZj6Vn3&Tau#gmRC zFc1CX71pD>wz2~!y=s{9C@3gM>9T-Ih`+sS@&g_f5`qa3&S2a?cjZu+s`hx1+j1I; zHXc`E+?d)YBl7}@M?|m&LDQ=iQTziCKezm&fr{ui8bF!tEtliWWu$a0x^rDOQRKbt zVz~Rc;Eh!BubOSFdib8t?qm9#`LOidA&F-v=+RJW8JarxVXOw@hU3^cb2agk-NFCE zCc{^X_H^ujHyC>Mo4^og44s=do%$yhxQjl|J!_y(hV&f3Et`47OP9%?p~qkDyt)_T z=A7)l@;I7o13|nGdTJpBS$Q&OVnhreL#Q7fY|7ic9Y6Db+`nM_qHap%wd~VUt0(s! zsnMS^{_h)HtNPvrhZoStH*eL{w%T4GXW78MDNgB7Wt9?LfJHQ3>Z^L%1!f(Cj$NN9 z%|&dO*16M`ZWOc;?Q#me>+)l_%kIUt4frnmvj&`M@!LbITY6>hZ}X3M|Ne+_$fKkC zwC_E)ZGC_0>8ooOX|1j4T>lmGl-5T}*p>X-@Lc3xqC=OtaO>`|uJ-nvwq07fRZWga z{RJvrGNPD=TEf7=F~#s`P?Pu^aryoPG!NN}i8+rEYTURaG(0?haKOHO3M&D;!(b-2 zAO`8Zob1?2?*em#{Ttf#YhNc#Rhk-OEB4TKa2`})w6>mgTb@|_Gw$LaGEi2B4J%A5 zNho}a{!@)aEmdjVG(+OYJmk(+(EZ3DwfI-?!KxsR;cH&Ydyp^u)?uL1`2~VsH4zPR ztD2IlR`{jo-`xPfF9GRuLPM@d?R{ms{YS{_QcJ^oFJH1`=UeW-D)M}K zZuVrHPM=eLLdttadUd9gy0NSU-9KBKTp^NucJ%T#>~A1D(X%K(A_efB0?aEp0|~&mAQ7=}LN0CAv4Fqabq*Rz7-VeZO4{)T;^Dj3(sUtwfwg zzTO7E37X^%kBX?HRtqynw|)!XZvXCkzZ_pJ3l@hVx=$(jl%Vxv^;bI83nRA53noV{ z1Y3BdTHN*XJFvEmhK4dJL`6G@B@)?9X#PlKh>VO32ra^xVCvmWOKSlt8wN`sAUaS0 zo+ zBH`zY9?e9n?Z-Vu72Fc2D2FaM%=Qj5G40Pbc&&ya2WBV>{0budHlejqA6Ov*0|X)& z-<(!}@{Hyq$ojmA51r3&&0%jK)(b%Q)4(bCCJq2K(o0CIXnd&_Pkb37HZ1|z#)8Ab zoU3(0U~nHvnlZ{X6ic>fx-Jnla?|PlvT_K|o46YiQQ<~wc&b;YgS-xiA49drPY;2c z0F8w?kV4FDh6hh787zB0uEYI9@}6X3O3EPo;Fl1u42^%qKHL*^!j3{4CI|brdf2K9 z5a}8>64it^4f2SDm%ecA-<69uO6&hzp-U`wIN!v z3Tk^Pszk4~RSHlm6!gWx{(Jt97GTew)3|W@Mef-POf*!VDD!5XD&v}dhZz8`2zvPK z$=!qI`Z@x1^K1XsuY`FOY#5xsv{5VM-q^BI8V>+KGNgf|B06M3x>3L(Tm#o%gy@x> zcnDy*@PiE(@wOsC;tz=a2riA1wtGupigy(m2l1#NiibpIdz}564Tn8ka=RfD#;VAs zc@IM(vTs8=ewbyrnp;pkxi>$ydkf49^&nKs)73fYcYY45kmk$zZVM-hYuz?I4!(y> zdS12ngldJ~?0ZvlhN2A8Ec|g(Xb1j%0Og9)f*pJY$08>}c$ZskoCBBg)~4#ksI?QF zQgxEa)$`I?m$y@p9&A0t&Ib-1+7HkPW)xA^SW(Wy6dXlCP4_nVQ?1$2QY{ROC(pb8 zQtel}+DSiNeL+8417t1=T9`#PDrm}F7n&t#4XUuxNlCz*6W?BMn5qN8&$zaq4MK3y zL>>_QXB2!cT4F=*W8*B``+9-9*hg5HgRi8XIu;oS$`Ib49n-n2xGJI&l}#a}SZ zMQay-+K9B32un?EEuOq`B;X*Og04Lo8GNpbmgy zKZO`jFl-6)&VWb2Die4EY%8*ZA2pAXqX+sC+czWT0t*SmJ0#|Ws6ZgJkk)yYw|VPU zkX8hsAi}1hS-_@5z(A@S7)BsIoamMCZ0|~V{$&aS0iYbk)MF5+t3HLCL_pQyF+9vRm2T`X46H`i`9x|H_bBz#{~+EU(J$A_!6 z*nVt&m4d12gYNzwNepf$=@$F&lEl7FWb}CFe6!5J8@Ldt3h-bf z)EH+`jB~ng?7=vk;7nHw#+J zu>wx|6^#P|0`mW3c~*3wIhvfy(f4e%`u}Zoe@y4+$OgA{UKhUo)>3t4=(*L?Qf_#K z+%svNDu0SRlp0?@-WXjO&Us?J>AH1RA~LVvZiF|AuHXJ!MKd#bsSMe)?5L6O2hG-f zpC2zOhdjML1jkkc&4aC48%jegM%vDnHO8%#cd}5b_{jOkoO{{m=da{ZbXTC3eXoR& z1$$yy!0R+kf_3zj-)YD-YvNI^Kmz#Lv%0sBS;AWszw zi+yMZj>1kG(_{>{BH385%Wnx&Re=BS$;u?)R1)7tPIy2n)O}+``)1 zfCkJk7C*|P5{t|e=4^v5B=C9oX8wh1<370RhY&hJ9-fOP%JpZ&E;2V9Kg$D zTe|O{_S-UkKQB5;4-R&@TyQ4dr?>tS>=W_wF;3Nxh#rgn(3o^`+%ZLJOFU#7Y1H=2l_E5CVFb+PlIGQUX_}TOh$hLKwmH z02kD(FA0V+*mY3ECC?D89C|zdprCWnucq*5)c@ z3e*mJ+IE~9BP%N#cm|l`Z2%)t;NSRrE@WArrQPc&#;T>G<2crG5R4Lz6`6Il6AFI- z`W*(|dygLdU7E}r2Q+)i#Ka_Z^dUb#KiO8*;zNJ`{%ug!=mpLrq16WL2GvKf$gcRS zIHFS#rmV4X1CS~rUnw1R%0$R8_TjfTt1PpQpa~`02ONY@JNYVAR*^36?=Sr!eOiPJ zV>3id;48n6%+zU;TLumEZik`!N8|J4eSGUde*R0?^l+lZa)_VWMoM2w_2gDPL7g*9 zZ*7|TV`HY*3rI88`fO!>(4ZrHTskt6dC#*C`$Jo91zI(0UQExUofk)E`8o3o&;8{7@L&VLpgylidQ({$qgYBy+|> zs|0}BKIVXB37j~>0+6u_*Z@%{LBZh`@C8CB;(G^Cf}mugZ}oUT3m1tjrWEqB1hB<< z0LD|*kkdgGLe!C1vv3Hzruq__%3;edyA=EyqQuwtK7MD5)lYJhsFJKGg4{_(-+AwJFO&Qj$^N7>~7NmKrYf=qB>H7F) z72HDKvZ!&-xrI#&Yd6Y-dnEn)>GhTN|ZYiJhi&29kK0@Q#9j=2Js*HG;w~N-C?kYY z&=M@0L=4|?p#J%DkBLc}3&JlQ3Y6d#+9GMK&gvEw4 z7?ud7TzSQaK?qMq*0mlPNbYVY1^0mLuCmK%hB}Mopy~L7Ml1RF*1ov;QlSDp*JI&t z@3QSM;LCV&{O#eMkE7=U8xwfxO;dPIxF77S?|8O2%dVKsa@r=j)VTH^nq53cVwji6 z{7QJPIb&yFc2yTwXPAdxfHHBzU>3Hm_}Hzb(ft)h{W~dg&h_kp$^#;Mh-|-r8Y1dd zIk34>^^jT8qx7iS==+v_#O#qb@JLe3Qs8vV-?j($jm!#fjS? zj;B*A4a`dgmfaK9dCXPV)kyx*268q87^PQRS+G-(V}Nj<2~q)c;E%gBD2DTfXYEL| z0$jb&#&3sHp_t2@x!*DGb9ME!vJVprOAUf>BP5*paF7FrMNK_D5>1FpivFDpo4DQL z4*gWP1gzqYRNip(zKMc?P8`0ZGWwdur_?0jY3UZnntIdswsK+Heajg9Tf3Ae?3N}=Ez66>Yb;64s z*leBU`KBdzXUQ62j7?a76&rvmn5Qqw5o!YzP{gsTEI`sPfvzZ=so@t*(NYOP3zXjX z^FJS&ib@~eLJaN^0m80!9@{sp0#5N8_+P9eU*YgSu-*p;2gf{tZ}&7jHF9^i?gd4L z*25c-Q~Ygeo-Yz*IjII|UbT-C0XXi9uDle*uVa!nf%!J~5(Pppnw0KPzvrbvA>(+| zu>P>&F}7m`cQn^TqPA^Oi#(%|x4ED~BfeMErseY$cSKDl1XN?=D6H4Wm6U*X2MrVm zNkiL{z6F9Lqy$4w(PU4NKN8ut;nW745z+6^1-B4(Q9geDuvYcSNAL4@$+o_}iLM?r z`=6wf80z{rb#@9INgk}@C5JG{fs$iq39qP+$u@b=)c@(=n z7z#HH1{nM;AtxusWHe$A0VlTV-N2NO6AzOzLe8e@5HTN~>UAGc>>J=nk!tc%R8(|C zC0YL)I|vyQG2<4sk&toRA%($LHv77aT)OwU?=GF==WOp#JOy(Ao_^%o09zW#ti7IR zm@vpU{?YEbiFlvCU=4F*&7G3wJC%u_EZR-7v}2BOYz(9I7dUUuUt#Lp(s8i8EfHc0 z(j@`DufnGN46HFN1A&7;%A24T!G}qr9mqsf@u{W@QxQoPfgxFY_tneh=7eic*HHmw zfpMKgkYPJ)LaAq&J%VlTEglczU4~ZIes#r-U}iwqPpYfaZ>yTR8l#y=q7-{>&eEb{ z{@FEAU?@aRO2fcM4)Y>rZDJiJ1}$(wL@WU+hvGLb=PY5T5JQehOwHWxl_!ea z=ga^T!l?mg%_;m27^m6ie&Db%Y_(9ZK{E`X;!nP61MWI@kQo%Mkmt{nS{4EB;g}ET zOCjai1ThYA%+$=I$O0vX${f8>gorgG4iwVbxD^nEYdv2&CKVMYf5pSoW4wW+RiVDU z@cgR}#VCnBX^@)Tipqe`3OhE~DiBLJm#+*Gk=?jK648%PM@XKc!j8Du*d62MXfDu~ zzTuujBn$vS!R7dOvO=2* z*o@t)moE6574+H}ed`eYbjV&{>5IZH?grB#RxQi(Hebqh^Vtgc19O{|Vlr65lTAM* zX(rlqx4hL%e6sDAV@gU#O$n<|n|`~87MF^1+qt+#Ly=$ibdpoUgIjahkPeyjtJUGW zr-Js?$(D{|uK6!t=7>w+Xo^i7H#tFb8R~h7fInUQ)2!|6G|A%rrNy3CJ;*kM`T!ko zj2P?1csjK}zw>Xnc8~37x~GOeXrIfXmMSL19;NX(Qe$Z`Hc;?R7-fC z97nlz7I(El@QOEuxqfB*<1^-Z^eow*4FK;`In#W8c~+|HwbK~ii(>qw;l`xoJT6t> zFI4Rr-iGN1ul~oFg`uwwsN^ST%n5cD)7v5sXJ!OuW`4{s{Q7N*L#|2~IeOGYf`PiM z3eq=Hg{ztN3Dq;Faes_w^&gNr>CU~a%I*0v>2r3I8=IOw1SkT+X)oE}n7ZM7VcS6= z8D*7fA={_EBiY(Z(7$1?{`6~7l;-1*jRsUhYM9C2K;myZz zB^SaIM0I+u)Jg=0ex)mWpVohh6<135Id`2C^EL(g$?;ovf-mRf^m=Pi_@8o9L0w(l zx2$}4cx_XB^Id~xn#ip(GA0h%|7g{j=G9?nsLOUL-?@$TK$^BJk~7eWXl8CyL=q-F zy?x`mJ$6Jv_w2|e!crBnd!ea>+QAIRu%Lor#sUtIpK$ml#xj!S4!n9ec8}qA?YrrNr*OPe9;{oMBB(4NPj}^ixFL zFtD*1oz0z4l`uXIRS*VhL~QLQG!6ieA<@`$+_{|r!ZXq^tiW9Z`o8ewke}by3KL}t zA)}k8Pd7O9eq7FGhh{Jyid2%_g4zo31sV01VLHjS>`s1!gT;<2<%4HG^= z3!#H57&*`#Jvgc=wJGbn;qb;bQi=+?(|BB25Nt;L{m>~82@*+|of~iGZ}>XoNCbb- zz>4Ah0Gk#SNGB>Uz&-~kpFMk)FldF7Q-|QqKhL#BL*?U6{rTmnC4_AlNB04-MQ^Ib z7glv(PSd_4(?LsUZ-Pd!F8?P(>!qt&hcpZ{eY|8TYyw#x49X@c1w0{u66$mWgb)y^ zyJG()r)UZ#KC;ZpQ)7OtlRN|zRJ2PU+It{E?t!x7?Di1ht*qGOj{;qTY~>35Daae@ zEDI6}tU$w)ynaZyhPq%a=I?9UuNL(g*f2Sm>ipX?8e`e6(`HbWfB`Tbznb;^+lQ-> zx>qL2q=%gZeNu{|Cf{vY_0unxE?=k|A0AeM4Gp+6n(HW7-$WBwqt(u;$EnN8sbowa z7i=?0dw>16iA>*-sn{*g{e?ze`c)M_xHwX~Kvfr~@{3MWsf$vX zAZsu|ix1hrFobBP;AWCTHqe(ZEH590T5q3WQCXh}9t(m;(y7jU@nklTAiELVPk-qX z#_}Y(d~c6&?NecdS<6|m!MVL+4_Xv*RxG9<{XaC6Cp|X|Hteb)dKWONNVCGpl{3o8 z9rQj)bsQs}bC7v`Ex3MtTbk$nKceT_7P97Nt(gUzr482b2G@;1xY$3FI2kJ(afUrQ zgGYsk7l9FxXC9$H$Iws=J$7&F%*FyG^DelWPgWv$U{3+TkgkVhk`0svx1eAku)1>H>r2dFSL+}!Dc%E>w6!Fi)lFaUnG>)U5OHTi<_60yBIcTRX9|ypuwfPxQpqtuz z{J5@)miE*z#6AQ7z_BJM3p4iJsv*ej6TvlPEb@`%6bR18B}`}?tEJ&NSS!pMs&cR6 z%CX4r*~?VP?d<(u@`Q_5_Okh=)7^59uHv}(uVU7aAfx1{Di{YzQf{dZ*CCV0}T7Ta|M0q&D5m}+=wSk9J z0ybLb3Q_I|+**)lSDiar`P^QaY$56Z*rV~qiLEvy z-pAN|bRP+y18`l3qM_jGn(L^BYy9L%CiIR29eBg>m_*2VJgRP!?)Vr%EiEl9lX)GJ z@gKB}3DkiKM-=gd`U-zvh{@_}zO(j?Y9M}SFzUg)HXzhcXzVXGp;NLuroSOZ6*N2a zI2+T;9bIm;HfN4`&b>!!Bv0bv(t}HXCOT-mvwPw-tkWEiW?$=m!Z1f4j877zHh=1P z(6TX+-(41;3_Cxkzp)EuGn_yHMOi30{)PyfAwQcNTPXOS0}XEJ6bAvQU%~v)@yC70 zqgDwS0hdHuDv9S3jU*k`?*L4bMZe}_$mf765t70Kl#UobaA*;a`-a;w#X>13n(Lq{ zBdOxwZFz-+(kjbsV4$xJpjFvnUTvlruJ(R8!=(>OFV8uZ>H-{Sa$=xk^ zrR~>)R&mfZ7VJ8N8ug%6Ol(|t4b3i4D)f0%g|m;EOxx~&4+P+TGK8n&y|o-bi$Krq z&eOn?2o*p$HvqyAP69BeP<+H%jRz6w9fPQ}sGc!8;m`l46M{tUpbt)WCSwvhWg@b` zvk6KSJZ*xhXI{zqe?60zhgMSnvB5KlNjq6jB~#!!UY6vuH1d->R2XEpe*JoQBbl&E zmONyuXH@2Ev0*CRTZ+EjTIC=BV1}{|N7o+iuA7%w-S%AW3$ZYd=vg!L5i<%vRV0!+ zazqQ>05PUv$8`JEKoa6G&4UKStnzGk*e1*WqXhsR0UA+bCc1OtM*6Ziwuoy*b2|YQ zrRvmTpQ%R6E&WLMWlFe31hgk_LMNe*gmF-c*zLO1F$hwb0Kvf)`v}x^GbmKdD8%tP zr4hnIPMLvV{1tUM^eiNdj>JYuNEoQ>UdBRme;=;;CKjGUAQB-s?^^YZ=GaXn1>*$} zfc4SjFa}P&cP6*{g-B>Cc4mac1Q?&>Ot^MV&(QFuwhM!fmKL%YP6Ge{xf_RK<~8z; z!Jn=qpzi7LfJ zSE>=gm53G;aNkh676pV2*ccG58jn2W)2EjNjg=(+*Yd9iF^+^{aPg2q;PHQi?Hb>T z?Jv(}ZfC|jp~q(iy|mI}cWJrOvrv3slBHkc;_1Y+OOr)=f7Ay)e5kcL z@j@gm*)~XlqD0^7N56UN9M{DWA61y2t%?p+0*E6C;b=9vMMT~kx0x9Y=k9MT%2px4 zMi+8)1bDI0pIgUp*4}z6tE)?DWG{u21bQBxwZ(SNmBQs+KmL@BI^DZl`0YVrBgwK~ zIk)jRswJ1-J+faUpY!b3*s$@~&wCNG<5HKW`}f8kIn>Ou%xwgrp3nyQfU2Y~fMOMqUb2k54KPr^A~<&JE(-Nr0qz@$^~Ad1yKPcgR9YBLQD6D~ntn_y}FH=pKr!y8Aq(-$Q7+l3yijrmV>tbmSP%b(m{9h;avO9_T3? z$p%0njuU{?!#e)XP|6y6l0X0m4{9M9*1fzOkBrdg&+iM=LjPPp@b7%07Q47IDZ1PX zmk>|^<_T(1BHw-x=uKI=7VfFW=m5VK7B8?(PEO9=klJ7#Q3i(4>G^A$m5t@X zIB!$c9C2BDn&YwQQQ$@U%j4>QrH}cjT}w;N4)sL;h;_CO!vqk8W7mFc)q3+T^#%Wm zDs-<%`lMBR_XOt9E4xa%=F0hyP(hk42C2X@o6N}3O<uz!~WKCG^*vj9EUA1*+@;`M*pUqZY9#ziJ-BVzx9KEIn&sx+-FwO)Pr@gs%M z)+W0g$s>_ps5WYE*3!2Y&-=a_mBYj3Toig#>3GPc*;nTUqZhE1pbqmO-f6S!h`rc1 zlo*NVw3DAki`T~5HIiG|nZMR(5Td4-x@())r^~o z2`3j%93= zR#4C|e&#iLaB>g~CW#D-+MS4*MDJn>N{S>#5+WPKF2){mcL|*dwaX`@o!EXC#;`(; zvOpTl{X3fa`qhwI6F41<6%knNV`^aM39SI@zB_e(Rk-cK%y5vOb1b%2PGA19g1{El?Z(!8oS98L-hT9q%F6qS z&Qw3~m|FIioVQRuwOg5?_~r2Q_kAwH5#laCZ%s`_U7yOMJF&Ks#V89T2NE3ukfKSy zgSjIhHUQKjJ8;l)$l-8egddu>(ms21f5hEQ41E}>?*h)l5_w&n@dj&oot5iR)iBjN zxSnPp55-`piYr-0a5~9hLL`XYJ3$Ev7Ify*BOAH7bU5ph&<^7a=~GY%qApCex&{<1 zS6Y4Tv)2*nmt-+@5$kij_pVkVO6+{lu3?vv?n4`gDu&hVC#C9{wDt<{&_BlEgG)Cp zvv%X4><7B(Z!#*P(a`u~bUAp!0~-Zd6m%P~T7v;+-@`TV_`l70E zA2>iwdJJiQ9+iaTRJnq`tJHMDG3PSr9&V(i*sSIsP-DZ^k-YRt^Mc<_$AYpADh_yDP@v}lyrPvBglPe8G}(XU0xcpA8IoV^pF`i6j) zF^yIx8G0r;oqJUn!QX>j4HK>CZk0bDDvYC`e5ZNm8H*@Pkhcw>o5U-TR1XvlTqu$~ zLE(+#>M*L{#MJp$`S}K;H?)#l5q}!Ra;97;(ZqHTWl85N7*><9GM-@)|dP zOvYVEN$}gcJNgo3jLrjkD#34|c_q&@#SLF<%3J}R}^ zRb zqR`I^%bj%*zOmY}nZxdP*(lpoFZhIy!5Lm3hm)s#jSuyz=QC|kIL4VbIxG@#hMe32 z1jrBb7Y8&S=o@SF>JTi9wDkx0Ity?jv%( ziFBL+DP-xXpiid+7e;ObLPV%e zde>QA`6CUS-vpB&iBcoSlAk(Du z+KMeK1H>bgFp)jxv2E1Bkyn2=;>^nDw@P9t5|Sm|8qX=TbQ%R)#QaD*nZ1u9c)iB? zDas^6vGXJHX2YkHW7ji;+<7Tot6I1Su4@h2@a>;azCee9*D++Z5nY=Q?zV4iv*DTof2x zg8bRt6GrLc6@BqfsMJ(`4L}+HvGw=r=OU)Id85&}qhdFROHJE4jn>KlOGN^uO5a()E5~KebQ$ zd`JF*+b(wb6j?iJf8iMo%}M_d;Z3&3dY?Wj{pP{Lyneadw4u-N<%buuvFZ!vw0V!E+Sl-RV) zhiez>6uDx@uLtWSLir8x@Ftje-s=1)9Bo_gAjS%LmGL~=3n_7qxw(?GhnJHRH*v^v29a|3v!?n$iMbt)Jfu1tIeJiCCU}|vdX0;cZkY>o$_Bb z*3sE`@nR3Jt{zWpdrlJ^X}wjRo{CTf*b5QqtfZ=XUw0@*abQcfs^8#e z@6xZoP4?esWZkCm-7-u3RkL-B=H`U<7TKr!Ks}~34u9yJ&?~qh2tvGndiKkgFUO2L zp<6M7V3X8roP;*jTAcR;!m5?omuuyq?w`bCdNKfk0a~q7aOHu9yT4cNZZAY1N>G%M=?35^D?pi>$qhOCZ9>;M9xc*8 zNl(wgL8lU;jvf?FI;0YRPnP^c<0z=raoZSv#OYl{UgCSfAJtn3~yS$;DL6Xfn+S;!Q3t8c}#_%8u`zEyb07Vhy1;U0l zOm#zK-Ce+HVDb>LgJWx84&XpACR`C{VTgqtZPF8G74#!mX7oFEZhTPTg9C~-Kuj;2 zZd`<81@2*2r}pv2i$IW%S;ejE5xaLL7;w6=b;fpj>o zSeab75&{%2eQ>q|U~ewP6+2Zb2lR}kaCgSSMsr=V1ifAO=uf43lm{b`==}g)Q4335 z(J}Gjz}Tm^E;S(GelBC=Ai$pozLO;D%%9gs0OV_dG;JX{h+&2aa!+Uf&qKIbC^Nwj zPP^cLv|gneH0Z?TI@mC?U<2qg0mfyk<9E`!yNM0fNa%85qcGMtV8Th;feS)%Zy?3$ zIw6PiV=A3&DIbc#(Pi$eWC{Z7J18C3v_G@cGk(Qy)-s16Ev+q9BxBfK8GfU@ycGfW zqc;{E(i?nm}%-A zbff+uPxKrME^qwmrCNTDp~Gkaj%yZkQQhLew9-X7KOZ?_OwI<8!nb##$B?cQ%qM&5 z7NxAvQXGzt3!ah?Xti+cLdT|~?$-~PHho-HQ*FO1moJufaafa?8(ROkeNH?7`ikVv zUZ*rZLFJ2Fz8lh0^udExKF=AUl!O4XJi}*@-z)e!M*aIweSb20t{EAPtE;PwB~ZNc zy!s@k@aY$48iaIUB&ET=>Zh(v*)Ryqs9U7Eff5*d<^~@;`2BEtQgH1JJ9G#6@usBv znGq%gv|)Far#RGN#A4pcviF>{oAd1=!^8E&ng&*h4i6y<631>aKB$Ll^*PLg68|giX~?I@K&0?K8`>aq8Yrjh|f7Fqt!5eVm{F z?ho(PZ0$Z~e`U8J@WZhDZ!(mdY~~w|JoIsC=JDg#%bt=W>V7D_xAyan)oblrZrGun z1P!l^#0v`Ao@Kiz9|^a&L^HeS(S(jM@ksOIJEYUEQLWIR$N?GHvDr!tJG~i`kJQM+~FBOtc7?>gd>K*msQ?UGXy$ z_i!wz)yK?iGKcQz!H1I;m;PR0esso| z)OHUO4LeV89lyTi)EQ<8LsiEd$H!`wf&kOqjiJqTWnEuh$!=SlatjJ6Upbu1uVzrL zr=+ByTA$G|p|DE7<9)aCbJXXYox-yStay53FB9!ds0#`2lpivDZ+DXR`T*jTIhrCo zt(k}@25m3X_KLOc%}Ng*e~%tL%(zqN0S{~IaLbTdkr2|e^^|4H`k<$~NykmIAcAP` zYmcu> z3VnP=6vMn7AJGVU=IPVJ5omTMcZFCJQSf<%v02Hz4i*--*YMf{$`?OZ`+c6{%;er( znB(BPJ>+oX)w3MTH%}=mkMiFXvb_DU^1)6qz2bhs%a}W*Di>F7tM0DXngvyy#My+D zA*=FJeTpOJ0-UDe+fh?DIhdL`d^q;w;rOHR@ypx}Ioq_dadf=btxaub*IqNXwsbtd z=){l@e;!=k>D%*)&M|om6^hyP#d-6O>uU1GWimN6DLYD`=wT4`YSpCI4-|_l2bsjA zUSBY9-`TVGWAm(I^F?O7*Cj?AHX;N1F3`6M2k1MtSM|9Y>{NjOH~qx3K7A zplYwt*~lnCJ!n-iHpQ)*jA>;V661ZLun)&88nAs>_swwja&+u~DdPRdDdyE5rw)1R zlTqYr>-em;&^@!4O)J`6mwUNFGm#mVq+wO5{Wdx5{E&e2^wlSyG;lO1C@8>Ieg2YR zUB)P7RI=3bC_1dL&1a>Nl=S=P3nEG8E6%_P?}vC-ffc1O@uY^%_gLzLrBEP+Jt)Fh z_})s%JbHxkp@FI<@^f$({gy3P-OXf(u>hAKk}A5BJ}@}A1Y$G?i|=Jl9#ZT+kEpby;lf0_ncQ-ii!(6hZ>1_3hz9*@O(P( zVm`8xvr}Q_wE0P$~W#VYTtLUZ=jT~)TII?mA`Fg@PpQbh(=^t*jLDTHMjp@pJ;4d z4<9{BwLXq8%G|WvUr(GX6*K@61cvjRRWuw1Fc(;cEo^XzXTrkN=65hY!^agMIf7wyi9IZ^%|u z0|&OiB_jFbD-t`DgW3ENS@`1qj)<{P>K&YRfO0)!Cv6w&Q18jZ<9#wNb= zGEN%phs+mfw{{P`Z7C|KzRlsAajAh{^iQR#|!5!l_?;1FuCJwjjYQ+Ie|%#xet@fnu`>Ju<8Oc zRF)i-MP&4mxVUV9+I(ota9f%{GXY^v%3bGb=jQ4`_>7^nerLU4psx*M9PPBfRH`E+9Z-A=FrEAwLNs5s<j)5SV*k%5yewoJR;i3+ycRP>C3m`9!2{HS33l|0HG(5Tz|nat$9|Z z$0HUPU7V>T(`+B4Fix*NLlePkxf3PDST>i;lIuKlXd4A^0OsB7NYK1Q?Cq&RbqIM# zpgsjK6|0PUtMSIZI$aNgZ^Q*sdLWn;8Dh`*o-sYi`VlVj=#J1_)etO=8dhzCg?tFWtB?PUP|d%)&P1*piB0w9MJ)2n;=Dr&7D~41b}! z0c1H!kp-b6&NfQ+gM-7)X$M;LQo1h0x<}Mp@T|kg!DKe1Ovqg@%L-QxI36tL2IOU> z)Ju@g+ya-&!G`P_;mR?`^fow(1%NhCMe)|jogkJL6|mA$-#F5`a=3e^EnO!}J3Ua` z?5JVobb_H{fx#GqjhIi81UH)Rw5ZGx>g03ZR+jpNAwgw{EbV%K=-NabWMG3+#_G-> zz%e~yfVRbhS*FT`2QH`GD6bIJ70M~UIXO8$(VFhQ$6K9(0Q(H={wWVNMjcFK(9L5k8T zXOduywHG57VaR;KXnG?d@K$9Ij{!UgJ4=lT5&f5!n1r8Lc#?zwsw38@D&AspR!fY% z)D)E{rZ~;&Z_a8QN)T))iUSEfg zrj-WV-+%S%@1K{PI+6XM)-~mH_9|V%Gg!emdrOTTEsA-E9ieG&R}o8Dss>yuN1c=Ug$0aQxu?eCd%;xB zoK||^B%y`yH#$ye6TP1|+laW)Mg^+cfqv z9W@{3WIqu~aP)Mb#HnlB(iJ6Yb0*tj5X{ih4 zHT=;W4x0wm_}hncV}mL9v@$RipU`NM6-&&)}A8pgM( z`t-S0W_CFL`x@TSd4NKEtT{Zmv+o{h3tNz;SugM#3jZzAdnQAd;e0GWWMyh{Z)Vih zGLj|>lAF}7L<&)mr9D=|Cy$a|DGXVG%Kn2E!FvWywl=s62{n*+uk>6057Prb-`TB( zt(hpzVR;$v{h2=@F>_9yxLjJLkc{E6-sG_KTfAahvmnQr!!G?AU>z(*^wUl7a#}Bp z(CNLAsErlCr(eeF78Dl5p&Cv?HHC<0JbEGq*5>Fv$Cb(?7c?A*!8&oMipy9MS$6{h zmb_3K?wc%yx6yVafD&A|wALD2pA zr=J2Kc=rr<#Ml=8W)L(!vE`eIBhWZ|2W*+f4QWk@Z?m@Y&1w*l$%~6OJLh6cT3P#% z`UFV=kkH;WubM(G3}*W3TtHN)+1*68OE{#l77Z&|_Xx&a0=dJ3+&AXJ_)JC`0&bo9 zW~?+=397V3+YesyeyH&5up5%$e<-_Vi;Rss4={ z-`=gh-!0UrcN=X4&ygBIzOxDG)I0-!cvx+fe0QmCM?D3>?#d9&>dazWv!Q=P72K{e zu++y!&!<|u{-E^%*H$ir;hOlPfa<|$SQ%hdN6jtrKRk?F% z-R8RK{E5eK$3O+C5PXT%8E5k|@6Pm{^J!1trB$0d`N#REr{jfc>c!lulNelY6#0jz;vst4Wj-V}1_sKTYLwZ6VjY(cKs zOf`O!FeLmz{BZ3&9Bb1qchJ{&eBacYB$>L^p}U#GpVvOVdnc6^BrhF(qnM-HqM}|T zJ)FH+Yy1)~7yKElUN(cxv}3ei>XZHfp$2dN!V|_UH8Of-Otx%67cVFz#G$X5i6-#E zF|&}6!{zEhlQBQlQGz)HDE0Meq=mFqQI`Jw6PwLiO%nctLR7i&H+som6?j7ae=rG} zZvGno`VgCTddlW8EgQg$F&_VXxuUaC%yw<%kL&)rt^s_|f3EBCjDSS#%^@LYnkfYh z`S*8JSm`K-%IdUMJHu2+`jUl-P}Q1X+*7c_zj|MM{9G8(>KRxV~}M^(dTvLkHr z{&$rcR@P_it)hM~p>Rb@Y++<{dU$+>D%wgJWM}F+Ug{i6ZR@_UwD+? zw$Q&f*SlYD9z44}aq|D!tqog49;ijV?!TYfvXN#cAyfWY@e}{gBl-KW{d*@2e(Ju_ z!oovCE5!POlYFVsU!QdUW|Q@b4NX#Jd|K+{+{g6E<s=5QC2s{1Yl*YzsEAI zsLl0D;vTxy`&XZJ&H@1}}kxhZG@3gbMb+#VW)AdR})%_~*6}iTu z5sFiFIIt-#lg7+lS?^KG0y8hux4 zzQ2CLDom61-Qk3U+&3fFdAuC!HPz-%MBO#Dwd;C>#(x+-bM~}dj0WQ_$fEAH?c=6k zRFu-P_Oypf`d-!puy3fFHo7G1fZzV;-$)~#sl?(J z*S?&jr*V9CKw9y%Ru_ianBLdf+NUIAT>LjW*^AHIUNk=9cFcDPG)BbxQbY;Qp1A^0 zL{l|Ls*L`};eal1GN}!Qv71N^hx)cAty*>OT-p$=Yar1SwHPAmU}K3<0yqJo>Cp!5 zZK?g$Lg%Y)FEajV`^c?D=rn{5M9XPD2dMX}%iZ-`v{(;{nR4lFedHd;REzYJD)RN)8N6Nq>DotKlB@U9QLw_{&wY8&e6^JDc)gXp+s<>rpN zi%i^P;p+W)E8q7f{Oq z0OaBma#B+(Ok1y&fG;FVGV=iY=TgzvIh8>Nk`fiCkaIMR0c+1=FssfdJ}f+bSV{n@ zQO;NRQdwMCWZ-qW#`>gXl=Sle!>BsW_PjAS!GK32Ec+M5ghy%3-$0Xj({#uP1~JxBJuF>!lusSawmeX$`GLJ`P?-}LIy z&0}s&&YhQ}P>{{`eV;~e$kyJT$?O84UmWrB3?44;s|>~+$N@}{3S!QjE%@sjBA6LV z&ZC%1#w%c15(1S2zSX3|jTN%^0&h?Ki;O8Edf1dD0}APL+*z7x)!l{nfFXjwrap}( z@+_scWSE+er)Ykeg6jemN*7rOwxXqyi7w*fH_gv^`$D`@gcO$xYZ@==VBon2+YHVO zG^;px%;WfipU#l;ktYExU%A1n8(9x0(M@KTk}}eWdh^TW6p$1Fdm3yxvfRH_%KE_} z5U`DuTAiINUQa)sy13Rj&wZ=LyY(vXElCq1f<{!QY4H9-T&cj9+MqfPcfwlm$S(eW8?jB0XLZ(vuWepT6Q`66(Q_>{Q=XF5rq@X2e z0#h85WjzJG5lwoB;=)Yv9vdC40F!$1<0(zrSXj@RPoAs`k3JkQ6U~}%{qJP@k7k@( z2>j>p&~h*z3)+OV4W)<$jz-IDfYGDO1*WdS7Ggd10>wQ;N0ax>TBrOx+_6qPtEk(O z06jS%qo!+fdsJ zn=+cZv14muCV;_h@z*V{bGGUDm@MZvK!Dk(<63aR;zB^ zKWj;tjhMC5W=Ts+eNRtMl#O;DqGnsqn)MZ3OTu#D+)4XWQ|(Uqk)qHRIXlMr!vXxO zckVO{Pdqi%({l(XmP7g5PP7qG{<1SOo@BX)ccR4t`j=WgX0j6Q4Oca(+w{O*sg^e9 zAsUIQLFz;rGoqR>h@?sKW|YD5Ot-Mei(l?Vl$?CB;`$rMzO&Z3nJQfeeK#n6a9baj z(RCN7y-cqUPUtqWWofw*PcD6GSSk~&4pMrsc6srk8=l8^1a zIyg1w(SbdgU)MP=N&Ti@*Zo6VcBH%`GYiW%FFEOynXmphS<5uC8989ab5Apm#>*~u zi%xxg0WfH3NSkT)_Fj&;4kh26i_fsS5P9Z0(#;2-(ky42ynlMFRot~TaYGDs$?NVM zC^FaDOEaYE53lOxdbkH3Tlnp@s+>1ZW-qfezn&G7+Co(wIE%$h-Qe)8aUr;7y%ZF1Dh%NINe0@`BUVjx)JtwiyBLSl3-PGiC_% zZ)-f`sAiKxwbOPzax%!EkqE#{Ly4BtQ^U%_@wBLJ-;RbeMLvbc5+~&~_l!*+hrZ=G z!9vpv%r5Jj``Gb9>Df*@Knbm4ZQeQ`)g15XnR3;AYmq|;ITeqPml^;%ZO-wbC!RlF zaXEO#I`$Ao3y~VDS2-Q)F`FwB__SRk z%iKE!l`Pqw?mxxet41x_!|S)l>vA)0lw@bG^?K3yQS;BK?uXQ=8kW7)E*o_x|Bc?Z z?QW&Ix|JtS)*tU-mNqfOx$UD-T@$9X_^+Z#LD3}D&cnY7EU5|qt`FyvD^tY$_U3{! zHA9$Y$gRo+y_EX-1zJt)^{8eO)X&dLN^BhxQt?cKrg{>;yOgddwWUBgZMa@#wlKvZ xyLHn|Ar-Dv*pYBmV0X`k=yQA~apQ~LgV*gEZ3z8!tb%_gSWdAxZa#PY{{TVRZF>L! literal 29304 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 literal 11242 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 diff --git a/vcell-client/UserDocumentation/originalXML/topics/image/FileNewMathModelMenuItem.PNG b/vcell-client/UserDocumentation/originalXML/topics/image/FileNewMathModelMenuItem.PNG index 2f11e12f72457bda497227ff749df2937eb239d2..224053e9ccfb3cffdf3a4dab8547fc7b3520c73c 100644 GIT binary patch literal 138597 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 literal 28139 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