Package de.innovationgate.eclipse.editors.design.wizards

Source Code of de.innovationgate.eclipse.editors.design.wizards.ExportWGADesignWizardBase

/*******************************************************************************
* Copyright (c) 2009, 2010 Innovation Gate GmbH.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     Innovation Gate GmbH - initial API and implementation
******************************************************************************/
package de.innovationgate.eclipse.editors.design.wizards;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.Path;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IExportWizard;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.PartInitException;

import de.innovationgate.eclipse.editors.Plugin;
import de.innovationgate.eclipse.editors.ResourceIDs;
import de.innovationgate.eclipse.editors.design.WGADesignEditor;
import de.innovationgate.eclipse.utils.WorkbenchUtils;
import de.innovationgate.eclipse.utils.ui.CancelWizardPage;
import de.innovationgate.eclipse.utils.wga.WGADesignStructureHelper;
import de.innovationgate.utils.WGUtils;
import de.innovationgate.wga.model.WGADesignConfigurationModel;

/**
* base implementation for design/ plugin export wizards
*
*
*/
public abstract class ExportWGADesignWizardBase extends Wizard implements IExportWizard {

  protected IContainer _designContainer;
  protected WGADesignConfigurationModel _model;
  private boolean _openDesignEditor;
 
  protected List<IWizardPage> _pages = new ArrayList<IWizardPage>();
  private WGADesignStructureHelper _designHelper;
 
  public ExportWGADesignWizardBase() {
  }

  @Override
  public boolean performFinish() {
    if (_openDesignEditor) {
      try {
        IEditorPart editor = WorkbenchUtils.openEditor(Plugin.getDefault().getWorkbench(), new WGADesignStructureHelper(_designContainer).getSyncInfo(), WGADesignEditor.ID);
        if (editor instanceof WGADesignEditor) {
          ((WGADesignEditor) editor).setActivePage(ResourceIDs.EDITORPAGE_WGA_DESIGN_PLUGINCONFIGURATION);
        }
        return true;
      } catch (PartInitException e) {
        Plugin.getDefault().logError(e);
        return false;
      }
    }
    return innerPerformFinish();
  }

  protected abstract boolean innerPerformFinish();

  @Override
  public void addPages() {
    try {
      boolean designEditorOpenAndDirty = false;
      Iterator<IEditorPart> editors = WorkbenchUtils.findOpenEditors(Plugin.getDefault().getWorkbench(), ResourceIDs.EDITOR_WGA_DESIGN, _designHelper.getSyncInfo()).iterator();
      while (editors.hasNext()) {
        IEditorPart editorPart = editors.next();
        if (editorPart.isDirty()) {
          designEditorOpenAndDirty = true;
          break;
        }
      }
      if (designEditorOpenAndDirty) {
        addPage(new CancelWizardPage("Design Editor has unsaved changes.", "Design Editor has unsaved changes, please perform a save first."));
        _openDesignEditor = true;
      } else {
        Iterator<IWizardPage> pages = createPages().iterator();
        while (pages.hasNext()) {
          addPage(pages.next());
        }
      }
     
    } catch (Exception e) {
      Plugin.getDefault().logError(e);
    }
  }
 
  protected abstract List<IWizardPage> createPages();

  public void init(IWorkbench workbench, IStructuredSelection selection) {
    _designContainer = null;
    // folder based design selected?
    if (selection instanceof IStructuredSelection) {
      IStructuredSelection structSelection = (IStructuredSelection) selection;
      Object selectedElement = structSelection.getFirstElement();
      if (selectedElement instanceof IContainer) {
        IContainer container = (IContainer) selectedElement;

        IFile dirlink = container.getFile(new Path("dirlink.xml"));
        if (dirlink.exists()) {
          File linkedFile = WGUtils.resolveDirLink(container.getLocation().toFile());
          container = (IContainer) container.getWorkspace().getRoot().findContainersForLocationURI(linkedFile.toURI())[0];

        }

        if (WGADesignStructureHelper.isDesignFolder(container)) {
          _designContainer = container;
        }

      }
    }   
    if (_designContainer == null) {
      MessageDialog.openInformation(getShell(), "Illegal selection.", "Please select an WGA design folder.");
      return;
    }
   
    _designHelper = new WGADesignStructureHelper(_designContainer);
    try {
      _model = _designHelper.createModel();
    } catch (IOException e) {
      WorkbenchUtils.showErrorDialog(getShell(), "Illegal selection", "Unable to create configuration model for design '" + _designContainer.getLocation() + "'.", e);
      return;
    }
  }

  @Override
  public void addPage(IWizardPage page) {
    super.addPage(page);
    _pages.add(page);
  }
 

  public boolean canFinish() {
    if (!_openDesignEditor) {
      boolean allPagesCompleted = true;
      Iterator<IWizardPage> pages = _pages.iterator();
      while (pages.hasNext()) {
        if (!pages.next().isPageComplete()) {
          allPagesCompleted = false;
          break;
        }
      }
      return allPagesCompleted || super.canFinish();
    }
    else {
      return super.canFinish();
    }
  }

  protected void setOpenDesignEditor(boolean openDesignEditor) {
    _openDesignEditor = openDesignEditor;
  }

}
TOP

Related Classes of de.innovationgate.eclipse.editors.design.wizards.ExportWGADesignWizardBase

TOP
Copyright © 2018 www.massapi.com. 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.