Package edu.mit.csail.sdg.alloy4

Examples of edu.mit.csail.sdg.alloy4.OurTree


      };
   }

   /** Display this object (and so objects) as a tree; if listener!=null, it will receive OurTree.Event.SELECT events. */
   public final JFrame showAsTree(Listener listener) {
      final OurTree tree = new OurTree(12) {
         private static final long serialVersionUID = 0;
         private final boolean onWindows = Util.onWindows();
         {do_start();}
         @Override public String convertValueToText(Object val,boolean selected,boolean expanded,boolean leaf,int row,boolean focus) {
             String c = ">";
             String x = (val instanceof Browsable) ? ((Browsable)val).getDescription() : String.valueOf(val);
             if (onWindows) c = selected ? " style=\"color:#ffffff;\">" : " style=\"color:#000000;\">";
             return "<html> <span" + c + x + "</span></html>";
         }
         @Override public List<?> do_ask(Object parent) {
            if (parent instanceof Browsable) return ((Browsable)parent).getSubnodes(); else return new ArrayList<Browsable>();
         }
         @Override public Object do_root() { return Browsable.this; }
      };
      tree.setBorder(new EmptyBorder(3,3,3,3));
      final JScrollPane scr = new JScrollPane(tree, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
      scr.addFocusListener(new FocusListener() {
         public void focusGained(FocusEvent e) { tree.requestFocusInWindow(); }
         public void focusLost(FocusEvent e) { }
      });
      final JFrame x = new JFrame("Parse Tree");
      x.setLayout(new BorderLayout());
      x.add(scr, BorderLayout.CENTER);
View Full Code Here


   //=============================================================================================================//

   /** Regenerate all the customization widgets based on the latest settings. */
   public void remakeAll() {
      // Make the tree
      final OurTree tree = new OurTree(12) {
         private static final long serialVersionUID = 0;
         private final AlloyModel old = vizState.getOriginalModel(), now = vizState.getCurrentModel();
         private final boolean hidePrivate = vizState.hidePrivate(), hideMeta = vizState.hideMeta();
         {
            do_start();
            setRootVisible(false);
            setShowsRootHandles(false);
            listeners.add(new Listener() {
               public Object do_action(Object sender, Event event) { return null; }
               public Object do_action(Object sender, Event event, Object arg) { zoom(arg); return null; }
            });
         }
         @Override public String convertValueToText(Object value, boolean sel, boolean expand, boolean leaf, int i, boolean focus) {
            if (value==GENERAL) return "<html><b>general graph settings</b></html>";
            if (value==NODES) return "<html><b>types and sets</b></html>";
            if (value==EDGES) return "<html><b>relations</b></html>";
            if (value instanceof AlloyType) {
               AlloyType x = (AlloyType)value;
               if (vizState.getCurrentModel().hasType(x)) return "<html><b>sig</b> "+typename(x)+"</html>";
               return "<html><b>sig</b> "+typename(x)+" <font color=\"#808080\">(projected)</font></html>";
            }
            if (value instanceof AlloySet) return "<html><b>set</b> "+ ((AlloySet)value).getName() + "</html>";
            if (value instanceof AlloyRelation) return value.toString(); else return "";
         }
         @Override public List<?> do_ask(Object parent) {
            ArrayList<Object> ans = new ArrayList<Object>();
            if (parent==ROOT) { ans.add(GENERAL); ans.add(NODES); ans.add(EDGES); }
            else if (parent==NODES) { ans.add(AlloyType.UNIV); }
            else if (parent==EDGES) {
               for (AlloyRelation rel: vizState.getCurrentModel().getRelations())
                  if (!(hidePrivate && rel.isPrivate) && !(hideMeta && rel.isMeta)) ans.add(rel);
            } else if (parent instanceof AlloyType) {
               AlloyType type = (AlloyType)parent;
               for (AlloySet s:now.getSets())
                  if (!(hidePrivate && s.isPrivate) && !(hideMeta && s.isMeta) && s.getType().equals(type)) ans.add(s);
               if (!type.isEnum) for(AlloyType t: old.getDirectSubTypes(type))
                  if (!(hidePrivate && t.isPrivate) && !(hideMeta && t.isMeta))
                     if (now.hasType(t) || vizState.canProject(t)) ans.add(t);
            }
            return ans;
         }
         @Override public boolean do_isDouble(Object object) { return object==NODES || object==EDGES; }
         @Override public Object do_root() { return ROOT; }
      };
      // Pre-expand the entire tree.
      TreePath last = null;
      for(int i=0; i<tree.getRowCount(); i++) {
         tree.expandRow(i);
         if (lastElement!=null && last==null) {last=tree.getPathForRow(i); if (lastElement!=last.getLastPathComponent()) last=null;}
      }
      // Show the current element if found, else show the GENERAL OPTIONS
      if (last!=null) { zoom(lastElement); } else { last = tree.getPathForRow(0); zoom(GENERAL); }
      tree.scrollPathToVisible(last);
      tree.setSelectionPath(last);
      JScrollPane scroll = OurUtil.scrollpane(tree, Color.BLACK, Color.WHITE, new OurBorder(false, false, false, Util.onMac()));
      scroll.setAlignmentX(0f);
      scroll.getVerticalScrollBar().setUnitIncrement(50);
      removeAll();
      add(zoomPane);
View Full Code Here

   /** Returns the formula (all...| this)
    * <p> this must be a formula
    */
   public final Expr forAll(Decl firstDecl, Decl... moreDecls) throws Err {
      Pos p = firstDecl.span();
      for(Decl v: moreDecls) p=p.merge(v.span());
      return ExprQt.Op.ALL.make(p, null, Util.prepend(Util.asList(moreDecls), firstDecl), this);
   }
View Full Code Here

   /** Returns the formula (no...| this)
    * <p> this must be a formula
    */
   public final Expr forNo(Decl firstDecl, Decl... moreDecls) throws Err {
      Pos p = firstDecl.span();
      for(Decl v: moreDecls) p=p.merge(v.span());
      return ExprQt.Op.NO.make(p, null, Util.prepend(Util.asList(moreDecls), firstDecl), this);
   }
View Full Code Here

   /** Returns the formula (lone...| this)
    * <p> this must be a formula
    */
   public final Expr forLone(Decl firstDecl, Decl... moreDecls) throws Err {
      Pos p = firstDecl.span();
      for(Decl v: moreDecls) p=p.merge(v.span());
      return ExprQt.Op.LONE.make(p, null, Util.prepend(Util.asList(moreDecls), firstDecl), this);
   }
View Full Code Here

   /** Returns the formula (one ...| this)
    * <p> this must be a formula
    */
   public final Expr forOne(Decl firstDecl, Decl... moreDecls) throws Err {
      Pos p = firstDecl.span();
      for(Decl v: moreDecls) p=p.merge(v.span());
      return ExprQt.Op.ONE.make(p, null, Util.prepend(Util.asList(moreDecls), firstDecl), this);
   }
View Full Code Here

   /** Returns the formula (some...| this)
    * <p> this must be a formula
    */
   public final Expr forSome(Decl firstDecl, Decl... moreDecls) throws Err {
      Pos p = firstDecl.span();
      for(Decl v: moreDecls) p=p.merge(v.span());
      return ExprQt.Op.SOME.make(p, null, Util.prepend(Util.asList(moreDecls), firstDecl), this);
   }
View Full Code Here

   /** Returns the comprehension expression {...|this}
    * <p> this must be a formula
    * <p> each declaration must be a "one-of" quantification over a unary set
    */
   public final Expr comprehensionOver(Decl firstDecl, Decl... moreDecls) throws Err {
      Pos p = firstDecl.span();
      for(Decl v: moreDecls) p=p.merge(v.span());
      return ExprQt.Op.COMPREHENSION.make(p, null, Util.prepend(Util.asList(moreDecls), firstDecl), this);
   }
View Full Code Here

   /** Returns the integer (sum...| this)
    * <p> this must be an integer expression
    * <p> each declaration must be a "one-of" quantification over a unary set
    */
   public final Expr sumOver(Decl firstDecl, Decl... moreDecls) throws Err {
      Pos p = firstDecl.span();
      for(Decl v: moreDecls) p=p.merge(v.span());
      return ExprQt.Op.SUM.make(p, null, Util.prepend(Util.asList(moreDecls), firstDecl), this);
   }
View Full Code Here

            }
            catch(Err e) {
                commands = null;
                runmenu.getItem(0).setEnabled(false);
                runmenu.getItem(3).setEnabled(false);
                text.shade(new Pos(text.get().getFilename(), e.pos.x, e.pos.y, e.pos.x2, e.pos.y2));
                if ("yes".equals(System.getProperty("debug")) && Verbosity.get()==Verbosity.FULLDEBUG)
                    log.logRed("Fatal Exception!" + e.dump() + "\n\n");
                else
                    log.logRed(e.toString()+"\n\n");
                return null;
View Full Code Here

TOP

Related Classes of edu.mit.csail.sdg.alloy4.OurTree

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.