Ejemplo n.º 1
0
  /**
   * @see org.teiid.designer.ui.common.actions.IActionWorker#getEnableState()
   * @since 4.2
   */
  @Override
  public boolean setEnabledState() {
    boolean enable = false;
    Object selection = getSelection();
    boolean foundResource = false;
    if (selection instanceof ISelection) {
      ISelection iSelection = (ISelection) selection;
      if (!iSelection.isEmpty() && !isReadOnly() && canLegallyEditResource()) {
        if (SelectionUtilities.isAllEObjects(iSelection)) {
          enable = true;
          // check each object, break out if false
          for (Iterator iter = SelectionUtilities.getSelectedEObjects(iSelection).iterator();
              iter.hasNext() && enable; ) {
            EObject obj = (EObject) iter.next();
            // Check Read-Only, Check if Diagram (ask diagram), Check Helper
            if (obj == null || ModelObjectUtilities.isReadOnly(obj)) {
              enable = false; // and quit checking
            } else {
              if (obj instanceof Diagram) {
                enable = DiagramHelperManager.canDelete((Diagram) obj);
              } else {
                enable = ModelObjectEditHelperManager.canDelete(obj); // and keep checking
              }
              // We got this far, now we need to cache up a focused object for opening an editor
              // so it reveals the proper container (i.e. package diagram)
              // Only do this once for effiency
              if (!foundResource && enable) {
                focusedObject = obj;
                foundResource = true;
                modelResource = ModelUtilities.getModelResourceForModelObject(obj);
              }
            }
            if (!enable) break;
          }
        }
      }
    }

    if (!enable) {
      modelResource = null;
      focusedObject = null;
    }

    if (UiPlugin.getDefault().getCurrentWorkbenchWindow().getActivePage() != null) {
      IWorkbenchPart theActivePart =
          UiPlugin.getDefault().getCurrentWorkbenchWindow().getActivePage().getActivePart();
      if (theActivePart != null) {
        // System.out.println(" >>> DeleteWorker.setEnabledState()  Active Part = " +
        // theActivePart);
      }
    }
    return enable;
  }