Mercurial > hg > ltpda
view m-toolbox/classes/@LTPDAworkbench/LTPDAworkbench.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children | a26669b59d7e |
line wrap: on
line source
% LTPDAWORKBENCH creates a new LTPDA Workbench. % % CALL: % >> LTPDAworkbench % >> wb = LTPDAworkbench % returns a handle to the object % % M Hewitson 23-11-08 % % $Id: LTPDAworkbench.m,v 1.52 2011/02/22 15:47:04 hewitson Exp $ % % >> wb = LTPDAworkbench('foo.lwb') % load a workbench from file % >> wb = LTPDAworkbench('foo.m') % Create a workbench with a % pipeline constructed from the M-file of LTPDA commands. % >> wb = LTPDAworkbench(objs) % create a workbench with one % pipeline for each of the objects. classdef LTPDAworkbench < handle %------------------------------------------------ %---------- Private read-only Properties -------- %------------------------------------------------ properties (SetAccess = public) mp = []; name = ''; executing = false; UUID = []; end %----------------------------------------- % Public methods %----------------------------------------- methods % Construct a new workbench function wb = LTPDAworkbench(varargin) % c = mfilename('fullpath'); % d = fileparts(c); % % add jar file to the java path % mpipelineJar = fullfile(d, 'MPipeline.jar'); % javaaddpath(mpipelineJar); twb = []; twb = getappdata(0, 'LTPDAworkbench'); wb.UUID = ['LWB_' num2str(round(cputime.*100))]; if isa(twb, 'LTPDAworkbench') disp('*** Found existing workbench.') wb = twb; awtinvoke(wb.mp, 'setVisible', 'true'); else wfile = which(mfilename); [path, name, ext] = fileparts(wfile); libpath = fullfile(path, ''); libfile = fullfile(libpath, 'lib.mat'); switch nargin case 0 % Create a new LTPDAworkbench prefs = getappdata(0, 'LTPDApreferences'); wb.mp = awtcreate('mpipeline.main.MainWindow', 'Ljava.lang.String;Lmpipeline.ltpdapreferences.LTPDAPreferences;', prefdir, prefs); if isempty(wb.mp) error('Failed to create the workbench java object. Contact your nearest LTPDA developer.'); end pause(0.1); % load library 'lib' try in = load(libfile); % set library awtinvoke(wb.mp, 'setLibrary', in.lib); % javaMethodEDT('setLibrary', wb.mp, in.lib); pause(0.1); catch warning('!!! Can''t open library, rebuilding it'); lib = wb.rebuildLibrary(); pause(0.1); save(libfile, 'lib') end % Set the repository manager to the workbench rm = LTPDARepositoryManager(); awtinvoke(wb.mp, 'setRepositoryManager', rm.manager); % javaMethodEDT('setRepositoryManager', wb.mp, rm.manager); pause(0.1); % refresh library tree awtinvoke(wb.mp, 'refreshLibraryTree'); % javaMethodEDT('refreshLibraryTree', wb.mp); pause(0.1); % set instance identifier to the workbench awtinvoke(wb.mp, 'setInstanceIdentifier', wb.UUID); % javaMethodEDT('setInstanceIdentifier', wb.mp, wb.UUID); pause(0.1); % Set the instance identifier awtinvoke(wb.mp, 'setInstanceIdentifier', wb.UUID); % Show the workbench awtinvoke(wb.mp, 'setVisible', 'true'); % javaMethodEDT('setVisible', wb.mp, true); pause(0.1); end %%%%%%%%%% Controls-tab (main) buttons %%%%%%%%%% %--- Run button h = handle(wb.mp.getRunBtn, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_runPipeline}); %--- Stepforward button h = handle(wb.mp.getStepForwardBtn, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_stepForward}); %--- Stepbackward button h = handle(wb.mp.getStepBackwardsBtn, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_stepBackwards}); %--- Skipforward button h = handle(wb.mp.getSkipForwardBtn, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_skipForward}); %--- Reset button h = handle(wb.mp.getResetBtn, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_reset}); %%%%%%%%%% Controls-tab (helper) buttons %%%%%%%%%% %----Save objects button h = handle(wb.mp.getSaveObjectBtn, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_saveObjects}); %---- Export to WS button h = handle(wb.mp.getExportWorkspaceBtn, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_exportWS}); %--- Explore button h = handle(wb.mp.getExploreBtn, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_explore}); %--- Plot button h = handle(wb.mp.getPlotBtn, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_plot}); %---- Plot history of selected object button h = handle(wb.mp.getHistoryBtn, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_plotHistory}); %---- Display selected objects to terminal button h = handle(wb.mp.getDisplayBtn, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_display}); %----Table button h = handle(wb.mp.getTableBtn, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_table}); %----Report h = handle(wb.mp.getReportBtn, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_report}); % %---- Verbosity combo % h = handle(wb.mp.getVebosityCombo, 'callbackproperties'); % set(h, 'ActionPerformedCallback', {@wb.cb_changeVerbosity}); %%%%%%%%%% 'Tools' Menu %%%%%%%%%% %---- 'Plot selected' menu item h = handle(wb.mp.getPlotSelectedMenuItem, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_plot}); %---- 'Explore selected' menu item h = handle(wb.mp.getExploreSelectedMenuItem, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_explore}); %---- 'LTPDA Preferences' menu item h = handle(wb.mp.getLtpdaPreferencesMenuItem, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_launchLTPDApreferences}); %---- 'LTPDA Repository GUI' menu item h = handle(wb.mp.getLtpdaRepoGuiMenuItem, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_launchRepogui}); %---- 'Spectral Window Viewer' menu item h = handle(wb.mp.getLtpdaSpecwinViewerMenuItem, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_launchSpecwinViewer}); %---- 'Object Constructor Helper' menu item h = handle(wb.mp.getLtpdaConstructorHelperMenuItem, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_launchConstructor}); %---- 'LTPDA Signal Builder' menu item h = handle(wb.mp.getLtpdaSignalBuilderMenuItem, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_launchSigBuilder}); %---- 'Rebuild LTPDA Library' menu item h = handle(wb.mp.getRebuildLibraryMenuItem, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_rebuildLibrary}); %%%%%%%%%% 'Pipeline' Menu %%%%%%%%%% %---- Export pipeline to terminal item h = handle(wb.mp.getExportToTerminalMenuItem, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_export2terminal}); %---- Export pipeline to m-file h = handle(wb.mp.getExportToMFileMenuItem, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_export2mfile}); %%%%%%%%%% 'Help' Menu %%%%%%%%%% %---- Block Doc h = handle(wb.mp.getHelpBlockDocMenuItem, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_blockdoc}); %%%%%%%%%% 'File' Menu %%%%%%%%%% %----Run execution plan h = handle(wb.mp.getPlanRunMenuItem, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_executePlan}); %----Import from objects h = handle(wb.mp.getWBOpenFromObjectMenuItem, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_importWBfromObjects}); %---- Import pipeline from M-file h = handle(wb.mp.getImportFromMfileMenuItem, 'callbackproperties'); % set(h, 'ActionPerformedCallback', {@wb.cb_importFromMfile}); %---- Import pipeline from workspace h = handle(wb.mp.getImportFromWorkspaceMenuItem, 'callbackproperties'); % set(h, 'ActionPerformedCallback', {@wb.cb_importFromWorkspace}); %%%%%%%%%% Repository buttons %%%%%%%%%% %----Submit to workspace h = handle(wb.mp.getRepoSubmitTBB, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_submitObjects}); %----Open repository manager h = handle(wb.mp.getRepoConnectTBB, 'callbackproperties'); set(h, 'ActionPerformedCallback', {@wb.cb_openRepoManagerGUI}); %%%%%%%%%% other %%%%%%%%%% %--- called when window is closed h = handle(wb.mp, 'callbackproperties'); set(h, 'WindowClosedCallback', {@wb.cb_guiClosed}); set(h, 'PropertyChangeCallback', {@wb.cb_applyprefs}); % set the spectral window types wtl = wb.mp.getWindowTypes(); wtl.clear(); winTypes = specwin.getTypes; for kk=1:numel(winTypes) wtl.add(winTypes{kk}); end % create progress bar when loading built-in models pd = mpipeline.dialogs.ProgressDialog(wb.mp, false, 'starting', 1); warning('off', 'MATLAB:JavaEDTAutoDelegation') pd.setTitle('Uploading built-in models...'); pd.setVisible(true); warning('on', 'MATLAB:JavaEDTAutoDelegation') amdls = wb.mp.getBuiltinModels(''); amdls.clear(); cls = utils.helper.ltpda_userclasses; for jj=1:numel(cls) cl = cls{jj}; if ~any(strcmp(cl, {'plist'})) mdls = eval([cl '.getBuiltInModels;']); pd.setMessage(['Adding ' cl ' models']); pd.setMaxValue(size(mdls,1)); pd.setValue(0); for kk=1:size(mdls,1) pd.increment(); htxt = help([cl '_model_' mdls{kk,1}]); pl = []; try pl = eval([cl '_model_' mdls{kk,1} '(''plist'')']); end if ~isa(pl, 'plist') pl = plist; end try wb.mp.addBuiltInModel(cl, mdls{kk,1}, ['<html><p>' htxt '</p></html>'], LTPDAworkbench.mpl2jpl(pl)) catch err fprintf(2, '\n### Failure in uploading the model %s.\n\n', mdls{kk,1}); end end end end % get rid of progress bar pd.dispose(); clear pd; % Set LTPDA prefs % pl = LTPDAprefs.getPrefsPlist(); % wb.mp.uploadLtpdaPreferences(LTPDAworkbench.mpl2jpl(pl)); % Set units units = unit.supportedUnits; prefixes = unit.supportedPrefixes; wb.mp.clearUnits; wb.mp.clearPrefixes; for ii=1:numel(units) wb.mp.addUnit(units{ii}); end for ii=1:numel(prefixes) wb.mp.addPrefix(prefixes{ii}); end % set working directory wb.mp.setWorkingDir(pwd); end % setappdata(0, 'LTPDAworkbench', wb); end % End constructor end % End public methods methods (Access=public) varargout = addErrorMessage(varargin) varargout = addMessage(varargin) varargout = addWarningMessage(varargin) % Display method to make a quiet output function display(varargin) wb = varargin{1}; end end methods(Access=private) % Controls tab (main) buttons varargout = cb_runPipeline(varargin) varargout = cb_stepForward(varargin) varargout = cb_skipForward(varargin) varargout = cb_stepBackwards(varargin) varargout = cb_reset(varargin) % Controls tab (helper) buttons varargout = cb_saveObjects(varargin) varargout = cb_exportWS(varargin) varargout = cb_explore(varargin) varargout = cb_plot(varargin) varargout = cb_plotHistory(varargin) varargout = cb_display(varargin) varargout = cb_table(varargin) varargout = cb_report(varargin) varargout = cb_changeVerbosity(varargin) % 'Tools' Menu varargout = cb_launchLTPDApreferences(varargin) varargout = cb_launchRepogui(varargin) varargout = cb_launchSpecwinViewer(varargin) varargout = cb_launchConstructor(varargin) varargout = cb_launchSigBuilder(varargin) varargout = cb_rebuildLibrary(varargin) % 'Pipeline' Menu varargout = cb_export2terminal(varargin) varargout = cb_export2mfile(varargin) % 'File' Menu varargout = cb_importFromMfile(varargin) varargout = cb_importFromWorkspace(varargin) varargout = cb_executePlan(varargin) varargout = cb_importWBfromObjects(varargin) % 'Help' Menu varargout = cb_blockdoc(varargin) % Repository Buttons varargout = cb_submitObjects(varargin) varargout = cb_openRepoManagerGUI(varargin) % other varargout = cb_guiClosed(varargin) varargout = cb_applyprefs(varargin); end methods (Static=true) varargout = getWS_VarName(varargin); varargout = parseBlocks(varargin); varargout = clearBlockVariables(varargin); varargout = executeCommands(varargin) varargout = executeConstants(varargin) varargout = run(varargin) varargout = mpl2jpl(varargin) varargout = jpl2mpl(varargin) varargout = parseCmd(varargin) varargout = rebuildLibrary(varargin); end %------------------------------------------------ % Private static methods %------------------------------------------------ methods(Access=private, Static=true) varargout = minfo2algo(varargin) varargout = parse(varargin) end end