Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.pentaho.ui.xul.jface.tags;
  
  import  org.eclipse.jface.action.IAction;
  import  org.eclipse.jface.action.IContributionItem;
  import  org.eclipse.jface.action.IMenuManager;
  import  org.eclipse.jface.action.MenuManager;
 
 public class JfaceMenupopup extends AbstractSwtXulContainer implements XulMenupopup{
   
 	IMenuManager menu = null;
   
   public JfaceMenupopup(Element selfXulComponent parentXulDomContainer domContainerString tagName) {
     super("menupopup");
     this. = parent;
     this. = domContainer;
     
     ifparent instanceof JfaceMenu) {
     	Object grampy = parent.getParent();
     	ifgrampy instanceof JfaceMenubar ) {
         	 = (IMenuManager) parent.getManagedObject();
             this.setManagedObject();
     	} 
     	else ifgrampy instanceof JfaceMenupopup ){
         	 = (IMenuManager) parent.getManagedObject();
             this.setManagedObject();
     	}
     } else {
     	// this is for popup menus
     	 = new MenuManager();
         this.setManagedObject();
     }
     if( == null) {
 //    	System.out.println("JfaceMenupopup constructor bad parent");
     }
     
   }
 
   public void layout(){
   }
 
   @Override
   public XulComponent getParent() {
     return ;
   }
   
 
     return createNewMenuitemAtPos(this.getChildNodes().size());
   }
   
   public XulMenuitem createNewMenuitemAtPos(int pos){
     if(pos > getChildNodes().size()){
       pos = getChildNodes().size();
     }
     
     /*
     Action action = new Action("tmp name") {
 	      public void run() {
 	          String command = JfaceMenupopup.this.onCommand;
 	          if(command != null){
 	            invoke(command);
 	          }
 	      }
 	    };
     
 	    String id="menuitem-"+menuItemSerial;
     	menuItemSerial++;
 	    action.setId(id);
 	    */
 	    XulMenuitem item = new JfaceMenuitem(nullthis"menuitem"pos);
 	    
 //	    action.setId(id);
 	    
 //	    item.setManagedObject( action );
 	    /*
 	    if( pos < getChildNodes().size() ) {
 	   		String anchorId = menu.getItems()[pos].getId();
 	   		if( anchorId == null ) {
 	   			System.out.println("can't find anchor id for insert at "+pos);
 		    	menu.add(action);
 		    	super.addChild(item);
 	   		} else {
 	   			menu.insertBefore(anchorId, action);
 		    	super.addChildAt(item, pos);
 	   		}
 	    } else {
 	    	menu.add(action);
 	    	super.addChild(item);
 	    }
 	    */
     return item;
  }
  public void addChildElement c ) {
	  addChildAt(c, -1);
  }
  
  public void addChildAt(Element cint pos) {
	  ifpos != -1 ) {
		  super.addChildAt(cpos);
	  } else {
	      super.addChild(c);
	  }
	    /*
		if(c instanceof JfaceMenuseparator){
		  	JfaceMenuseparator sep = (JfaceMenuseparator) c;
			if( pos == -1 ) {
				menu.add( (CustomSeparator) sep.getManagedObject() );
			}
		}	  
	    */
	    
	  // see if we have this already
	  IContributionItem items[] = .getItems();
	  for( IContributionItem item : items ) {
		  ifitem.getId() != null && item.getId().equals(c.getAttributeValue("ID")) && !item.isVisible()) {
			  // we already have this, just show it
			  item.setVisible(true);
//			    System.out.println("JfaceMenupopup making existing item visible "+item.getId());
			  return;
		  }
	  }
	  
	    IAction action = null;
	    IContributionItem contribs = null;
	    ifc instanceof JfaceMenuitem ) {
	    	JfaceMenuitem item = (JfaceMenuitemc;
	    	Object man = item.getManagedObject();
	    	ifman instanceof IAction ) {
		    	action = (IAction) item.getManagedObject();
//			    System.out.println("JfaceMenupopup appending menu item "+action.getText());
	    	} else if ( man instanceof IContributionItem ) {
	    	  contribs = (IContributionItem) man;
	    	}
	    	else ifman == null ) {
//			    System.out.println("JfaceMenupopup appending null item ");
	    	} else {
//			    System.out.println("JfaceMenupopup appending unknown type "+man.getClass().getName());
	    	}
	    } 
	    else ifc instanceof JfaceMenu ) {
	    	JfaceMenu item = (JfaceMenuc;
	    	contribs = item.getJfaceMenu();
//		    System.out.println("JfaceMenupopup appending menu "+contribs != null ? contribs.getId() : c.getAttributeValue("ID"));
	    } 
	    ifaction == null && contribs == null ) {
	    	// should not get here
	    	return;
	    }
	    
	    String id = null;
    	ifpos == 0 && pos < .getItems().length ) {
    		id = .getItems()[1].getId();
    	}
    	else ifpos > 0 && pos < .getItems().length ) {
    		id = .getItems()[pos].getId();
    	}
    	ifid != null ) {
    		ifaction != null ) {
        		.insertBefore(idaction);
    		} else {
        		.insertBefore(id,contribs);
    		}
    	} else {
    		ifaction != null ) {
        		.add(action);
    		} else {
        		.add(contribs);
    		}
    	}
    	/*
	else if(c instanceof JfaceMenuitem){
    	
    	JfaceMenuitem item = (JfaceMenuitem) c;
    	 
    	 item.createItem(item, this, pos, true);
    	
        Action action = new Action(((JfaceMenuitem) c).getLabel()) {
  	      public void run() {
  	          String command = JfaceMenupopup.this.onCommand;
  	          if(command != null){
  	            invoke(command);
  	          }
  	      }
  	    };
      
  	    XulMenuitem item = new JfaceMenuitem(this, c, domContainer, "menuitem", pos);
	    String id = ((JfaceMenuitem) c).getId();
	    if( id == null ) {
	    	id="menuitem-"+menuItemSerial;
	    	menuItemSerial++;
	    }
	    item.setId(id);
	    action.setId(id);
  	    
  	    */
	    
	    
//  	    item.setManagedObject( action );
/*
	    if(pos > getChildNodes().size()){
	        pos = getChildNodes().size();
	      }
  	    
	    if( pos < getChildNodes().size() ) {
	    	if( pos >= menu.getItems().length ) {
	    		System.out.println("hmm..."+menu.getItems().length);
	    	}
	   		String anchorId = menu.getItems()[pos].getId();
	   		if( anchorId == null ) {
	   			System.out.println("can't find anchor id for "+((JfaceMenuitem) c).getLabel());
		    	menu.add(action);
		    	super.addChild(c);
	   		} else {
	   			menu.insertBefore(anchorId, action);
	   			super.addChildAt(c, pos);
	   		}
	    } else {
	    	super.addChild(c);
	    	menu.add(action);
	    }
    }
	    */
  }
  public void setVisible(boolean visible) {
    super.setVisible(visible);
    if( != null){
      this..setVisible(visible);
      for(IContributionItem item : .getItems()){
          item.setVisible(visible);
        }
    }
  }
  public void setDisabled(boolean disabled) {
    super.setDisabled(disabled);
  }
  
  public void removeChild(Element e) {
	  ife instanceof JfaceMenuitem ) {
		  ((JfaceMenuitem)e).setVisible(false);
	  }
	  ife instanceof JfaceMenupopup ) {
		  ((JfaceMenupopup)e).setVisible(false);
	  }
	  ife instanceof JfaceMenu ) {
		  ((JfaceMenu)e).setVisible(false);
	  }
  }
  
  public void removeChildren() {
    .removeAll();
  }
}

  
New to GrepCode? Check out our FAQ X