diff --git a/documentation/ChangeLog.md b/documentation/ChangeLog.md index 3be2bbdb0..cc613ec44 100644 --- a/documentation/ChangeLog.md +++ b/documentation/ChangeLog.md @@ -1,5 +1,8 @@ ## DDT release ChangeLog +### DDT 0.10.x + * Changed: Creating a new DUB project now creates a Hello World app. (fix problem mentioned in #58) + ### DDT 0.10.2 * Updated minimum required CDT version to 8.4. * For more info on new CDT debug features, see: https://wiki.eclipse.org/CDT/User/NewIn84#Debug diff --git a/plugin_ide.core.tests/src-lang/melnorme/lang/ide/core/tests/CommonCoreTest.java b/plugin_ide.core.tests/src-lang/melnorme/lang/ide/core/tests/CommonCoreTest.java index e0d570f42..447fff2d2 100644 --- a/plugin_ide.core.tests/src-lang/melnorme/lang/ide/core/tests/CommonCoreTest.java +++ b/plugin_ide.core.tests/src-lang/melnorme/lang/ide/core/tests/CommonCoreTest.java @@ -14,7 +14,6 @@ import static melnorme.utilbox.core.Assert.AssertNamespace.assertFail; import static melnorme.utilbox.core.Assert.AssertNamespace.assertTrue; -import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; @@ -145,11 +144,7 @@ public static String readFileContents(IFile file) throws CoreException, IOExcept public static void writeStringToFile(IProject project, String filePath, String contents) throws CoreException { IFile file = project.getFile(filePath); - writeStringToFile(file, contents); - } - - public static void writeStringToFile(IFile file, String contents) throws CoreException { - ResourceUtils.writeToFile(file, new ByteArrayInputStream(contents.getBytes(StringUtil.UTF8))); + ResourceUtils.writeStringToFile(file, contents); } } \ No newline at end of file diff --git a/plugin_ide.core/src-lang/melnorme/lang/ide/core/utils/ResourceUtils.java b/plugin_ide.core/src-lang/melnorme/lang/ide/core/utils/ResourceUtils.java index 7730c37ed..ab4d6eaf5 100644 --- a/plugin_ide.core/src-lang/melnorme/lang/ide/core/utils/ResourceUtils.java +++ b/plugin_ide.core/src-lang/melnorme/lang/ide/core/utils/ResourceUtils.java @@ -12,7 +12,11 @@ import static melnorme.utilbox.core.Assert.AssertNamespace.assertFail; +import java.io.ByteArrayInputStream; import java.io.InputStream; +import java.nio.charset.Charset; + +import melnorme.utilbox.misc.StringUtil; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; @@ -49,6 +53,14 @@ public static void writeToFile(IFile file, InputStream is) throws CoreException } } + public static void writeStringToFile(IFile file, String contents) throws CoreException { + writeStringToFile(file, contents, StringUtil.UTF8); + } + + public static void writeStringToFile(IFile file, String contents, Charset charset) throws CoreException { + writeToFile(file, new ByteArrayInputStream(contents.getBytes(charset))); + } + public static void createFolder(IFolder folder, boolean force, boolean local, IProgressMonitor monitor) throws CoreException { if (folder.exists()) { diff --git a/plugin_ide.ui.tests/src-lang/melnorme/lang/ide/ui/editor/text/LangAutoEditStrategyTest.java b/plugin_ide.ui.tests/src-lang/melnorme/lang/ide/ui/editor/text/LangAutoEditStrategyTest.java index 1c74fd189..286ec5fce 100644 --- a/plugin_ide.ui.tests/src-lang/melnorme/lang/ide/ui/editor/text/LangAutoEditStrategyTest.java +++ b/plugin_ide.ui.tests/src-lang/melnorme/lang/ide/ui/editor/text/LangAutoEditStrategyTest.java @@ -11,9 +11,6 @@ package melnorme.lang.ide.ui.editor.text; import static melnorme.utilbox.core.Assert.AssertNamespace.assertTrue; - -import java.io.IOException; - import melnorme.lang.ide.ui.CodeFormatterConstants; import melnorme.lang.ide.ui.CodeFormatterConstants.IndentMode; import melnorme.lang.ide.ui.text.BlockHeuristicsScannner; @@ -36,11 +33,7 @@ public class LangAutoEditStrategyTest extends Scanner_BaseTest { public static final String NEUTRAL_SRCX; static { - try { - NEUTRAL_SRCX = MiscUtil.getClassResourceAsString(LangAutoEditStrategyTest.class, "sample_block_code"); - } catch (IOException e) { - throw melnorme.utilbox.core.ExceptionAdapter.unchecked(e); - } + NEUTRAL_SRCX = MiscUtil.getClassResourceAsString(LangAutoEditStrategyTest.class, "sample_block_code"); } public static final String PENDING_WS1 = " "; diff --git a/plugin_ide.ui/src/mmrnmhrm/ui/wizards/DeeNewWizardMessages.java b/plugin_ide.ui/src/mmrnmhrm/ui/wizards/DeeNewWizardMessages.java index 35fbd6b8b..4740f7567 100644 --- a/plugin_ide.ui/src/mmrnmhrm/ui/wizards/DeeNewWizardMessages.java +++ b/plugin_ide.ui/src/mmrnmhrm/ui/wizards/DeeNewWizardMessages.java @@ -26,7 +26,7 @@ private DeeNewWizardMessages() { "Create a DUB project."; public static String LangNewProject_Page1_pageDescription = "Create a DUB project in the workspace or in an external location."; - + public static String LangNewProject_Page1_NameGroup_label = "&Project name:"; @@ -41,6 +41,9 @@ private DeeNewWizardMessages() { public static String LangNewProject_Page1_LocationGroup_browseButton_desc = "B&rowse..."; + public static final String DltkNewProject_Page1_Location_workspaceDesc = + "Create new \"Hello World\" project in workspace"; + public static String LangNewProject_Page1_Message_enterProjectName = "Enter a project name."; public static String LangNewProject_Page1_Message_projectAlreadyExists = diff --git a/plugin_ide.ui/src/mmrnmhrm/ui/wizards/DeeProjectWizard.java b/plugin_ide.ui/src/mmrnmhrm/ui/wizards/DeeProjectWizard.java index 211e2741e..0a2d8164f 100644 --- a/plugin_ide.ui/src/mmrnmhrm/ui/wizards/DeeProjectWizard.java +++ b/plugin_ide.ui/src/mmrnmhrm/ui/wizards/DeeProjectWizard.java @@ -1,13 +1,14 @@ package mmrnmhrm.ui.wizards; +import static melnorme.utilbox.misc.MiscUtil.getClassResourceAsString; + import java.io.ByteArrayInputStream; import java.lang.reflect.InvocationTargetException; import java.nio.charset.Charset; import melnorme.lang.ide.core.utils.ResourceUtils; import melnorme.lang.ide.ui.utils.WorkbenchUtils; -import melnorme.utilbox.misc.StringUtil; import mmrnmhrm.core.DeeCore; import mmrnmhrm.ui.DeeUIPlugin; @@ -43,6 +44,12 @@ public class DeeProjectWizard extends ProjectWizardExtension { public static final String WIZARD_ID = DeeUIPlugin.PLUGIN_ID + ".wizards.deeProjectWizard"; + protected static final String HelloWorld_DubJsonTemplate = getClassResourceAsString( + DeeProjectWizard.class, "hello_world.dub.json"); + protected static final String HelloWorld_ModuleContents = getClassResourceAsString( + DeeProjectWizard.class, "hello_world.d"); + + protected final ProjectWizardFirstPage fFirstPage = new DeeProjectWizardPage1(this); protected final DeeProjectWizardBuildSettingsPage fBuildSettingsPage = new DeeProjectWizardBuildSettingsPage(this); @@ -104,9 +111,9 @@ protected void configureProjectBuildpath(IProject project, IProgressMonitor moni final IFolder folder = project.getFolder("source"); ResourceUtils.createFolder(folder, true, true, null); + ResourceUtils.writeStringToFile(folder.getFile("app.d"), HelloWorld_ModuleContents); - String dubManifestSource = getDefaultDubJSon(); - ResourceUtils.writeToFile(dubManifest, createInputStream(dubManifestSource, StringUtil.UTF8)); + ResourceUtils.writeStringToFile(dubManifest, getDefaultDubJSon()); } } @@ -115,25 +122,11 @@ protected ByteArrayInputStream createInputStream(String string, Charset charset) } protected String getDefaultDubJSon() { - return - "{\n" + - jsEntry("name", getProject().getName()) +",\n"+ - jsEntry("description", "A minimal D bundle.") +",\n"+ - jsEntryValue("dependencies", "{\n\t}") +"\n"+ - "}"; - } - - protected String jsEntry(String idString, String valueString) { - return "\t" + '"' +idString+ '"' + " : " + '"' +valueString+ '"'; - } - - protected String jsEntryValue(String idString, String valueString) { - return "\t" + '"' +idString+ '"' + " : " + valueString; + return HelloWorld_DubJsonTemplate.replace("%BUNDLE_NAME%", getProject().getName()); } @Override - protected void finishPage(IProgressMonitor monitor) - throws InterruptedException, CoreException { + protected void finishPage(IProgressMonitor monitor) throws InterruptedException, CoreException { getProjectCreator().performFinish(monitor); } diff --git a/plugin_ide.ui/src/mmrnmhrm/ui/wizards/DeeProjectWizardPage1.java b/plugin_ide.ui/src/mmrnmhrm/ui/wizards/DeeProjectWizardPage1.java index ac9098a6f..e606ca469 100644 --- a/plugin_ide.ui/src/mmrnmhrm/ui/wizards/DeeProjectWizardPage1.java +++ b/plugin_ide.ui/src/mmrnmhrm/ui/wizards/DeeProjectWizardPage1.java @@ -16,9 +16,26 @@ public DeeProjectWizardPage1(DeeProjectWizard deeNewProjectWizard) { this.deeNewProjectWizard = deeNewProjectWizard; } + @Override + public void createControl(Composite parent) { + super.createControl(parent); + } + @Override protected LocationGroup createLocationGroup() { return new LocationGroup() { + + @Override + public void createControls(Composite composite) { + super.createControls(composite); + } + + @Override + protected void createModeControls(Composite group, int numColumns) { + super.createModeControls(group, numColumns); + fWorkspaceRadio.setLabelText(DeeNewWizardMessages.DltkNewProject_Page1_Location_workspaceDesc); + } + @Override protected void createEnvironmentControls(Composite group, int numColumns) { //super.createEnvironmentControls(group, numColumns); diff --git a/plugin_ide.ui/src/mmrnmhrm/ui/wizards/hello_world.d b/plugin_ide.ui/src/mmrnmhrm/ui/wizards/hello_world.d new file mode 100644 index 000000000..e7dcc275e --- /dev/null +++ b/plugin_ide.ui/src/mmrnmhrm/ui/wizards/hello_world.d @@ -0,0 +1,5 @@ +import std.stdio; + +void main() { + writeln("Hello World."); +} \ No newline at end of file diff --git a/plugin_ide.ui/src/mmrnmhrm/ui/wizards/hello_world.dub.json b/plugin_ide.ui/src/mmrnmhrm/ui/wizards/hello_world.dub.json new file mode 100644 index 000000000..d41d5b475 --- /dev/null +++ b/plugin_ide.ui/src/mmrnmhrm/ui/wizards/hello_world.dub.json @@ -0,0 +1,6 @@ +{ + "name" : "%BUNDLE_NAME%", + "description" : "Hello World - A minimal DUB bundle.", + "dependencies" : { + } +} \ No newline at end of file diff --git a/plugin_tooling/src-util/melnorme/utilbox/misc/MiscUtil.java b/plugin_tooling/src-util/melnorme/utilbox/misc/MiscUtil.java index cbf4457cf..9608505e1 100644 --- a/plugin_tooling/src-util/melnorme/utilbox/misc/MiscUtil.java +++ b/plugin_tooling/src-util/melnorme/utilbox/misc/MiscUtil.java @@ -155,8 +155,12 @@ public static boolean isUncheckedException(Throwable throwable) { return throwable instanceof RuntimeException || throwable instanceof Error; } - public static String getClassResourceAsString(Class klass, String resourceName) throws IOException { - return readAllBytesFromStream(klass.getResourceAsStream(resourceName)).toString(StringUtil.UTF8); + public static String getClassResourceAsString(Class klass, String resourceName) { + try { + return readAllBytesFromStream(klass.getResourceAsStream(resourceName)).toString(StringUtil.UTF8); + } catch (IOException e) { + throw melnorme.utilbox.core.ExceptionAdapter.unchecked(e); + } } } \ No newline at end of file