Author: timotei
Date: Sat Jul 30 09:58:53 2011
New Revision: 50478
URL: http://svn.gna.org/viewcvs/wesnoth?rev=50478&view=rev
Log:
eclipse plugin: Refactor a bit the project creation
wizards to remove redundant code
Modified:
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wizards/WizardProjectPageTemplate.java
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wizards/WizardTemplate.java
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wizards/campaign/CampaignNewWizard.java
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wizards/emptyproject/EmptyProjectNewWizard.java
Modified:
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wizards/WizardProjectPageTemplate.java
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wizards/WizardProjectPageTemplate.java?rev=50478&r1=50477&r2=50478&view=diff
==============================================================================
---
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wizards/WizardProjectPageTemplate.java
(original)
+++
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wizards/WizardProjectPageTemplate.java
Sat Jul 30 09:58:53 2011
@@ -8,6 +8,12 @@
*******************************************************************************/
package org.wesnoth.wizards;
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
@@ -15,10 +21,13 @@
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
-import org.wesnoth.installs.WesnothInstall;
import org.wesnoth.installs.WesnothInstallsUtils;
import org.wesnoth.preferences.Preferences;
import org.wesnoth.preferences.Preferences.Paths;
+import org.wesnoth.projects.ProjectUtils;
+import org.wesnoth.templates.ReplaceableParameter;
+import org.wesnoth.templates.TemplateProvider;
+import org.wesnoth.utils.Pair;
import org.wesnoth.utils.ResourceUtils;
/**
@@ -57,20 +66,7 @@
gd_cmbInstalls.widthHint = 154;
cmbInstalls_.setLayoutData(gd_cmbInstalls);
- // fill the installs
- String defaultInstallName = Preferences.getDefaultInstallName( );
- for ( WesnothInstall install : WesnothInstallsUtils.getInstalls( ) ) {
- cmbInstalls_.add( install.getName( ) );
-
- // select the default
- if ( install.getName( ).equals( defaultInstallName ) )
- cmbInstalls_.select( cmbInstalls_.getItemCount( ) - 1 );
- }
-
- // select the first if there is no other selected
- if ( cmbInstalls_.getSelectionIndex( ) == -1 &&
- cmbInstalls_.getItemCount( ) > 0 )
- cmbInstalls_.select( 0 );
+ WesnothInstallsUtils.fillComboWithInstalls( cmbInstalls_ );
}
/**
@@ -93,4 +89,69 @@
{
return cmbInstalls_.getText( );
}
+
+ /**
+ * Creates the project this page was setup with
+ * @return The newly created project's handle
+ */
+ public IProject createProject( IProgressMonitor monitor,
+ String templateName, List<ReplaceableParameter> params,
+ boolean generatePBL )
+ {
+ monitor.subTask( "Creating the project structure");
+
+ IProject currentProject = getProjectHandle();
+
+ // the project
+ if (
getLocationPath().equals(ResourcesPlugin.getWorkspace().getRoot().getLocation()))
+ {
+ ProjectUtils.createWesnothProject(currentProject, null,
+ getSelectedInstallName( ), true, monitor);
+ }
+ else
+ {
+ IProjectDescription newDescription =
ResourcesPlugin.getWorkspace().
+ newProjectDescription(getProjectName());
+ newDescription.setLocation(getLocationPath());
+ ProjectUtils.createWesnothProject(currentProject, newDescription,
+ getSelectedInstallName( ), true, monitor);
+ }
+
+ monitor.worked(2);
+
+ String projectTemplate =
+
TemplateProvider.getInstance().getProcessedTemplate(templateName, params);
+
+ List<Pair<String, String>> files;
+ List<String> dirs;
+ Pair<List<Pair<String, String>>, List<String>> tmp =
+ TemplateProvider.getInstance().getFilesDirectories(
projectTemplate );
+ files = tmp.First;
+ dirs = tmp.Second;
+
+ for (Pair<String, String> file : files)
+ {
+ if ( file.Second.equals("pbl") && //$NON-NLS-1$
+ ! generatePBL )
+ continue;
+
+ if ( file.Second.equals("build_xml") && //$NON-NLS-1$
+ ! needsBuildXML( ) )
+ continue;
+
+ ResourceUtils.createFile( currentProject, file.First,
+ TemplateProvider.getInstance().getProcessedTemplate(
file.Second, params ),
+ true );
+ monitor.worked(1);
+ }
+
+ for (String dir : dirs)
+ {
+ ResourceUtils.createFolder(currentProject, dir);
+ monitor.worked(1);
+ }
+
+ monitor.done();
+ return currentProject;
+ }
}
Modified:
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wizards/WizardTemplate.java
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wizards/WizardTemplate.java?rev=50478&r1=50477&r2=50478&view=diff
==============================================================================
--- trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wizards/WizardTemplate.java
(original)
+++ trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wizards/WizardTemplate.java
Sat Jul 30 09:58:53 2011
@@ -22,14 +22,11 @@
{
protected IStructuredSelection selection_;
protected IContainer selectionContainer_;
- protected int lastPageHashCode_
= 0;
+ protected IWizardPage lastPage_;
protected boolean isFinished_
= false;
protected Object data_
= null;
protected String objectName_
= ""; //$NON-NLS-1$
- // TODO: wizards should ask the install
- // TODO: detect automatically whether a project is in data or add-ons/
- // without the need for the user to specify
public WizardTemplate()
{
setNeedsProgressMonitor(true);
@@ -85,15 +82,15 @@
public boolean canFinish()
{
IWizardPage page = getContainer().getCurrentPage();
- return super.canFinish() && page.hashCode() ==
lastPageHashCode_ && page.isPageComplete();
+ return super.canFinish() && page == lastPage_ &&
page.isPageComplete();
}
@Override
- public void addPages()
+ public void addPage( IWizardPage page )
{
- if (getPageCount() == 0)
- return;
- lastPageHashCode_ = getPages()[getPageCount() - 1].hashCode();
+ super.addPage( page );
+
+ lastPage_ = page;
}
public boolean isFinished()
Modified:
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wizards/campaign/CampaignNewWizard.java
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wizards/campaign/CampaignNewWizard.java?rev=50478&r1=50477&r2=50478&view=diff
==============================================================================
---
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wizards/campaign/CampaignNewWizard.java
(original)
+++
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wizards/campaign/CampaignNewWizard.java
Sat Jul 30 09:58:53 2011
@@ -13,26 +13,25 @@
import java.util.List;
import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IProjectDescription;
-import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.wesnoth.Logger;
import org.wesnoth.Messages;
import org.wesnoth.projects.ProjectUtils;
import org.wesnoth.templates.ReplaceableParameter;
-import org.wesnoth.templates.TemplateProvider;
-import org.wesnoth.utils.Pair;
-import org.wesnoth.utils.ResourceUtils;
import org.wesnoth.wizards.WizardProjectPageTemplate;
import org.wesnoth.wizards.WizardTemplate;
-
public class CampaignNewWizard extends WizardTemplate
{
- protected WizardProjectPageTemplate page0_;
+ protected WizardProjectPageTemplate page0_;
protected CampaignPage1 page1_;
protected CampaignPage2 page2_;
+
+ public CampaignNewWizard() {
+ setWindowTitle(Messages.CampaignNewWizard_0);
+ setNeedsProgressMonitor(true);
+ }
@Override
public void addPages()
@@ -46,13 +45,6 @@
page2_ = new CampaignPage2();
addPage(page2_);
-
- super.addPages();
- }
-
- public CampaignNewWizard() {
- setWindowTitle(Messages.CampaignNewWizard_0);
- setNeedsProgressMonitor(true);
}
@Override
@@ -65,7 +57,15 @@
@Override
public void run(IProgressMonitor monitor)
throws InvocationTargetException, InterruptedException
{
- createProject(monitor);
+ IProject currentProject =
+ page0_.createProject( monitor,
"campaign_structure",
+ getParameters( ),
page1_.needsPBLFile( ) );
+
+ // store some campaign-related info
+ ProjectUtils.getPropertiesForProject(
currentProject ).
+ put("difficulties",
page2_.getDifficulties()); //$NON-NLS-1$
+ ProjectUtils.getCacheForProject( currentProject
).saveCache( );
+
monitor.done();
}
});
@@ -77,67 +77,9 @@
return true;
}
- public void createProject(IProgressMonitor monitor)
+ private List<ReplaceableParameter> getParameters( )
{
- monitor.beginTask(Messages.CampaignNewWizard_1, 15);
-
- IProject currentProject = page0_.getProjectHandle();
-
- // the project
- if
(page0_.getLocationPath().equals(ResourcesPlugin.getWorkspace().getRoot().getLocation()))
- {
- ProjectUtils.createWesnothProject(currentProject, null,
- page0_.getSelectedInstallName( ), true,
monitor);
- }
- else
- {
- IProjectDescription newDescription =
ResourcesPlugin.getWorkspace().
- newProjectDescription(page0_.getProjectName());
- newDescription.setLocation(page0_.getLocationPath());
- ProjectUtils.createWesnothProject(currentProject,
newDescription,
- page0_.getSelectedInstallName( ), true,
monitor);
- }
- monitor.worked(2);
-
- String campaignStructure =
prepareTemplate("campaign_structure"); //$NON-NLS-1$
- if (campaignStructure == null)
- return;
-
- List<Pair<String, String>> files;
- List<String> dirs;
- Pair<List<Pair<String, String>>, List<String>> tmp =
TemplateProvider.getInstance().getFilesDirectories(campaignStructure);
- files = tmp.First;
- dirs = tmp.Second;
-
- for (Pair<String, String> file : files)
- {
- if (file.Second.equals("pbl") && //$NON-NLS-1$
- page1_.needsPBLFile( ) == false)
- continue;
-
- if ( file.Second.equals("build_xml") && //$NON-NLS-1$
- ! page0_.needsBuildXML( ) )
- continue;
-
- ResourceUtils.createFile(currentProject, file.First,
prepareTemplate(file.Second), true);
- monitor.worked(1);
- }
- for (String dir : dirs)
- {
- ResourceUtils.createFolder(currentProject, dir);
- monitor.worked(1);
- }
-
- // store some campaign-related info
-
ProjectUtils.getPropertiesForProject(currentProject).put("difficulties",
page2_.getDifficulties()); //$NON-NLS-1$
- ProjectUtils.getCacheForProject( currentProject ).saveCache( );
-
- monitor.done();
- }
-
- private String prepareTemplate(String templateName)
- {
- ArrayList<ReplaceableParameter> params = new
ArrayList<ReplaceableParameter>();
+ List<ReplaceableParameter> params = new
ArrayList<ReplaceableParameter>();
params.add(new ReplaceableParameter("$$campaign_name",
page1_.getCampaignName())); //$NON-NLS-1$
params.add(new ReplaceableParameter("$$author",
page1_.getAuthor())); //$NON-NLS-1$
@@ -158,6 +100,6 @@
params.add(new ReplaceableParameter("$$project_dir_name",
page0_.getProjectName())); //$NON-NLS-1$
params.add(new ReplaceableParameter("$$type",
page1_.isMultiplayer() ? "campaign_mp" : "campaign")); //$NON-NLS-1$
//$NON-NLS-2$ //$NON-NLS-3$
- return
TemplateProvider.getInstance().getProcessedTemplate(templateName, params);
+ return params;
}
}
Modified:
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wizards/emptyproject/EmptyProjectNewWizard.java
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wizards/emptyproject/EmptyProjectNewWizard.java?rev=50478&r1=50477&r2=50478&view=diff
==============================================================================
---
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wizards/emptyproject/EmptyProjectNewWizard.java
(original)
+++
trunk/utils/umc_dev/org.wesnoth/src/org/wesnoth/wizards/emptyproject/EmptyProjectNewWizard.java
Sat Jul 30 09:58:53 2011
@@ -12,26 +12,22 @@
import java.util.ArrayList;
import java.util.List;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IProjectDescription;
-import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.wesnoth.Logger;
import org.wesnoth.Messages;
-import org.wesnoth.projects.ProjectUtils;
import org.wesnoth.templates.ReplaceableParameter;
-import org.wesnoth.templates.TemplateProvider;
-import org.wesnoth.utils.Pair;
-import org.wesnoth.utils.ResourceUtils;
import org.wesnoth.wizards.WizardProjectPageTemplate;
import org.wesnoth.wizards.WizardTemplate;
-
public class EmptyProjectNewWizard extends WizardTemplate
{
protected WizardProjectPageTemplate page0_;
protected EmptyProjectPage1 page1_;
+
+ public EmptyProjectNewWizard() {
+ setWindowTitle(Messages.EmptyProjectNewWizard_0);
+ }
@Override
public void addPages()
@@ -42,12 +38,6 @@
page1_ = new EmptyProjectPage1();
addPage(page1_);
-
- super.addPages();
- }
-
- public EmptyProjectNewWizard() {
- setWindowTitle(Messages.EmptyProjectNewWizard_0);
}
@Override
@@ -68,7 +58,8 @@
public void run(IProgressMonitor monitor)
throws
InvocationTargetException, InterruptedException
{
- createProject(monitor);
+ page0_.createProject( monitor,
"empty_project",
+ getParameters( ),
page1_.getGeneratePBLFile( ) );
monitor.done();
}
});
@@ -80,65 +71,9 @@
return true;
}
- public void createProject(IProgressMonitor monitor)
+ private List<ReplaceableParameter> getParameters( )
{
- monitor.beginTask(Messages.EmptyProjectNewWizard_1, 15);
-
- IProject currentProject = page0_.getProjectHandle();
-
- // the project
- if
(page0_.getLocationPath().equals(ResourcesPlugin.getWorkspace().getRoot().getLocation()))
- {
- ProjectUtils.createWesnothProject(currentProject, null,
- page0_.getSelectedInstallName( ), true,
monitor);
- }
- else
- {
- IProjectDescription newDescription =
ResourcesPlugin.getWorkspace().
- newProjectDescription(page0_.getProjectName());
- newDescription.setLocation(page0_.getLocationPath());
- ProjectUtils.createWesnothProject(currentProject,
newDescription,
- page0_.getSelectedInstallName( ), true,
monitor);
- }
-
- monitor.worked(2);
-
- String emptyProjectStructure =
prepareTemplate("empty_project"); //$NON-NLS-1$
- if (emptyProjectStructure == null)
- return;
-
- List<Pair<String, String>> files;
- List<String> dirs;
- Pair<List<Pair<String, String>>, List<String>> tmp =
-
TemplateProvider.getInstance().getFilesDirectories(emptyProjectStructure);
- files = tmp.First;
- dirs = tmp.Second;
-
- for (Pair<String, String> file : files)
- {
- if (file.Second.equals("pbl") && //$NON-NLS-1$
- page1_.getGeneratePBLFile() == false)
- continue;
-
- if ( file.Second.equals("build_xml") && //$NON-NLS-1$
- ! page0_.needsBuildXML( ) )
- continue;
-
- ResourceUtils.createFile(currentProject, file.First,
prepareTemplate(file.Second), true);
- monitor.worked(1);
- }
- for (String dir : dirs)
- {
- ResourceUtils.createFolder(currentProject, dir);
- monitor.worked(1);
- }
-
- monitor.done();
- }
-
- private String prepareTemplate(String templateName)
- {
- ArrayList<ReplaceableParameter> params = new
ArrayList<ReplaceableParameter>();
+ List<ReplaceableParameter> params = new
ArrayList<ReplaceableParameter>();
params.add(new ReplaceableParameter("$$campaign_name",
page1_.getCampaignName())); //$NON-NLS-1$
params.add(new ReplaceableParameter("$$author",
page1_.getAuthor())); //$NON-NLS-1$
@@ -153,6 +88,6 @@
params.add(new ReplaceableParameter("$$project_dir_name",
page0_.getProjectName())); //$NON-NLS-1$
params.add(new ReplaceableParameter("$$type",
page1_.getType())); //$NON-NLS-1$
- return
TemplateProvider.getInstance().getProcessedTemplate(templateName, params);
+ return params;
}
}
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits