1 /***********************************************************************/
2 /* Open Visualization Data Explorer */
3 /* (C) Copyright IBM Corp. 1989,1999 */
4 /* ALL RIGHTS RESERVED */
5 /* This code licensed under the */
6 /* "IBM PUBLIC LICENSE - Open Visualization Data Explorer" */
7 /***********************************************************************/
8
9 #include <dxconfig.h>
10 #include "../base/defines.h"
11
12
13
14
15 #include "NoUndoDXAppCommand.h"
16 #include "DXApplication.h"
17 #include "MsgWin.h"
18 #include "Network.h"
19 #include "SequencerNode.h"
20 #include "ToggleButtonInterface.h"
21
22
NoUndoDXAppCommand(const char * name,CommandScope * scope,boolean active,DXApplication * app,DXAppCommandType comType)23 NoUndoDXAppCommand::NoUndoDXAppCommand(const char* name,
24 CommandScope* scope,
25 boolean active,
26 DXApplication *app,
27 DXAppCommandType comType ) :
28 NoUndoCommand(name, scope, active)
29 {
30 this->commandType = comType;
31 this->application = app;
32 }
33
34
doIt(CommandInterface * ci)35 boolean NoUndoDXAppCommand::doIt(CommandInterface *ci)
36 {
37 DXApplication *app = this->application;
38 boolean ret;
39 SequencerNode* seq_node = NULL; // xlC wants this initialized
40
41 ASSERT(app);
42
43 ret = TRUE;
44 switch (this->commandType) {
45
46 case NoUndoDXAppCommand::StartServer:
47 ret = app->postStartServerDialog();
48 break;
49
50 case NoUndoDXAppCommand::ResetServer:
51 ret = app->resetServer();
52 break;
53
54 case NoUndoDXAppCommand::ExecuteOnce:
55 app->getExecCtl()->executeOnce();
56 break;
57
58 case NoUndoDXAppCommand::ExecuteOnChange:
59 app->getExecCtl()->enableExecOnChange();
60 break;
61
62 case NoUndoDXAppCommand::EndExecution:
63 app->getExecCtl()->terminateExecution();
64 break;
65
66 case NoUndoDXAppCommand::OpenNetwork:
67 app->postOpenNetworkDialog();
68 break;
69
70 case NoUndoDXAppCommand::LoadMacro:
71 app->postLoadMacroDialog();
72 break;
73
74 case NoUndoDXAppCommand::AssignProcessGroup:
75 app->postProcessGroupAssignDialog();
76 break;
77
78 #if USE_REMAP // 6/14/93
79 case NoUndoDXAppCommand::RemapInteractorOutputs:
80 if (NOT app->network) {
81 ret = FALSE;
82 } else {
83 Network *n = app->network;
84 boolean remap = n->isRemapInteractorOutputMode();
85 n->setRemapInteractorOutputMode(!remap);
86 this->notifyClients(ToggleButtonInterface::MsgToggleState);
87 }
88 break;
89 #endif
90
91 case NoUndoDXAppCommand::OpenAllColormaps:
92 if (NOT app->network) {
93 ret = FALSE;
94 } else {
95 app->network->openColormap(TRUE);
96 }
97 break;
98
99 case NoUndoDXAppCommand::OpenSequencer:
100 ASSERT(app->network);
101 seq_node = app->network->sequencer;
102 if (NOT seq_node) {
103 ret = FALSE;
104 } else {
105 seq_node->openDefaultWindow(app->getRootWidget());
106 ret = TRUE;
107 }
108 break;
109
110 case NoUndoDXAppCommand::OpenMessageWindow:
111 theDXApplication->getMessageWindow()->manage();
112 ret = TRUE;
113 break;
114
115 case NoUndoDXAppCommand::ToggleInfoEnable:
116 theDXApplication->enableInfo(!theDXApplication->isInfoEnabled());
117 break;
118
119 case NoUndoDXAppCommand::ToggleWarningEnable:
120 theDXApplication->enableWarning(!theDXApplication->isWarningEnabled());
121 break;
122
123 case NoUndoDXAppCommand::ToggleErrorEnable:
124 theDXApplication->enableError(!theDXApplication->isErrorEnabled());
125 break;
126
127 case NoUndoDXAppCommand::LoadUserMDF:
128 theDXApplication->postLoadMDFDialog();
129 ret = TRUE;
130 break;
131
132 case NoUndoDXAppCommand::HelpOnManual:
133 theDXApplication->helpOn("OnManual");
134 ret = TRUE;
135 break;
136
137 case NoUndoDXAppCommand::HelpOnHelp:
138 theDXApplication->helpOn("OnHelp");
139 ret = TRUE;
140 break;
141
142 default:
143 ASSERT(0);
144 }
145
146 return ret;
147 }
148
149 //
150 // Conditionally call the super class method. Currently, we don't
151 // activate if there is no connection to the server and we are activating
152 // ExecuteOnChange, ExecuteOnce or EndExecution command.
153 //
activate()154 void NoUndoDXAppCommand::activate()
155 {
156 DXApplication *app = this->application;
157 boolean connected = app->getPacketIF() != NULL;
158
159
160 ASSERT(app);
161
162 boolean enable = TRUE;
163
164 switch (this->commandType) {
165
166 case NoUndoDXAppCommand::ExecuteOnce:
167 case NoUndoDXAppCommand::ExecuteOnChange:
168 case NoUndoDXAppCommand::EndExecution:
169 if (!connected) enable = FALSE;
170 break;
171
172 }
173 if (enable)
174 this->NoUndoCommand::activate();
175 }
176
177
178