]> Creatis software - CreaPhase.git/blobdiff - octave_packages/java-1.2.8/listdlg.m
Add a useful package (from Source forge) for octave
[CreaPhase.git] / octave_packages / java-1.2.8 / listdlg.m
diff --git a/octave_packages/java-1.2.8/listdlg.m b/octave_packages/java-1.2.8/listdlg.m
new file mode 100644 (file)
index 0000000..a3fa7af
--- /dev/null
@@ -0,0 +1,126 @@
+## Copyright (C) 2010 Martin Hepperle
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; If not, see <http://www.gnu.org/licenses/>.
+
+## -*- texinfo -*-
+## @deftypefn {Function file} {@var{[SEL,OK]} =} listdlg (@var{KEY} ,@var{VALUE} [, @var{KEY} ,@var{VALUE}, ...]])
+##
+## Returns the user's inputs from a list dialog box in form of a vector of 
+## selection indices SEL and a flag OK indicating how the user closed the dialog box.
+## The returned flag OK is 1 if the user closed the box with the OK button, 
+## otherwise it is 0 and SEL is empty. 
+## The indices in SEL are 1 based, i.e. the first list item carries the index 1.
+##
+## The arguments are specified in form of @var{KEY}, @var{VALUE} pairs. 
+## At least the 'ListString' argument pair must be specified.
+##
+## @var{KEY}s and @var{VALUE}s pairs can be selected from the following list:
+##
+## @table @samp
+## @item ListString
+##    a cell array of strings comprising the content of the list.
+## @item SelectionMode
+##    can be either @samp{Single} or @samp{Multiple}.
+## @item ListSize
+##    a vector with two elements [width, height] defining the size of the list field in pixels.
+## @item InitialValue
+##    a vector containing 1-based indices of preselected elements.
+## @item Name
+##    a string to be used as the dialog caption.
+## @item PromptString
+##    a cell array of strings to be displayed above the list field.
+## @item OKString
+##    a string used to label the OK button.
+## @item CancelString
+##    a string used to label the Cancel  button.
+## @end table
+##
+## Example:
+##
+## @example
+##   [sel, ok] = listdlg ( 'ListString',@{'An item', 'another', 'yet another'@}, 'SelectionMode','Multiple' );
+##   if ok == 1
+##      imax = length(sel);
+##      for i=1:1:imax
+##         disp(sel(i));
+##      end
+##   end
+## @end example
+##
+## @end deftypefn
+## @seealso{errordlg, helpdlg, inputdlg, questdlg, warndlg}
+
+function varargout = listdlg(varargin)
+
+   if nargin < 2
+     print_usage ();
+     return;
+   end
+   
+   listcell = {''};
+   selmode = 'single';
+   listsize = [300,160];   % vector!
+   initialvalue = [1];     % vector!
+   name = '';
+   prompt = {''};
+   okstring = 'OK';
+   cancelstring = 'Cancel';
+   
+   % handle key, value pairs
+   for i=1:2:nargin-1
+      if strcmp(varargin{i},'ListString')
+         listcell = varargin{i+1};
+      elseif strcmp(varargin{i},'SelectionMode')
+         selmode = varargin{i+1};
+      elseif strcmp(varargin{i},'ListSize')
+         listsize = varargin{i+1};
+      elseif strcmp(varargin{i},'InitialValue')
+         initialvalue = varargin{i+1};
+      elseif strcmp(varargin{i},'Name')
+         name = varargin{i+1};
+      elseif strcmp(varargin{i},'PromptString')
+         prompt = varargin{i+1};
+      elseif strcmp(varargin{i},'OKString')
+         okstring = varargin{i+1};
+      elseif strcmp(varargin{i},'CancelString')
+         cancelstring = varargin{i+1};
+      end      
+   end
+
+   % make sure prompt strings are a cell array
+   if ! iscell(prompt)
+      prompt = {prompt};
+   end
+
+   % make sure listcell strings are a cell array
+   if ! iscell(listcell)
+      listcell = {listcell};
+   end
+
+   
+   % transform matrices to cell arrays of strings
+   listsize = arrayfun(@num2str,listsize,'UniformOutput',false);
+   initialvalue = arrayfun(@num2str,initialvalue,'UniformOutput',false);
+   
+   ret = java_invoke ('org.octave.JDialogBox', 'listdlg', listcell, ...
+                      selmode, listsize, initialvalue, name, prompt, ...
+                      okstring, cancelstring );
+   if length(ret) > 0
+      varargout = {ret, 1};
+   else
+      varargout = {{}, 0};
+   end
+  
+
+end