use of cbit.vcell.client.desktop.DocumentWindow in project vcell by virtualcell.
the class NetworkFreePanel method createModel.
private void createModel() {
DocumentWindow dw = (DocumentWindow) BeanUtils.findTypeParentOfComponent(this, DocumentWindow.class);
BioModelWindowManager bmwm = (BioModelWindowManager) (dw.getTopLevelWindowManager());
RequestManager rm = dw.getTopLevelWindowManager().getRequestManager();
rm.createBioModelFromApplication(bmwm, "Test", fieldSimulationContext);
}
use of cbit.vcell.client.desktop.DocumentWindow in project vcell by virtualcell.
the class ClientRequestManager method newDocument.
/**
* Insert the method's description here.
* Creation date: (5/21/2004 4:20:47 AM)
* @param documentType int
*/
public AsynchClientTask[] newDocument(TopLevelWindowManager requester, final VCDocument.DocumentCreationInfo documentCreationInfo) {
// gcwtodo
AsynchClientTask createNewDocumentTask = new AsynchClientTask("Creating New Document", AsynchClientTask.TASKTYPE_SWING_BLOCKING) {
@Override
public void run(Hashtable<String, Object> hashTable) throws Exception {
VCDocument doc = (VCDocument) hashTable.get("doc");
DocumentWindowManager windowManager = createDocumentWindowManager(doc);
DocumentWindow dw = getMdiManager().createNewDocumentWindow(windowManager);
if (windowManager != null) {
hashTable.put("windowManager", windowManager);
}
setFinalWindow(hashTable, dw);
}
};
if (documentCreationInfo.getDocumentType() == VCDocumentType.MATHMODEL_DOC && documentCreationInfo.getOption() == VCDocument.MATH_OPTION_SPATIAL_NEW) {
final AsynchClientTask createSpatialMathModelTask = new AsynchClientTask("creating mathmodel", AsynchClientTask.TASKTYPE_NONSWING_BLOCKING) {
@Override
public void run(Hashtable<String, Object> hashTable) throws Exception {
Geometry geometry = null;
geometry = (Geometry) hashTable.get("doc");
MathModel mathModel = createMathModel("Untitled", geometry);
mathModel.setName("MathModel" + (getMdiManager().getNumCreatedDocumentWindows() + 1));
hashTable.put("doc", mathModel);
}
};
requester.createGeometry(null, new AsynchClientTask[] { createSpatialMathModelTask, createNewDocumentTask }, "Choose geometry type to start MathModel creation", "Create MathModel", null);
return null;
}
/* asynchronous and not blocking any window */
AsynchClientTask[] taskArray = null;
if (documentCreationInfo.getPreCreatedDocument() == null) {
AsynchClientTask[] taskArray1 = createNewDocument(requester, documentCreationInfo);
taskArray = new AsynchClientTask[taskArray1.length + 1];
System.arraycopy(taskArray1, 0, taskArray, 0, taskArray1.length);
} else {
taskArray = new AsynchClientTask[2];
taskArray[0] = new AsynchClientTask("Setting document...", AsynchClientTask.TASKTYPE_NONSWING_BLOCKING) {
@Override
public void run(Hashtable<String, Object> hashTable) throws Exception {
hashTable.put("doc", documentCreationInfo.getPreCreatedDocument());
}
};
}
taskArray[taskArray.length - 1] = createNewDocumentTask;
return taskArray;
}
use of cbit.vcell.client.desktop.DocumentWindow in project vcell by virtualcell.
the class VCellClientTest method main.
/**
* Starts the application.
* @param args an array of command-line arguments
*/
public static void main(java.lang.String[] args) {
class ParseVCellUserEvents implements Runnable {
AWTEvent event;
public ParseVCellUserEvents(AWTEvent event) {
this.event = event;
}
@Override
public void run() {
if (event instanceof MouseEvent) {
MouseEvent mouseEvent = (MouseEvent) event;
Object details = null;
if (mouseEvent.getID() == MouseEvent.MOUSE_RELEASED) {
if (mouseEvent.getComponent() instanceof JTable) {
JTable comp = (JTable) mouseEvent.getComponent();
int[] selRows = comp.getSelectedRows();
if (selRows != null && selRows.length > 0) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < selRows.length; i++) {
for (int j = 0; j < comp.getColumnCount(); j++) {
try {
sb.append((j == 0 ? "" : ",") + comp.getColumnName(j) + "='" + comp.getModel().getValueAt(selRows[i], j) + "'");
} catch (Exception e) {
e.printStackTrace();
}
}
}
details = sb.toString();
}
} else if (mouseEvent.getComponent() instanceof JTree) {
JTree comp = (JTree) mouseEvent.getComponent();
TreePath treePath = comp.getSelectionPath();
if (treePath != null) {
details = treePath.getLastPathComponent();
// BioModel, MathModel, Geometry document tree selections
if (details instanceof BioModelNode) {
// VCellBasicCellRenderer.VCDocumentInfoNode
BioModelNode bioModelNode = (BioModelNode) details;
boolean isVCDocumentInfo = bioModelNode.getUserObject() instanceof VCDocumentInfo;
boolean isBioModelsNetModelInfo = bioModelNode.getUserObject() instanceof BioModelsNetModelInfo;
if (!isVCDocumentInfo && bioModelNode.getChildCount() > 0 && bioModelNode.getUserObject() instanceof VCellBasicCellRenderer.VCDocumentInfoNode) {
TreeNode treeNode = bioModelNode.getFirstChild();
if (treeNode instanceof BioModelNode && ((BioModelNode) treeNode).getUserObject() instanceof VCDocumentInfo) {
details = ((BioModelNode) treeNode).getUserObject();
}
} else if (isBioModelsNetModelInfo) {
details = BioModelsNetModelInfo.class.getSimpleName() + " '" + ((BioModelsNetModelInfo) bioModelNode.getUserObject()).getName() + "'";
}
}
}
} else if (mouseEvent.getComponent() instanceof JTabbedPane) {
JTabbedPane comp = (JTabbedPane) mouseEvent.getComponent();
details = "'" + comp.getTitleAt(comp.getSelectedIndex()) + "'";
} else if (mouseEvent.getComponent() instanceof JMenuItem) {
JMenuItem comp = (JMenuItem) mouseEvent.getComponent();
details = "'" + comp.getText() + "'";
} else if (mouseEvent.getComponent() instanceof AbstractButton) {
AbstractButton comp = (AbstractButton) mouseEvent.getComponent();
Boolean bSelected = (comp instanceof JToggleButton ? ((JToggleButton) comp).isSelected() : null);
details = (bSelected != null ? "(" + (bSelected ? "selected" : "unselected") + ")" : "") + "'" + comp.getText() + "'";
} else if (mouseEvent.getComponent() instanceof JComboBox<?>) {
JComboBox<?> comp = (JComboBox<?>) mouseEvent.getComponent();
details = "'" + comp.getSelectedItem().toString() + "'";
} else if (mouseEvent.getComponent() instanceof JList<?>) {
JList<?> comp = (JList<?>) mouseEvent.getComponent();
details = "'" + comp.getSelectedValue() + "'";
} else {
details = "TBD " + mouseEvent.getComponent();
}
Component parentComponent = mouseEvent.getComponent();
StringBuffer parentInfo = new StringBuffer();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(BeanUtils.vcDateFormat, Locale.US);
do {
String title = "";
if (parentComponent instanceof Dialog) {
title = ((Dialog) parentComponent).getTitle();
} else if (parentComponent instanceof Frame) {
title = ((Frame) parentComponent).getTitle();
}
parentInfo.append(parentComponent.getClass().getTypeName() + "(" + parentComponent.getName() + (title != null && title.length() > 0 ? ",title='" + title + "'" : "") + ")");
if (parentComponent instanceof DocumentWindow && ((DocumentWindow) parentComponent).getTopLevelWindowManager() instanceof DocumentWindowManager) {
VCDocument vcDocument = ((DocumentWindowManager) ((DocumentWindow) parentComponent).getTopLevelWindowManager()).getVCDocument();
if (vcDocument != null) {
String date = (vcDocument.getVersion() != null && vcDocument.getVersion().getDate() != null ? simpleDateFormat.format(vcDocument.getVersion().getDate()) : "nodate");
parentInfo.append("doc=" + vcDocument.getDocumentType() + " '" + vcDocument.getName() + "' " + date);
}
}
parentInfo.append(" -> ");
} while ((parentComponent = parentComponent.getParent()) != null);
// try to add event, if full remove an event from the top
while (!recordedUserEvents.offer(mouseEvent.getClickCount() + " " + (details == null ? "null" : details.toString()) + BeanUtils.PLAINTEXT_EMAIL_NEWLINE + parentInfo.toString())) {
recordedUserEvents.poll();
}
}
}
}
}
;
AWTEventListener awtEventListener = new AWTEventListener() {
@Override
public void eventDispatched(final AWTEvent event) {
if (event instanceof MouseEvent) {
if (((MouseEvent) event).getID() == MouseEvent.MOUSE_RELEASED) {
new Thread(new ParseVCellUserEvents(event)).start();
}
}
}
};
Toolkit.getDefaultToolkit().addAWTEventListener(awtEventListener, AWTEvent.MOUSE_EVENT_MASK);
// check synchronize Proxy prefs, Proxy Properties
Preferences prefs = Preferences.userNodeForPackage(RemoteProxyVCellConnectionFactory.class);
Boolean bHttp = (System.getProperty(NetworkProxyUtils.PROXY_HTTP_HOST) == null && System.getProperty(NetworkProxyUtils.PROXY_SOCKS_HOST) == null ? null : System.getProperty(NetworkProxyUtils.PROXY_HTTP_HOST) != null);
String currentProxyHost = (bHttp == null ? null : (bHttp ? System.getProperty(NetworkProxyUtils.PROXY_HTTP_HOST) : System.getProperty(NetworkProxyUtils.PROXY_SOCKS_HOST)));
String currentProxyPort = (bHttp == null ? null : (bHttp ? System.getProperty(NetworkProxyUtils.PROXY_HTTP_PORT) : System.getProperty(NetworkProxyUtils.PROXY_SOCKS_PORT)));
NetworkProxyUtils.setProxyProperties(false, null, prefs.get(NetworkProxyPreferences.prefProxyType, NetworkProxyPreferences.prefProxyType), currentProxyHost, currentProxyPort, prefs.get(NetworkProxyPreferences.prefProxyType, NetworkProxyPreferences.prefProxyType), prefs.get(NetworkProxyPreferences.prefProxyHost, NetworkProxyPreferences.prefProxyHost), prefs.get(NetworkProxyPreferences.prefProxyPort, NetworkProxyPreferences.prefProxyPort));
final boolean IS_DEBUG = ManagementFactory.getRuntimeMXBean().getInputArguments().toString().indexOf("-agentlib:jdwp") > 0;
if (!IS_DEBUG) {
String siteName = VCellSoftwareVersion.fromSystemProperty().getSite().name().toLowerCase();
ConsoleCapture.getInstance().captureStandardOutAndError(new File(ResourceUtil.getLogDir(), "vcellrun_" + siteName + ".log"));
}
Logging.init();
ErrorUtils.setDebug(IS_DEBUG);
if (args != null && args.length >= 1 && args[0].equals("-console")) {
// remove install4j parameter
List<String> newArgs = new ArrayList<String>();
newArgs.addAll(Arrays.asList(args));
newArgs.remove(0);
args = newArgs.toArray(new String[0]);
}
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < args.length; i++) {
stringBuffer.append("arg" + i + "=\"" + args[i] + "\" ");
}
System.out.println("starting with arguments [" + stringBuffer + "]");
System.out.println("Running under Java major version: ONE point " + ResourceUtil.getJavaVersion().toString() + ". Specifically: Java " + (System.getProperty("java.version")) + ", published by " + (System.getProperty("java.vendor")) + ", on the " + (System.getProperty("os.arch")) + " architecture running version " + (System.getProperty("os.version")) + " of the " + (System.getProperty("os.name")) + " operating system");
ClientServerInfo csInfo = null;
String hoststr = System.getProperty(PropertyLoader.vcellServerHost);
String[] hosts = null;
if (hoststr != null) {
StringTokenizer st = new StringTokenizer(hoststr, " ,;");
if (st.countTokens() >= 1) {
hosts = new String[st.countTokens()];
int count = 0;
while (st.hasMoreTokens()) {
hosts[count++] = st.nextToken();
}
}
}
if (hosts == null) {
hosts = new String[1];
}
String user = null;
String password = null;
VCDocument initialDocument = null;
if (args.length == 3) {
hosts[0] = args[0];
user = args[1];
password = args[2];
} else if (args.length == 0) {
// this is ok
} else if (args.length == 1) {
// Check if arg is drag-n-drop file or a 'hostname'
try {
// drag and drop file on install4j VCell launcher will pass filepath as single arg to VCell
File openThisVCellFile = new File(args[0]);
if (openThisVCellFile.exists() && openThisVCellFile.isFile()) {
initialDocument = startupWithOpen(args[0]);
}
} catch (Exception e) {
e.printStackTrace();
// continue to hostname check
}
// If startup file not exist assume arg is a hostname
if (initialDocument == null) {
hosts[0] = args[0];
}
// If install4j drag-n-drop, hosts[0] stays null and host is assumed to be loaded from a client property
} else if (args.length == 2 && args[0].equals("-open")) {
// hosts[0] = "-local";
initialDocument = startupWithOpen(args[1]);
} else {
System.out.println("usage: VCellClientTest ( ((-local|host[:port]) [userid password]) | ([-open] filename) )");
System.exit(1);
}
if (hosts[0] != null && hosts[0].equalsIgnoreCase("-local")) {
csInfo = ClientServerInfo.createLocalServerInfo(user, (password == null || password.length() == 0 ? null : new UserLoginInfo.DigestedPassword(password)));
} else {
String[] hostParts = hosts[0].split(":");
String apihost = hostParts[0];
int apiport = Integer.parseInt(hostParts[1]);
csInfo = ClientServerInfo.createRemoteServerInfo(apihost, apiport, user, (password == null || password.length() == 0 ? null : new UserLoginInfo.DigestedPassword(password)));
}
try {
String propertyFile = PropertyLoader.getProperty(PropertyLoader.propertyFileProperty, "");
if (propertyFile.length() > 0) {
PropertyLoader.loadProperties(ArrayUtils.addAll(REQUIRED_CLIENT_PROPERTIES, REQUIRED_LOCAL_PROPERTIES));
try {
VCMongoMessage.enabled = true;
VCMongoMessage.serviceStartup(ServiceName.client, null, null);
PropertyLoader.sendErrorsToMongo();
} catch (Exception e) {
System.out.println("failed to start Mongo logging");
}
} else {
PropertyLoader.loadProperties(REQUIRED_CLIENT_PROPERTIES);
VCMongoMessage.enabled = false;
}
// call in main thread, since it's quick and not necessarily thread safe
ResourceUtil.setNativeLibraryDirectory();
vcellClient = VCellClient.startClient(initialDocument, csInfo);
VCellClientDataService vcellClientDataService = new VCellClientDataServiceImpl(vcellClient);
VCellProxyServer.startVCellVisitDataServerThread(vcellClientDataService);
// starting loading libraries
new LibraryLoaderThread(true).start();
try {
PythonSupport.verifyInstallation(PythonPackage.values());
} catch (Exception e) {
e.printStackTrace(System.out);
}
// SimulationService.Iface simService = new SimulationServiceImpl();
// VCellIJServer.startVCellVisitDataServerThread(simService, false);
} catch (Throwable exception) {
ErrorUtils.sendRemoteLogMessage(csInfo.getUserLoginInfo(), csInfo.toString() + "\nvcell startup failed\n\n" + exception.getMessage());
JOptionPane.showMessageDialog(null, exception.getMessage(), "Fatal Error", JOptionPane.OK_OPTION);
System.err.println("Exception occurred in main() of VCellApplication");
exception.printStackTrace(System.out);
}
}
use of cbit.vcell.client.desktop.DocumentWindow in project vcell by virtualcell.
the class ClientMDIManager method createDocumentWindow.
/**
* Insert the method's description here.
* Creation date: (5/5/2004 9:07:12 PM)
*/
private DocumentWindow createDocumentWindow() {
DocumentWindow documentWindow = new DocumentWindow();
// stagger 90% screen size windows
documentWindow.setSize(JFRAME_SIZE);
BeanUtils.centerOnScreen(documentWindow);
Point p = documentWindow.getLocation();
int numDocWindow = Math.max(0, getWindowsHash().size() - 3);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int offset = 20;
int newX = p.x + offset * numDocWindow;
int newY = p.y + offset * numDocWindow;
if (newX < screenSize.width && newY < screenSize.height) {
documentWindow.setLocation(newX, newY);
}
// }
return documentWindow;
}
use of cbit.vcell.client.desktop.DocumentWindow in project vcell by virtualcell.
the class PointSpreadFunctionManagement method importPointSpreadFunction.
public void importPointSpreadFunction() {
AsynchClientTask[] taskArray = new AsynchClientTask[3];
// select the desired PSF file
taskArray[0] = new AsynchClientTask("Select a file", AsynchClientTask.TASKTYPE_SWING_BLOCKING) {
public void run(Hashtable<String, Object> hashTable) throws Exception {
ChoosePSFFile(hashTable);
}
};
// create and save the field data object
taskArray[1] = new AsynchClientTask("Import objects", AsynchClientTask.TASKTYPE_NONSWING_BLOCKING) {
public void run(Hashtable<String, Object> hashTable) throws Exception {
Component requesterComponent = parentWindow;
DocumentWindow documentWindow = (DocumentWindow) BeanUtils.findTypeParentOfComponent(requesterComponent, DocumentWindow.class);
DocumentManager documentManager = documentWindow.getTopLevelWindowManager().getRequestManager().getDocumentManager();
if (documentManager == null) {
throw new RuntimeException("Not connected to server.");
}
// the following line of code may modify initialFieldDataName
// normal file name
checkNameAvailability(hashTable, false, documentManager, requesterComponent);
File filePSF = (File) hashTable.get("filePSF");
String initialFieldDataName = (String) hashTable.get("initialFieldDataName");
ImageDataset imageDataset = ImageDatasetReaderService.getInstance().getImageDatasetReader().readImageDataset(filePSF.getAbsolutePath(), null);
Extent extent = imageDataset.getExtent();
ISize isize = imageDataset.getISize();
Origin origin = new Origin(0, 0, 0);
CartesianMesh cartesianMesh = CartesianMesh.createSimpleCartesianMesh(origin, extent, isize, new RegionImage(new VCImageUncompressed(null, new byte[isize.getXYZ()], extent, isize.getX(), isize.getY(), isize.getZ()), 0, null, null, RegionImage.NO_SMOOTHING));
// save field data
int NumTimePoints = imageDataset.getImageTimeStamps().length;
int NumChannels = 1;
double[][][] pixData = new double[NumTimePoints][NumChannels][];
for (int i = 0; i < NumTimePoints; i++) {
// images according to zIndex at specific time points(tIndex)
short[] originalData = imageDataset.getPixelsZ(0, i);
double[] doubleData = new double[originalData.length];
for (int j = 0; j < originalData.length; j++) {
doubleData[j] = 0x0000ffff & originalData[j];
}
pixData[i][NumChannels - 1] = doubleData;
}
FieldDataFileOperationSpec fdos = new FieldDataFileOperationSpec();
// try {
// fdos = ClientRequestManager.createFDOSFromImageFile(filePSF, false, null);
// } catch (DataFormatException ex) {
// throw new Exception("Cannot read image " + filePSF.getAbsolutePath()+"\n"+ex.getMessage());
// }
fdos.owner = documentManager.getUser();
fdos.opType = FieldDataFileOperationSpec.FDOS_ADD;
fdos.cartesianMesh = cartesianMesh;
fdos.doubleSpecData = pixData;
fdos.specEDI = null;
fdos.varNames = new String[] { SimulationContext.FLUOR_DATA_NAME };
fdos.times = imageDataset.getImageTimeStamps();
fdos.variableTypes = new VariableType[] { VariableType.VOLUME };
fdos.origin = origin;
fdos.extent = extent;
fdos.isize = isize;
ExternalDataIdentifier pSFImageEDI = documentManager.saveFieldData(fdos, initialFieldDataName);
hashTable.put("pSFImageEDI", pSFImageEDI);
}
};
// create a data symbol for the PSF image saved above as field data
taskArray[2] = new AsynchClientTask("Display Data Symbols", AsynchClientTask.TASKTYPE_SWING_BLOCKING) {
public void run(Hashtable<String, Object> hashTable) throws Exception {
// --- create the data symbols associated with the time series
String initialFieldDataName = (String) hashTable.get("initialFieldDataName");
ExternalDataIdentifier pSFImageEDI = (ExternalDataIdentifier) hashTable.get("pSFImageEDI");
String fluorName = "psf_" + initialFieldDataName;
DataSymbol fluorDataSymbol = new FieldDataSymbol(fluorName, DataSymbolType.POINT_SPREAD_FUNCTION, simulationContext.getDataContext(), simulationContext.getModel().getUnitSystem().getInstance_TBD(), pSFImageEDI, SimulationContext.FLUOR_DATA_NAME, VariableType.VOLUME.getTypeName(), 0D);
simulationContext.getDataContext().addDataSymbol(fluorDataSymbol);
}
};
Hashtable<String, Object> hash = new Hashtable<String, Object>();
ClientTaskDispatcher.dispatch(parentWindow, hash, taskArray, false, true, null);
}
Aggregations