/*
* Copyright (c) 2012, 2013 Hemanta Sapkota.
* 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:
* Hemanta Sapkota (laex.pearl@gmail.com)
*/
package com.laex.cg2d.entityeditor.wizards;
import java.util.List;
import java.util.Queue;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.dialogs.ContainerSelectionDialog;
import org.eclipse.ui.forms.widgets.FormToolkit;
import com.laex.cg2d.entityeditor.ui.ImportSpriteCompositeDelegate;
import com.laex.cg2d.entityeditor.ui.ImportSpritesComposite;
import com.laex.cg2d.model.model.EntitySpritesheetItem;
import com.laex.cg2d.model.model.ResourceFile;
/**
* The Class NewEntityPage.
*/
public class NewEntitiesFromSpritesheetPage extends WizardPage implements ImportSpriteCompositeDelegate {
/** The path to project. */
private IPath pathToProject;
/** The form toolkit. */
private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
/** The spritesheet items. */
private List<EntitySpritesheetItem> spritesheetItems;
/** The extracted images. */
private Queue<Image> extractedImages;
/** The spritesheet file. */
private ResourceFile spritesheetFile;
/** The spritesheet json file. */
private ResourceFile spritesheetJsonFile;
/** The resource container. */
private IResource resourceContainer;
/**
* Create the wizard.
*
* @wbp.parser.constructor
*/
public NewEntitiesFromSpritesheetPage() {
super("wizardPage");
setTitle("New Entities from Spritesheet");
setPageComplete(false);
}
/**
* Instantiates a new new entity page.
*
* @param resourceContainer the resource container
*/
public NewEntitiesFromSpritesheetPage(IResource resourceContainer) {
this();
this.resourceContainer = resourceContainer;
}
/**
* Create contents of the wizard.
*
* @param parent
* the parent
*/
public void createControl(Composite parent) {
Composite container = new Composite(parent, SWT.NULL);
setControl(container);
container.setLayout(new FillLayout(SWT.HORIZONTAL));
ImportSpritesComposite importSpritesComposite = new ImportSpritesComposite(resourceContainer, container, SWT.NONE);
importSpritesComposite.setDelegate(this);
formToolkit.adapt(importSpritesComposite);
formToolkit.paintBordersFor(importSpritesComposite);
getShell().setMaximized(true);
}
/**
* Open container resource dialog.
*/
protected void openContainerResourceDialog() {
ContainerSelectionDialog csd = new ContainerSelectionDialog(getShell(), ResourcesPlugin.getWorkspace().getRoot(),
false, "Select a project");
int response = csd.open();
if (response == ContainerSelectionDialog.CANCEL) {
return;
}
pathToProject = (IPath) csd.getResult()[0];
}
/**
* Gets the path to project.
*
* @return the path to project
*/
public IPath getPathToProject() {
return pathToProject;
}
/**
* Gets the spritesheet items.
*
* @return the spritesheet items
*/
public List<EntitySpritesheetItem> getSpritesheetItems() {
return spritesheetItems;
}
/**
* Gets the extracted images.
*
* @return the extracted images
*/
public Queue<Image> getExtractedImages() {
return extractedImages;
}
/**
* Gets the spritesheet file.
*
* @return the spritesheet file
*/
public ResourceFile getSpritesheetFile() {
return spritesheetFile;
}
/**
* Gets the spritesheet json file.
*
* @return the spritesheet json file
*/
public ResourceFile getSpritesheetJsonFile() {
return spritesheetJsonFile;
}
/* (non-Javadoc)
* @see com.laex.cg2d.entityeditor.ui.ImportSpriteCompositeDelegate#spriteExtractionComplete(com.laex.cg2d.model.model.ResourceFile, com.laex.cg2d.model.model.ResourceFile, java.util.List, java.util.Queue)
*/
@Override
public void spriteExtractionComplete(ResourceFile spritesheetFile, ResourceFile spritesheetJsonFile,
List<EntitySpritesheetItem> spritesheetItems, Queue<Image> extractedImages) {
setPageComplete(true);
this.spritesheetItems = spritesheetItems;
this.extractedImages = extractedImages;
this.spritesheetFile = spritesheetFile;
this.spritesheetJsonFile = spritesheetJsonFile;
}
}