src/java/isac/wsdialog/DialogGuide.java
author wneuper
Fri, 27 Aug 2004 14:58:35 +0200
changeset 1745 f6c0006dd528
parent 1733 7d9ba341f207
child 1776 298fe6791907
permissions -rw-r--r--
*** empty log message ***
akremp@861
     1
package isac.wsdialog;
akremp@861
     2
mhochrei@1163
     3
import isac.bridge.*;
mhochrei@1163
     4
import isac.util.*;
rgradisc@1313
     5
import isac.util.formulae.*;
rgradisc@1313
     6
import isac.util.interfaces.*;
rgradisc@1313
     7
import isac.util.tactics.*;
mhochrei@939
     8
akremp@945
     9
import java.io.Serializable;
mhochrei@954
    10
import java.net.MalformedURLException;
mhochrei@1163
    11
import java.rmi.*;
mhochrei@954
    12
import java.rmi.registry.LocateRegistry;
mhochrei@952
    13
import java.rmi.server.UnicastRemoteObject;
akremp@1022
    14
import java.util.Vector;
akremp@867
    15
akremp@1703
    16
/* TODO:
akremp@1703
    17
 * 
akremp@1703
    18
 * * recognize CalcHead in Changed Formula -> switch to DILAOGPAHSE_SPECIFY_SUBPROBLEM
akremp@1703
    19
 * * differentiate CalcHeads 
akremp@1703
    20
 * 
akremp@1703
    21
 *
akremp@1703
    22
 */ 
akremp@1703
    23
akremp@861
    24
/**
akremp@1340
    25
 * The DialogGuide moderates the communication between two 
akremp@1340
    26
 * instances working on the same CalcTree object.
akremp@1340
    27
 * One of these instances is the user, the other a math engine.
akremp@1340
    28
 * Most probably, the user's GUI, the DialogGuide and the math engine 
akremp@1340
    29
 * reside on different machines and communicate with each other by means of RMI. 
akremp@1340
    30
 * 
akremp@945
    31
 * @author Alan Krempler
akremp@867
    32
 */
rgradisc@1618
    33
public class DialogGuide
rgradisc@1618
    34
  extends UnicastRemoteObject
akremp@1637
    35
  implements DGuide, IToUser, Serializable {
rgradisc@1586
    36
akremp@1620
    37
akremp@1023
    38
  protected CalcTree calc_tree_;
akremp@1219
    39
  protected CalcHead calc_head_;
akremp@1703
    40
  protected CalcHead calc_head_sub_;
akremp@1266
    41
  protected MathEngine math_engine_;
akremp@1620
    42
  protected int phase_;
rgradisc@1618
    43
  private Vector datachange_listeners_;
akremp@1400
    44
  private IToWorksheet ui_control_listener_;
rgradisc@1618
    45
mhochrei@974
    46
mhochrei@952
    47
  /**
akremp@1340
    48
   * @param ME_path URL of the math engine to be used
mhochrei@952
    49
   * @throws RemoteException
mhochrei@952
    50
   */
akremp@1266
    51
  public DialogGuide(String ME_path) throws RemoteException {
rgradisc@1618
    52
    super();
mhochrei@954
    53
    this.rmiBind();
akremp@1400
    54
    datachange_listeners_ = new Vector();
rgradisc@1618
    55
    MathEngine.init(ME_path);
rgradisc@1618
    56
    math_engine_ = MathEngine.getMathEngine();
akremp@1620
    57
    phase_ = DIALOGPHASE_IDLE;
rgradisc@1618
    58
mhochrei@952
    59
  }
akremp@861
    60
wneuper@1745
    61
  /**
wneuper@1745
    62
   * at the beginning of a calculation as well as of a subproblem
wneuper@1745
    63
   * @param calc_head_
wneuper@1745
    64
   * @return 
wneuper@1745
    65
   */
wneuper@1745
    66
  public CalcHead startSpecifying(CalcHead calc_head_) {
wneuper@1745
    67
  	
wneuper@1745
    68
    //  WN040825 if (start_from == STARTFROM_EXAMPLE) {              --->startSpecifying ?
akremp@1597
    69
wneuper@1745
    70
  	int calchead_view = CalcHead.VIEWSTYLE_SINGLELINE;
wneuper@1745
    71
	//WN040824 VIEWSTYLE_IN_CALC depends on UserModel
wneuper@1745
    72
	//WN040824 VIEWSTYLE_IN_CALC is appropriate for equations, not for maximumexpl
wneuper@1745
    73
    //WN040825 appropriate for pbl-class [univatiate,equation]
wneuper@1745
    74
    //WN040825 NOT -"- for maximum-expl
wneuper@1745
    75
  	calc_head_.setCalcHeadStatus(calchead_view);
wneuper@1745
    76
  	math_engine_.completeCalcHead(calc_head_);
wneuper@1745
    77
	
wneuper@1745
    78
	phase_ = DIALOGPHASE_SPECIFY;
wneuper@1745
    79
    return calc_head_;
wneuper@1745
    80
 }
wneuper@1745
    81
  		
wneuper@1745
    82
  		
wneuper@1745
    83
  public CalcHead startCalculation(
wneuper@1745
    84
  	  	    int user_id,
rgradisc@1618
    85
    Formalization f,
rgradisc@1618
    86
    int start_from,
rgradisc@1618
    87
    int requested_calchead_view) {
rgradisc@1618
    88
wneuper@1745
    89
    calc_head_ = math_engine_.startCalculation(f);
rgradisc@1618
    90
rgradisc@1618
    91
    // for the moment, all requests for a view are honored
wneuper@1745
    92
    //  WN040825 calc_head_.setViewStyle(requested_calchead_view);   --->startSpecifying
rgradisc@1618
    93
rgradisc@1618
    94
    // for testing purposes: if starting an example from the collection,
rgradisc@1618
    95
    // have everything filled in by the KI
wneuper@1745
    96
    //  WN040825 if (start_from == STARTFROM_EXAMPLE) {              --->startSpecifying ?
rgradisc@1618
    97
rgradisc@1618
    98
      // old-style filling the fields of the calc-head by setting
rgradisc@1618
    99
      // the HELP_ME flag 
rgradisc@1618
   100
      // calc_head_.setCalcHeadStatus(CalcHead.CALCHEAD_HELP_ME);
wneuper@1745
   101
    // }
rgradisc@1618
   102
rgradisc@1618
   103
    // test code; this protocol is now controlled by the presentation layer
rgradisc@1618
   104
    // do {
rgradisc@1618
   105
    // checkCalcHead()
rgradisc@1618
   106
    // } while (false); // status != ok
rgradisc@1618
   107
    // newCalculation(calc_head_);
wneuper@1745
   108
    //WN040825	phase_ = DIALOGPHASE_SPECIFY;                        --->startSpecifying
wneuper@1745
   109
    //WN040825  return calc_head_;
wneuper@1745
   110
    return startSpecifying(calc_head_);
wneuper@1745
   111
     }
rgradisc@1618
   112
rgradisc@1618
   113
  public void newCalculation(CalcHead calcHead) {
rgradisc@1618
   114
    try {
rgradisc@1618
   115
      calc_tree_ = math_engine_.startSolving(calcHead);
rgradisc@1618
   116
    } catch (Exception e) {
rgradisc@1618
   117
      // TODO Auto-generated catch block
rgradisc@1618
   118
      e.printStackTrace();
rgradisc@1618
   119
    }
akremp@1601
   120
    // calc_tree_ = MathEngine.getMathEngine().startSolving(calcHead);
akremp@1400
   121
    calc_tree_.addDataChangeListener(this);
akremp@1620
   122
		phase_ = DIALOGPHASE_SOLVE;
rgradisc@1618
   123
  }
rgradisc@1618
   124
rgradisc@1618
   125
  /* (non-Javadoc)
rgradisc@1618
   126
   * @see isac.wsdialog.IToUser#calcChanged(isac.wsdialog.CalcChangedEvent)
rgradisc@1618
   127
   */
rgradisc@1618
   128
  public void calcChanged(CalcChangedEvent event) {
wneuper@1745
   129
  	
wneuper@1745
   130
  	ICalcElement calc_elem;
wneuper@1745
   131
wneuper@1745
   132
  	for (int i = 0; i < datachange_listeners_.size(); i++) {
rgradisc@1618
   133
      ((IToUser) datachange_listeners_.elementAt(i)).calcChanged(event);
rgradisc@1304
   134
    }
akremp@1703
   135
    ICalcIterator last_formula = event.getFirstChangedFormula();
akremp@1706
   136
    // while searching for last formula, mark intermediate CalcHeads as not to be edited
akremp@1706
   137
    while (!last_formula.isLast()) {
akremp@1706
   138
			if (last_formula.getElement().getType() == ICalcElement.CALCEL_CALCHEAD) { 
akremp@1706
   139
				last_formula.getElement().setViewStyle(CalcHead.VIEWSTYLE_IN_CALC);
akremp@1706
   140
    }
akremp@1706
   141
    	last_formula.moveDown(); 
wneuper@1732
   142
    	//TODO last_formula.moveDown.. WN040824 DG may limit the level down 
akremp@1706
   143
    } 
akremp@1706
   144
    // for now, do not specify the CalcHead, just display it.
wneuper@1745
   145
    calc_elem = last_formula.getElement();
wneuper@1745
   146
    
wneuper@1745
   147
    if (calc_elem.getType() == ICalcElement.CALCEL_CALCHEAD) {
wneuper@1745
   148
    		//WN040826 phase_ = DIALOGPHASE_SPECIFY;                         --->startSpecifying
wneuper@1745
   149
    		//WN040826 calc_elem.setViewStyle(CalcHead.VIEWSTYLE_SINGLELINE);--->startSpecifying
wneuper@1745
   150
			
wneuper@1745
   151
    		//WN040826calc_head = startSpecifying((CalcHead) calc_elem);     --->startSpecifying
wneuper@1745
   152
    		startSpecifying((CalcHead) calc_elem);	
wneuper@1745
   153
			//WN040826 math_engine_.completeCalcHead(calc_head);             --->startSpecifying
akremp@1706
   154
			} else {
wneuper@1745
   155
				phase_ = DIALOGPHASE_SOLVE;
akremp@1706
   156
			}
akremp@1703
   157
    }
akremp@899
   158
rgradisc@1618
   159
  /**
rgradisc@1618
   160
   * @deprecated Use {@link #notifyUserAction(IUserAction)} instead
rgradisc@1618
   161
   */
rgradisc@1618
   162
  public void modifyCalcHead(CalcHead calc_head) {
rgradisc@1618
   163
    // MathEngine.getMathEngine().modifyCalcHead(calc_head);
rgradisc@1618
   164
    math_engine_.modifyCalcHead(calc_head);
rgradisc@1618
   165
  }
akremp@899
   166
rgradisc@1618
   167
  /* (non-Javadoc)
rgradisc@1618
   168
   * @see isac.wsdialog.IToCalc#iterator()
rgradisc@1618
   169
   */
rgradisc@1618
   170
  public ICalcIterator iterator() {
rgradisc@1618
   171
    return new DialogIterator((CalcIterator) calc_tree_.iterator());
rgradisc@1618
   172
  }
akremp@1232
   173
rgradisc@1618
   174
  /* (non-Javadoc)
rgradisc@1618
   175
   * @see isac.wsdialog.IToCalc#addListener(isac.wsdialog.IToUser)
rgradisc@1618
   176
   */
rgradisc@1618
   177
  public boolean addDataChangeListener(IToUser listener) {
rgradisc@1618
   178
    if (datachange_listeners_.contains(listener)) {
rgradisc@1618
   179
      return false;
rgradisc@1618
   180
    } else {
rgradisc@1618
   181
      datachange_listeners_.add(listener);
rgradisc@1618
   182
    }
rgradisc@1618
   183
    return true;
rgradisc@1618
   184
  }
akremp@899
   185
rgradisc@1618
   186
  public boolean registerUIControlListener(IToWorksheet listener) {
rgradisc@1618
   187
    if (ui_control_listener_ != null) {
rgradisc@1618
   188
      ui_control_listener_.doUIAction(new UserAction(UI_DO_DETACH));
rgradisc@1618
   189
    }
rgradisc@1618
   190
    ui_control_listener_ = listener;
rgradisc@1618
   191
    return true;
rgradisc@1618
   192
  }
rgradisc@1618
   193
mhochrei@939
   194
  public Tactic fetchProposedTactic() {
mhochrei@1163
   195
    return calc_tree_.fetchProposedTactic();
mhochrei@939
   196
  }
rgradisc@1618
   197
akremp@1233
   198
  public Tactic[] fetchApplicableTactics(int scope) {
rgradisc@1618
   199
    return calc_tree_.fetchApplicableTactics(scope);
rgradisc@1618
   200
  }
rgradisc@1618
   201
rgradisc@1618
   202
akremp@1341
   203
  /**
akremp@1341
   204
   * @deprecated Use {@link #notifyUserAction(IUserAction)} instead
akremp@1341
   205
   */
akremp@1230
   206
  public int setNextTactic(Tactic tactic) {
akremp@1230
   207
    return calc_tree_.setNextTactic(tactic);
akremp@1230
   208
  }
rgradisc@1618
   209
akremp@1341
   210
  /**
akremp@1341
   211
   * @deprecated Use {@link #notifyUserAction(IUserAction)} instead
akremp@1335
   212
   */
akremp@1230
   213
  public int autoCalculate(int scope, int nSteps) {
rgradisc@1618
   214
    return calc_tree_.autoCalculate(scope, nSteps);
akremp@1230
   215
  }
akremp@966
   216
akremp@1335
   217
  /**
akremp@1341
   218
   * @deprecated Use {@link #notifyUserAction(IUserAction)} instead
akremp@1341
   219
   */
rgradisc@1618
   220
  public void tryMatch(CalcHead ch, CalcHeadCompoundID problemID)
rgradisc@1618
   221
    throws NotInSpecificationPhaseException {
rgradisc@1618
   222
rgradisc@1618
   223
    // MathEngine.getMathEngine().tryMatch(ch, problemID);
rgradisc@1618
   224
    math_engine_.tryMatch(ch, problemID);
akremp@1230
   225
  }
rgradisc@1618
   226
akremp@1335
   227
  /**
rgradisc@1618
   228
   * @deprecated Use {@link #notifyUserAction(IUserAction)} instead
rgradisc@1618
   229
   */
rgradisc@1618
   230
  public void tryRefine(CalcHead ch, CalcHeadCompoundID problemID)
rgradisc@1618
   231
    throws NotInSpecificationPhaseException {
rgradisc@1618
   232
rgradisc@1618
   233
    // MathEngine.getMathEngine().tryRefine(ch , problemID);
rgradisc@1618
   234
    math_engine_.tryRefine(ch, problemID);
rgradisc@1618
   235
  }
rgradisc@1618
   236
rgradisc@1618
   237
  public ICalcIterator getActiveFormula() {
rgradisc@1618
   238
    return calc_tree_.getActiveFormula();
rgradisc@1618
   239
  }
rgradisc@1618
   240
rgradisc@1618
   241
  /**
rgradisc@1618
   242
   * @deprecated Use {@link #notifyUserAction(IUserAction)} instead
rgradisc@1618
   243
   */
rgradisc@1618
   244
  public int replaceFormula(Formula newFormula) {
rgradisc@1618
   245
    return calc_tree_.replaceFormula(newFormula);
rgradisc@1618
   246
  }
rgradisc@1618
   247
rgradisc@1618
   248
  /**
rgradisc@1618
   249
   * @deprecated Use {@link #notifyUserAction(IUserAction)} instead
rgradisc@1618
   250
   */
rgradisc@1618
   251
  public int appendFormula(Formula newFormula) {
rgradisc@1618
   252
    return calc_tree_.appendFormula(newFormula);
rgradisc@1618
   253
  }
rgradisc@1618
   254
rgradisc@1618
   255
  /**
rgradisc@1618
   256
   * @deprecated Use {@link #notifyUserAction(IUserAction)} instead
rgradisc@1618
   257
   */
akremp@1230
   258
  public void moveActiveFormula(ICalcIterator newActiveFormula) {
rgradisc@1618
   259
    calc_tree_.moveActiveFormula(newActiveFormula);
mhochrei@939
   260
  }
akremp@1335
   261
rgradisc@1618
   262
  /**
rgradisc@1618
   263
   * Notify the Dialog Guide about interaction from the User
rgradisc@1618
   264
   * @param action 
rgradisc@1618
   265
   * @return true, if the action has been processed, false if the processing the action has been denied 
rgradisc@1618
   266
   * 
rgradisc@1618
   267
   */
rgradisc@1618
   268
  public boolean notifyUserAction(IUserAction action)
rgradisc@1618
   269
    throws DialogProtocolException {
akremp@1620
   270
    int request = action.getActionID();
akremp@1620
   271
    
akremp@1620
   272
    switch (phase_) {
akremp@1620
   273
    	case DIALOGPHASE_IDLE:
akremp@1620
   274
    		throw new DialogProtocolException(request, phase_);
wneuper@1745
   275
			//case DIALOGPHASE_SPECIFY: WN040826
wneuper@1745
   276
			case DIALOGPHASE_SPECIFY: //_SUBPROBLEM WN040826
akremp@1620
   277
				if (request < UI_DUMMY_FIRST_SPECIFY || request > UI_DUMMY_LAST_SPECIFY)
akremp@1620
   278
					throw new DialogProtocolException(request, phase_);
akremp@1620
   279
				break;
akremp@1620
   280
			case DIALOGPHASE_SOLVE:
akremp@1637
   281
				if (request < UI_DUMMY_FIRST_SOLVE || request > UI_DUMMY_LAST_SOLVE)
akremp@1620
   282
					throw new DialogProtocolException(request, phase_);
akremp@1620
   283
				break;
akremp@1620
   284
	   }
akremp@1620
   285
	    
akremp@1620
   286
    switch (request) {
rgradisc@1618
   287
      case UI_SPECIFY_TRY_MATCH :
rgradisc@1618
   288
        try {
rgradisc@1618
   289
          tryMatch(
rgradisc@1618
   290
            calc_head_,
rgradisc@1618
   291
            ((UserActionOnCalcHeadCompoundID) action).getObjectID());
rgradisc@1618
   292
        } catch (NotInSpecificationPhaseException e) {
akremp@1621
   293
          throw new DialogMathException(request, phase_, e);
rgradisc@1618
   294
        }
rgradisc@1618
   295
        break;
rgradisc@1618
   296
rgradisc@1618
   297
      case UI_SPECIFY_TRY_REFINE :
rgradisc@1618
   298
        try {
rgradisc@1618
   299
          tryRefine(
rgradisc@1618
   300
            calc_head_,
rgradisc@1618
   301
            ((UserActionOnCalcHeadCompoundID) action).getObjectID());
rgradisc@1618
   302
        } catch (NotInSpecificationPhaseException e) {
akremp@1621
   303
          throw new DialogMathException(request, phase_, e);
rgradisc@1618
   304
        }
rgradisc@1618
   305
        break;
rgradisc@1618
   306
rgradisc@1618
   307
      case UI_SPECIFY_CHANGE_VIEW :
rgradisc@1618
   308
        calc_head_.setViewStyle(((UserActionOnInt) action).getInt());
rgradisc@1618
   309
        break;
rgradisc@1618
   310
rgradisc@1618
   311
      case UI_SPECIFY_COMPLETE_CALCHEAD :
rgradisc@1618
   312
        math_engine_.completeCalcHead(calc_head_);
rgradisc@1618
   313
        // old-style filling the fields of the calc-head by setting
rgradisc@1618
   314
        // the HELP_ME flag 
rgradisc@1618
   315
        // calc_head_.setCalcHeadStatus(CalcHead.CALCHEAD_HELP_ME);
rgradisc@1618
   316
        // modifyCalcHead(calc_head_);
rgradisc@1618
   317
        break;
rgradisc@1618
   318
rgradisc@1618
   319
      case UI_SPECIFY_COMPLETE_METHOD :
rgradisc@1618
   320
      case UI_SPECIFY_COMPLETE_THEORY :
rgradisc@1618
   321
      case UI_SPECIFY_COMPLETE_PROBLEM :
rgradisc@1618
   322
      case UI_SPECIFY_COMPLETE_GIVEN :
rgradisc@1618
   323
      case UI_SPECIFY_COMPLETE_FIND :
rgradisc@1618
   324
      case UI_SPECIFY_COMPLETE_RELATE :
akremp@1621
   325
        throw new DialogNotImplementedException(request, phase_);
rgradisc@1618
   326
rgradisc@1618
   327
      case UI_SPECIFY_CHECK_CALCHEAD :
rgradisc@1618
   328
        modifyCalcHead(calc_head_);
rgradisc@1618
   329
        break;
akremp@1620
   330
       
akremp@1620
   331
      // was: newCalculation()  
akremp@1620
   332
			case UI_SPECIFY_CALCULATE_1 :
akremp@1620
   333
      case UI_SPECIFY_CALCULATE_ALL :
akremp@1620
   334
	  		modifyCalcHead(calc_head_);
akremp@1620
   335
	  		if (calc_head_.getCalcHeadStatus()!=CalcHead.CALCHEAD_CORRECT) return false; 
akremp@1620
   336
	  		
akremp@1620
   337
		  	try {
akremp@1620
   338
					calc_tree_ = math_engine_.startSolving(calc_head_);
akremp@1620
   339
			  } catch (Exception e) {
akremp@1620
   340
					// TODO Auto-generated catch block
akremp@1620
   341
					e.printStackTrace();
akremp@1620
   342
			  }
akremp@1620
   343
			  // calc_tree_ = MathEngine.getMathEngine().startSolving(calcHead);
akremp@1620
   344
			  calc_tree_.addDataChangeListener(this);
akremp@1620
   345
				phase_ = DIALOGPHASE_SOLVE;
akremp@1620
   346
			// fall through to calculate
akremp@1620
   347
      	
rgradisc@1618
   348
      case UI_SOLVE_CALCULATE_1 :
akremp@1620
   349
	    case UI_SOLVE_CALCULATE_ALL :
akremp@1620
   350
	      switch (request) {
akremp@1620
   351
					case UI_SPECIFY_CALCULATE_ALL :
akremp@1620
   352
	      	case UI_SOLVE_CALCULATE_ALL :
akremp@1620
   353
        		autoCalculate(SCOPE_CALCULATION, 0);
akremp@1620
   354
        		break;
akremp@1622
   355
        	case UI_SPECIFY_CALCULATE_1 :
akremp@1622
   356
        	  break;
akremp@1620
   357
        	default :
akremp@1620
   358
						autoCalculate(SCOPE_CALCULATION, 1);
akremp@1620
   359
						break;
akremp@1620
   360
	      }
rgradisc@1618
   361
        break;
rgradisc@1618
   362
rgradisc@1618
   363
rgradisc@1618
   364
      case UI_SOLVE_CALCULATE_SUBPROBLEM :
rgradisc@1618
   365
        autoCalculate(SCOPE_SUBPROBLEM, 0);
rgradisc@1618
   366
        break;
rgradisc@1618
   367
rgradisc@1618
   368
      case UI_SOLVE_EDIT_ACTIVE_FORMULA :
rgradisc@1618
   369
        ui_control_listener_.doUIAction(new UserAction(UI_DO_EDIT_FORMULA));
rgradisc@1618
   370
        break;
rgradisc@1618
   371
rgradisc@1618
   372
      case UI_SOLVE_EDIT_ACTIVE_FORMULA_COMPLETE :
rgradisc@1618
   373
        replaceFormula(
rgradisc@1618
   374
          (Formula) ((UserActionOnCalcElement) action).getCalcElement());
rgradisc@1618
   375
        break;
rgradisc@1618
   376
rgradisc@1618
   377
      case UI_SOLVE_APPEND_USER_FORMULA :
rgradisc@1618
   378
        // appendFormula((Formula) ((UserActionOnCalcElement) action).getCalcElement());
rgradisc@1618
   379
        ui_control_listener_.doUIAction(new UserAction(UI_DO_APPEND_FORMULA));
rgradisc@1618
   380
        break;
rgradisc@1618
   381
rgradisc@1618
   382
      case UI_SOLVE_MOVE_ACTIVE_FORMULA :
rgradisc@1618
   383
        moveActiveFormula(((UserActionOnIterator) action).getPosition());
rgradisc@1618
   384
        break;
rgradisc@1618
   385
rgradisc@1618
   386
      case UI_SOLVE_GET_PROPOSED_TACTIC :
akremp@1621
   387
        throw new DialogNotImplementedException(request, phase_);
rgradisc@1618
   388
rgradisc@1618
   389
      case UI_SOLVE_GET_APPLICABLE_TACTICS :
akremp@1621
   390
        throw new DialogNotImplementedException(request, phase_);
rgradisc@1618
   391
rgradisc@1618
   392
      case UI_SOLVE_SET_NEXT_TACTIC :
rgradisc@1618
   393
        setNextTactic(
rgradisc@1618
   394
          (Tactic) ((UserActionOnCalcElement) action).getCalcElement());
rgradisc@1618
   395
        break;
rgradisc@1618
   396
rgradisc@1618
   397
      case UI_SOLVE_HELP_ENTERING_FORMULA :
akremp@1621
   398
        throw new DialogNotImplementedException(request, phase_);
rgradisc@1618
   399
rgradisc@1618
   400
      case UI_SOLVE_SHOW_ASSUMPTIONS :
akremp@1621
   401
        throw new DialogNotImplementedException(request, phase_);
rgradisc@1618
   402
rgradisc@1618
   403
      case UI_SOLVE_SHOW_DETAILS :
akremp@1621
   404
        throw new DialogNotImplementedException(request, phase_);
rgradisc@1618
   405
rgradisc@1618
   406
      default :
akremp@1621
   407
        throw new DialogUnknownActionException(request, phase_);
rgradisc@1618
   408
    }
rgradisc@1618
   409
    return true;
akremp@1258
   410
  }
rgradisc@1618
   411
rgradisc@1618
   412
  private void rmiBind() {
rgradisc@1618
   413
    if (System.getSecurityManager() == null) {
mhochrei@954
   414
      System.setSecurityManager(new RMISecurityManager());
mhochrei@954
   415
    }
rgradisc@1618
   416
rgradisc@1618
   417
    try {
mhochrei@955
   418
      LocateRegistry.createRegistry(1099);
rgradisc@1618
   419
    } catch (java.rmi.RemoteException exc2) {
mhochrei@954
   420
      System.err.println("can not create registry: " + exc2.getMessage());
mhochrei@954
   421
    }
rgradisc@1618
   422
mhochrei@954
   423
    String name = "//localhost/isac-DialogGuide";
mhochrei@954
   424
    try {
mhochrei@954
   425
      System.out.println("try to bind as " + name);
mhochrei@954
   426
      Naming.rebind(name, this);
mhochrei@954
   427
      System.out.println("Object Manager bound to " + name);
rgradisc@1618
   428
    } catch (java.rmi.ConnectException e) {
rgradisc@1618
   429
      System.err.println(
rgradisc@1618
   430
        "failed to contact as "
rgradisc@1618
   431
          + name
rgradisc@1618
   432
          + " (creating RMI-Server on localhost: 1099)");
mhochrei@954
   433
    } catch (RemoteException e) {
mhochrei@954
   434
      // TODO Auto-generated catch block
mhochrei@954
   435
      e.printStackTrace();
mhochrei@954
   436
    } catch (MalformedURLException e) {
mhochrei@954
   437
      // TODO Auto-generated catch block
mhochrei@954
   438
      e.printStackTrace();
mhochrei@954
   439
    }
mhochrei@954
   440
  }
rgradisc@1618
   441
mhochrei@954
   442
  public static void main(String[] args) {
mhochrei@954
   443
    try {
akremp@1266
   444
      new DialogGuide(args[0]);
mhochrei@954
   445
    } catch (RemoteException e) {
mhochrei@954
   446
      e.printStackTrace();
mhochrei@954
   447
    }
mhochrei@954
   448
  }
mhochrei@965
   449
akremp@861
   450
}