コード例 #1
0
ファイル: WatchableNode.java プロジェクト: yan96in/MPS
 public void init(final _FunctionTypes._void_P0_E0 callback) {
   if (myInitialized) {
     callback.invoke();
     return;
   }
   if (!(isLeaf())) {
     if (myInitializationInProgress.compareAndSet(false, true)) {
       myState.invokeEvaluation(
           new _FunctionTypes._void_P0_E0() {
             public void invoke() {
               try {
                 myWatchable.getValue().initSubvalues();
                 ApplicationManager.getApplication()
                     .invokeLater(
                         new Runnable() {
                           @Override
                           public void run() {
                             try {
                               removeAllChildren();
                               for (IWatchable watchable :
                                   ListSequence.fromList(getValue().getSubvalues())) {
                                 add(new WatchableNode(watchable, myState));
                               }
                               updatePresentation();
                               myInitialized = true;
                               callback.invoke();
                               for (_FunctionTypes._void_P0_E0 callback :
                                   ListSequence.fromList(myCallbacks)) {
                                 try {
                                   callback.invoke();
                                 } catch (Throwable t) {
                                   if (LOG.isEnabledFor(Level.ERROR)) {
                                     LOG.error("", t);
                                   }
                                 }
                               }
                               ListSequence.fromList(myCallbacks).clear();
                               nodeChanged();
                             } finally {
                               myInitializationInProgress.set(false);
                             }
                           }
                         });
               } catch (Throwable t) {
                 myInitializationInProgress.set(false);
               }
             }
           });
     } else {
       // callbacks are accessed from ui thread only
       ListSequence.fromList(myCallbacks).addElement(callback);
     }
   }
 }
コード例 #2
0
ファイル: TraceInfoTest.java プロジェクト: ramakantmoka/MPS
 private SNode getErrorLocation(_FunctionTypes._void_P0_E0 method) {
   try {
     method.invoke();
   } catch (Throwable t) {
     StackTraceElement stackTraceElement = t.getStackTrace()[0];
     SNode node =
         TraceInfoUtil.getJavaNode(
             stackTraceElement.getClassName(),
             stackTraceElement.getFileName(),
             stackTraceElement.getLineNumber());
     return node;
   }
   return null;
 }
コード例 #3
0
 public void invokeCloseListeners() {
   for (_FunctionTypes._void_P0_E0 listener : ListSequence.fromList(myListeners)) {
     listener.invoke();
   }
 }