Skip to content

Commit f9fe47a

Browse files
committed
Separate repeat dojo queries to private methods
1 parent cb9c465 commit f9fe47a

File tree

1 file changed

+25
-13
lines changed

1 file changed

+25
-13
lines changed

mlapptools.m

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,6 @@
33
%
44
% MLAPPTOOLS methods:
55

6-
properties
7-
% TODO: Move generic portions of repeated dojo query strings here
8-
% to reduce copypasta errors as the number of methods expands
9-
end
10-
116
methods
127
function obj = mlapptools
138
% Dummy constructor so we don't return an empty class instance
@@ -19,33 +14,50 @@
1914
function textAlign(uielement, alignment)
2015
alignment = lower(alignment);
2116
mlapptools.validatealignmentstr(alignment)
22-
mlapptools.togglewarnings('off')
2317

2418
rez = '';
2519
while ~strcmp(rez, sprintf('"%s"', alignment))
2620
try
2721
% Get a handle to the webwindow
28-
win = struct(struct(uielement.Parent).Controller).Container.CEF;
22+
win = mlapptools.getwebwindow(uielement.Parent);
2923

3024
% Find which element of the DOM we want to edit
31-
data_tag = char(struct(uielement).Controller.ProxyView.PeerNode.getId);
25+
data_tag = mlapptools.getdatatag(uielement);
3226

3327
% Manipulate the DOM via a JS command
34-
widgetquerystr = sprintf('dojo.getAttr(dojo.query("[data-tag^=''%s''] > div")[0], "widgetid")', data_tag);
35-
widgetID = win.executeJS(widgetquerystr);
36-
widgetID = widgetID(2:end-1);
28+
widgetID = mlapptools.getwidgetID(win, data_tag);
3729

3830
alignsetstr = sprintf('dojo.style(dojo.query("#%s")[0], "textAlign", "%s")', widgetID, alignment);
3931
rez = win.executeJS(alignsetstr);
40-
catch
32+
catch err
33+
% TODO: Check the error so we're not catching errors indiscriminately
4134
pause(1); % Give the figure (webpage) some more time to load
4235
end
4336
end
44-
mlapptools.togglewarnings('on')
37+
4538
end
4639
end
4740

4841
methods (Static, Access = private)
42+
function [win] = getwebwindow(uifigurewindow)
43+
% TODO: Check that we've been passed an app designer figure window
44+
mlapptools.togglewarnings('off')
45+
win = struct(struct(uifigurewindow).Controller).Container.CEF;
46+
mlapptools.togglewarnings('on')
47+
end
48+
49+
function [data_tag] = getdatatag(uielement)
50+
mlapptools.togglewarnings('off')
51+
data_tag = char(struct(uielement).Controller.ProxyView.PeerNode.getId);
52+
mlapptools.togglewarnings('on')
53+
end
54+
55+
function [widgetID] = getwidgetID(win, data_tag)
56+
widgetquerystr = sprintf('dojo.getAttr(dojo.query("[data-tag^=''%s''] > div")[0], "widgetid")', data_tag);
57+
widgetID = win.executeJS(widgetquerystr);
58+
widgetID = widgetID(2:end-1);
59+
end
60+
4961
function togglewarnings(togglestr)
5062
switch lower(togglestr)
5163
case 'on'

0 commit comments

Comments
 (0)