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