From f5ebd94cd8ec31bf56d87e0625916e21ee0486f8 Mon Sep 17 00:00:00 2001 From: Mateusz Mackowiak Date: Thu, 10 Jan 2013 00:42:56 +0100 Subject: [PATCH 1/4] package Input --- .../android/NewANEProjectWizard$1.class | Bin 1377 -> 1480 bytes .../wizards/android/NewANEProjectWizard.class | Bin 10034 -> 10844 bytes .../android/resources/AndroidManifest.xml | 2 +- .../android/resources/Extension.java.resource | 20 +- .../resources/ExtensionContext.java.resource | 23 +- .../android/resources/Function.java.resource | 20 +- ...rdNewProjectPackageAndLocationPage$1.class | Bin 0 -> 1078 bytes ...rdNewProjectPackageAndLocationPage$2.class | Bin 0 -> 1121 bytes ...rdNewProjectPackageAndLocationPage$3.class | Bin 0 -> 1558 bytes ...zardNewProjectPackageAndLocationPage.class | Bin 0 -> 9945 bytes .../wizards/android/NewANEProjectWizard.java | 64 ++- .../android/resources/AndroidManifest.xml | 2 +- .../android/resources/Extension.java.resource | 20 +- .../resources/ExtensionContext.java.resource | 23 +- .../android/resources/Function.java.resource | 20 +- ...izardNewProjectPackageAndLocationPage.java | 461 ++++++++++++++++++ ANE-Wizard-Eclipse.jar | Bin 13594 -> 20596 bytes ANE-Wizard-FlashBuilder.jar | Bin 11968 -> 19311 bytes .../flashbuilder/NewANEProjectWizard$1.class | Bin 1402 -> 1505 bytes .../flashbuilder/NewANEProjectWizard.class | Bin 9666 -> 10420 bytes .../wizards/flashbuilder/resources/Main.as | 22 +- .../flashbuilder/resources/extension.xml | 24 +- ...rdNewProjectPackageAndLocationPage$1.class | Bin 0 -> 1078 bytes ...rdNewProjectPackageAndLocationPage$2.class | Bin 0 -> 1121 bytes ...rdNewProjectPackageAndLocationPage$3.class | Bin 0 -> 1558 bytes ...zardNewProjectPackageAndLocationPage.class | Bin 0 -> 9945 bytes .../flashbuilder/NewANEProjectWizard.java | 53 +- .../flashbuilder/resources/.flexLibProperties | 2 +- .../wizards/flashbuilder/resources/Main.as | 22 +- .../flashbuilder/resources/extension.xml | 24 +- ...izardNewProjectPackageAndLocationPage.java | 461 ++++++++++++++++++ 31 files changed, 1031 insertions(+), 232 deletions(-) create mode 100644 ANE-Wizard-Android/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage$1.class create mode 100644 ANE-Wizard-Android/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage$2.class create mode 100644 ANE-Wizard-Android/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage$3.class create mode 100644 ANE-Wizard-Android/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage.class create mode 100644 ANE-Wizard-Android/src/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage.java create mode 100644 ANE-Wizard-FlashBuilder/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage$1.class create mode 100644 ANE-Wizard-FlashBuilder/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage$2.class create mode 100644 ANE-Wizard-FlashBuilder/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage$3.class create mode 100644 ANE-Wizard-FlashBuilder/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage.class create mode 100644 ANE-Wizard-FlashBuilder/src/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage.java diff --git a/ANE-Wizard-Android/bin/com/freshplanet/ane/wizards/android/NewANEProjectWizard$1.class b/ANE-Wizard-Android/bin/com/freshplanet/ane/wizards/android/NewANEProjectWizard$1.class index 2aa65f7f026b714b841cefe00bb4fb8a66f591ba..6491e7aa47f5b5df9f57985e330489e964b6dffe 100644 GIT binary patch delta 531 zcmZXRUrWMZ6vm%-TbXm#G_~yiA2XYpWfvwz6cQ9!2!Z!w4Oy8B85Z3LeS;X?2YrIT z6-0Dh-SrXr5?w}TtE;@&d!7U5dCu>B_bI*xT08wJG7ccqqfG-yKXcLYlGn~Wp8q;_7$t{ch41e{ybno+0#O%eK7|E_pw`q?ORqG|V_mZtZc^7DOZFvS33Y+lZ~QsGgk`%VEVcz% zcEJES>|%M9pu9>*^hg|iLG%;l0I417d#H{mX$P{BaS&Fr4kAiia1c`-F?{cNM(Gqi zFWr+|W7JEOK~9Wgf~tT?Otoob+G`kQyaoFd@2-q09m?-ed8H=&hMUj()q###|bKBz^#}&{Yut delta 401 zcmZ9Hy-or_6otQGSCCXnrd+bZ=kMHLRw67b8hyKwwOFN~ zh_|}#Sv{M-|;jE9ao$82`^F(?OOi#7q?^!!ca`~aR+ BFKhq+ diff --git a/ANE-Wizard-Android/bin/com/freshplanet/ane/wizards/android/NewANEProjectWizard.class b/ANE-Wizard-Android/bin/com/freshplanet/ane/wizards/android/NewANEProjectWizard.class index 72a21d83f1127782d7af2598eaf759dd6f000c1a..de1541b73f418a788f567729ba57d533c96994e2 100644 GIT binary patch literal 10844 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 AiU0rr diff --git a/ANE-Wizard-Android/bin/com/freshplanet/ane/wizards/android/resources/AndroidManifest.xml b/ANE-Wizard-Android/bin/com/freshplanet/ane/wizards/android/resources/AndroidManifest.xml index 7a429fe..7a7331b 100644 --- a/ANE-Wizard-Android/bin/com/freshplanet/ane/wizards/android/resources/AndroidManifest.xml +++ b/ANE-Wizard-Android/bin/com/freshplanet/ane/wizards/android/resources/AndroidManifest.xml @@ -1,6 +1,6 @@ diff --git a/ANE-Wizard-Android/bin/com/freshplanet/ane/wizards/android/resources/Extension.java.resource b/ANE-Wizard-Android/bin/com/freshplanet/ane/wizards/android/resources/Extension.java.resource index ad72c57..5c40e9d 100644 --- a/ANE-Wizard-Android/bin/com/freshplanet/ane/wizards/android/resources/Extension.java.resource +++ b/ANE-Wizard-Android/bin/com/freshplanet/ane/wizards/android/resources/Extension.java.resource @@ -1,22 +1,4 @@ -////////////////////////////////////////////////////////////////////////////////////// -// -// Copyright 2012 Freshplanet (http://freshplanet.com | opensource@freshplanet.com) -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -////////////////////////////////////////////////////////////////////////////////////// - -package com.freshplanet.ane.${PROJECT_NAME}; +package ${PACKAGE_NAME}.${PROJECT_NAME}; import android.util.Log; diff --git a/ANE-Wizard-Android/bin/com/freshplanet/ane/wizards/android/resources/ExtensionContext.java.resource b/ANE-Wizard-Android/bin/com/freshplanet/ane/wizards/android/resources/ExtensionContext.java.resource index 4b2409e..30c21b5 100644 --- a/ANE-Wizard-Android/bin/com/freshplanet/ane/wizards/android/resources/ExtensionContext.java.resource +++ b/ANE-Wizard-Android/bin/com/freshplanet/ane/wizards/android/resources/ExtensionContext.java.resource @@ -1,23 +1,4 @@ -////////////////////////////////////////////////////////////////////////////////////// -// -// Copyright 2012 Freshplanet (http://freshplanet.com | opensource@freshplanet.com) -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -////////////////////////////////////////////////////////////////////////////////////// - - -package com.freshplanet.ane.${PROJECT_NAME}; +package ${PACKAGE_NAME}.${PROJECT_NAME}; import java.util.HashMap; import java.util.Map; @@ -26,7 +7,7 @@ import android.util.Log; import com.adobe.fre.FREContext; import com.adobe.fre.FREFunction; -import com.freshplanet.ane.${PROJECT_NAME}.functions.IsSupportedFunction; +import ${PACKAGE_NAME}.${PROJECT_NAME}.functions.IsSupportedFunction; public class ${PROJECT_NAME}ExtensionContext extends FREContext { diff --git a/ANE-Wizard-Android/bin/com/freshplanet/ane/wizards/android/resources/Function.java.resource b/ANE-Wizard-Android/bin/com/freshplanet/ane/wizards/android/resources/Function.java.resource index 27e4748..8c4c9a8 100644 --- a/ANE-Wizard-Android/bin/com/freshplanet/ane/wizards/android/resources/Function.java.resource +++ b/ANE-Wizard-Android/bin/com/freshplanet/ane/wizards/android/resources/Function.java.resource @@ -1,22 +1,4 @@ -////////////////////////////////////////////////////////////////////////////////////// -// -// Copyright 2012 Freshplanet (http://freshplanet.com | opensource@freshplanet.com) -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -////////////////////////////////////////////////////////////////////////////////////// - -package com.freshplanet.ane.${PROJECT_NAME}.functions; +package ${PACKAGE_NAME}.${PROJECT_NAME}.functions; import android.util.Log; diff --git a/ANE-Wizard-Android/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage$1.class b/ANE-Wizard-Android/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage$1.class new file mode 100644 index 0000000000000000000000000000000000000000..972ab84a7d06737e681e0e0756476b18b87c0e1a GIT binary patch literal 1078 zcmb_bU279T6g`uqO_Q!|TEDg0SfeH>xK#7C?qxIWW+&`S66n7Y zw1N-*0DqKtXB+TI^dSqw%)NW=nX~8K{rT(r4**ZmC?Y3tG>ZM9v@|wnLm8avsgkF@ zOvsVVyBy8(ITBVZ?hqav|3IdfAIgx%WlgK~n zJ9H6?0#%(xJ_WHF8S>54@)co3*7$8@EG3i*EZTuGwI?jAJy%_OO#M5xhgxa6UTr84qZ^-w}ZAYXTY)wW9La6If&`bqX<5?FV}#a)>y7tfLfXMn)_ z`AV$qumQ^h?qy8-6H2VWR=xeVc4UaXMz@R`xK+eWfrGg=!^3TC2zV12tB^;}4NhiL z&)s;}!zQY1m?0jrh+29$ipesfQ13Y>7wF;(HvjPfjLdEj5IuqNM?FphdaIoE+y6Js zkKGuvlKmuzwNXiQKz5)*mi{i`ac#xY7&54G+w;5@ASxBteg3_2yht&dbSnV)*$DD={Jy literal 0 HcmV?d00001 diff --git a/ANE-Wizard-Android/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage$2.class b/ANE-Wizard-Android/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage$2.class new file mode 100644 index 0000000000000000000000000000000000000000..09300bdfe180b10028cc9302c65ec1a20ca615eb GIT binary patch literal 1121 zcmb_bU2hUW6g>mmB6JmsA5^UtTU0)bYj`rj)->RkAyOJF_}`%%zQJ~vWDU2-eU3>=2SIiGPa`j2Mn=-?F}$xX znY-3waM~&mSuosmk-?1|(#X5WqQH=@T0p)dBXK+(4@CTd4?@9Ew2cdUJeJm91RdJ| zhSTMiSZPuN)&E~GPn^!3R;Vi--+%DC!hdkb*g#CoOe4W4GCMHzyl-ToB>oYu0 X_^XteLJf7Y4k3UBE&CE%7k$3~nm{bM literal 0 HcmV?d00001 diff --git a/ANE-Wizard-Android/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage$3.class b/ANE-Wizard-Android/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage$3.class new file mode 100644 index 0000000000000000000000000000000000000000..d1268e717187b4fd219d9ff5039bc212244649e3 GIT binary patch literal 1558 zcmcIk+fUO_82=sCQ5aPwDx!j-PTfT*f)@;CNES>;Hb78}ydBo#IMDShZGp&NA`f2T zCFrAx&cqmBP5hgT@jKlNB=TV5Y|`|*|GsO#|NQ(FzzA-dXk(bIxptL@Vm;WZ^75M6 zlzh$Rp0GFN7WW+@9bZYueh{%UVsp+{tD+pvkuk4`NzW;&G7qKl=7>#=nlKoWt9*mo zF83<-?6S5t(avyR`4wA~U0Dl+y)JF(g~Io^YfDGij^wVY1a>ogL6Oo6gWtg?eZf=H zQ@*eKk_ZBVninRO8L_b3!5MguZ`=>D7Na2))(-@?#k^SCH zVK}-^-VL9#7S18XU~O<$I&=qmi=*~0>8dVRxQKKkq}CKvwdRVDEQ~Z2PJUv~O6u|a z(I18m={-`jp8J@AEiuF+C>r`gNHHl*Pwy(zEks({8( z65)z+ER5nRonfWfh}~Oxn9dac%Nf$HSks;-{DRAaKm;akFiiX-6isg5o5vs>O^n_+ zSTd<^hyG}7^mZaa(k`OLh}V)tHun)$_7e`ik8BQUS)|e4PtZfWMLt@37)R(!py+Kz z`9dfL$tL=@aV+}*R?et52v*0y4!R;4k-2X$jU5=V{J?fYTF05Z)(+HhUPH&Ap|b=7 zJf)z|Z~)H<>IJRYODgCU>0V<9Z*U!Nk;l6zwQK{vnHnX64B6>)Cy>J>DkMuWE)x|a pUr_1sKGVF-e!$WlvPsm2VO*iFK|mw8MpO^U;si6+u75t!^9x(0vjzYF literal 0 HcmV?d00001 diff --git a/ANE-Wizard-Android/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage.class b/ANE-Wizard-Android/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage.class new file mode 100644 index 0000000000000000000000000000000000000000..fd42910bd5540ce4d454d4a4592630bcf021acf5 GIT binary patch literal 9945 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 xRLe_wT=U&Nf0Q_Wjx_)P literal 0 HcmV?d00001 diff --git a/ANE-Wizard-Android/src/com/freshplanet/ane/wizards/android/NewANEProjectWizard.java b/ANE-Wizard-Android/src/com/freshplanet/ane/wizards/android/NewANEProjectWizard.java index 946af2c..7122777 100644 --- a/ANE-Wizard-Android/src/com/freshplanet/ane/wizards/android/NewANEProjectWizard.java +++ b/ANE-Wizard-Android/src/com/freshplanet/ane/wizards/android/NewANEProjectWizard.java @@ -21,10 +21,12 @@ import org.eclipse.ui.ide.IDE; import org.eclipse.ui.wizards.newresource.BasicNewProjectResourceWizard; +import pl.mateuszmackowiak.ane.wizard.android.WizardNewProjectPackageAndLocationPage; + public class NewANEProjectWizard extends Wizard implements INewWizard { - private WizardNewProjectCreationPage wizardPage; + private WizardNewProjectPackageAndLocationPage wizardPage; private IConfigurationElement config; private IWorkbench workbench; private IStructuredSelection selection; @@ -43,9 +45,10 @@ public NewANEProjectWizard() */ public void addPages() { - wizardPage = new WizardNewProjectCreationPage("NewANEProject"); + wizardPage = new WizardNewProjectPackageAndLocationPage("NewANEProject"); wizardPage.setDescription("Create a new ANE Project"); wizardPage.setTitle("New ANE Project"); + wizardPage.setInitialPackageName("com.youcompany"); addPage(wizardPage); } @@ -60,6 +63,7 @@ public boolean performFinish() if (project != null) return true; final IProject projectHandle = wizardPage.getProjectHandle(); + final String packageName = wizardPage.getPackageName(); URI projectURI = (!wizardPage.useDefaults()) ? wizardPage.getLocationURI() : null; IWorkspace workspace = ResourcesPlugin.getWorkspace(); final IProjectDescription desc = workspace.newProjectDescription(projectHandle.getName()); @@ -68,7 +72,7 @@ public boolean performFinish() WorkspaceModifyOperation op = new WorkspaceModifyOperation() { protected void execute(IProgressMonitor monitor) throws CoreException { - createProject(desc, projectHandle, monitor); + createProject(desc, projectHandle, monitor,packageName); } }; @@ -106,7 +110,7 @@ protected void execute(IProgressMonitor monitor) throws CoreException * @throws CoreException * @throws OperationCanceledException */ - void createProject(IProjectDescription description, IProject proj, IProgressMonitor monitor) throws CoreException, OperationCanceledException + void createProject(IProjectDescription description, IProject proj, IProgressMonitor monitor, String packageName) throws CoreException, OperationCanceledException { try { @@ -130,21 +134,46 @@ void createProject(IProjectDescription description, IProject proj, IProgressMoni createFolder("gen", container, monitor); createFolder("res", container, monitor); createFolder("src", container, monitor); - createFolder("src/com", container, monitor); + + String fullPackageString = "src"; + + //Create folders if package not empty + if(packageName!=null && !packageName.isEmpty()){ + String[] packages = packageName.split("\\."); + + for (String packageElement : packages) { + fullPackageString+="/"+packageElement; + createFolder(fullPackageString, container, monitor); + } + } + createFolder(fullPackageString +"/"+ projectName, container, monitor); + createFolder(fullPackageString +"/"+ projectName + "/functions", container, monitor); + + + + /*createFolder("src/com", container, monitor); createFolder("src/com/freshplanet", container, monitor); createFolder("src/com/freshplanet/ane", container, monitor); createFolder("src/com/freshplanet/ane/" + projectName, container, monitor); - createFolder("src/com/freshplanet/ane/" + projectName + "/functions", container, monitor); - + createFolder("src/com/freshplanet/ane/" + projectName + "/functions", container, monitor);*/ + // Copy files - copyFile(".project", ".project", projectName, container, monitor); - copyFile("project.properties", "project.properties", projectName, container, monitor); - copyFile("proguard-project.txt", "proguard-project.txt", projectName, container, monitor); - copyFile(".classpath", ".classpath", projectName, container, monitor); - copyFile("AndroidManifest.xml", "AndroidManifest.xml", projectName, container, monitor); + copyFile(".project", ".project", projectName,packageName, container, monitor); + copyFile("project.properties", "project.properties", projectName,packageName, container, monitor); + copyFile("proguard-project.txt", "proguard-project.txt", projectName,packageName, container, monitor); + copyFile(".classpath", ".classpath", projectName,packageName, container, monitor); + copyFile("AndroidManifest.xml", "AndroidManifest.xml", projectName,packageName, container, monitor); + + + /* copyFile("Extension.java.resource", "src/com/freshplanet/ane/" + projectName + "/" + projectName + "Extension.java", projectName, container, monitor); copyFile("ExtensionContext.java.resource", "src/com/freshplanet/ane/" + projectName + "/" + projectName + "ExtensionContext.java", projectName, container, monitor); copyFile("Function.java.resource", "src/com/freshplanet/ane/" + projectName + "/functions/IsSupportedFunction.java", projectName, container, monitor); + */ + fullPackageString+="/"; + copyFile("Extension.java.resource", fullPackageString + projectName + "/" + projectName + "Extension.java", projectName,packageName, container, monitor); + copyFile("ExtensionContext.java.resource", fullPackageString + projectName + "/" + projectName + "ExtensionContext.java", projectName,packageName, container, monitor); + copyFile("Function.java.resource", fullPackageString + projectName + "/functions/IsSupportedFunction.java", projectName,packageName, container, monitor); } catch (IOException ioe) { @@ -163,9 +192,9 @@ private void createFolder(String path, IContainer container, IProgressMonitor mo folder.create(true, true, monitor); } - private void copyFile(String resourceName, String finalPath, String projectName, IContainer container, IProgressMonitor monitor) throws IOException, CoreException + private void copyFile(String resourceName, String finalPath, String projectName, String packageName, IContainer container, IProgressMonitor monitor) throws IOException, CoreException { - InputStream resourceStream = openFilteredResource(resourceName, projectName); + InputStream resourceStream = openFilteredResource(resourceName, projectName,packageName); addFileToProject(container, new Path(finalPath), resourceStream, monitor); resourceStream.close(); } @@ -194,7 +223,7 @@ private void addFileToProject(IContainer container, Path path, InputStream conte } - private InputStream openFilteredResource(String resourceName, String projectName) throws CoreException + private InputStream openFilteredResource(String resourceName, String projectName,String packageName) throws CoreException { final String newline = "\n"; String line; @@ -206,6 +235,11 @@ private InputStream openFilteredResource(String resourceName, String projectName try { while ((line = reader.readLine()) != null) { + if(packageName!=null && !packageName.isEmpty()) + line = line.replaceAll("\\$\\{PACKAGE_NAME\\}", packageName); + else{ + line = line.replaceAll("\\$\\{PACKAGE_NAME\\}", ""); + } line = line.replaceAll("\\$\\{PROJECT_NAME\\}", projectName); sb.append(line); sb.append(newline); diff --git a/ANE-Wizard-Android/src/com/freshplanet/ane/wizards/android/resources/AndroidManifest.xml b/ANE-Wizard-Android/src/com/freshplanet/ane/wizards/android/resources/AndroidManifest.xml index 7a429fe..7a7331b 100644 --- a/ANE-Wizard-Android/src/com/freshplanet/ane/wizards/android/resources/AndroidManifest.xml +++ b/ANE-Wizard-Android/src/com/freshplanet/ane/wizards/android/resources/AndroidManifest.xml @@ -1,6 +1,6 @@ diff --git a/ANE-Wizard-Android/src/com/freshplanet/ane/wizards/android/resources/Extension.java.resource b/ANE-Wizard-Android/src/com/freshplanet/ane/wizards/android/resources/Extension.java.resource index ad72c57..5c40e9d 100644 --- a/ANE-Wizard-Android/src/com/freshplanet/ane/wizards/android/resources/Extension.java.resource +++ b/ANE-Wizard-Android/src/com/freshplanet/ane/wizards/android/resources/Extension.java.resource @@ -1,22 +1,4 @@ -////////////////////////////////////////////////////////////////////////////////////// -// -// Copyright 2012 Freshplanet (http://freshplanet.com | opensource@freshplanet.com) -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -////////////////////////////////////////////////////////////////////////////////////// - -package com.freshplanet.ane.${PROJECT_NAME}; +package ${PACKAGE_NAME}.${PROJECT_NAME}; import android.util.Log; diff --git a/ANE-Wizard-Android/src/com/freshplanet/ane/wizards/android/resources/ExtensionContext.java.resource b/ANE-Wizard-Android/src/com/freshplanet/ane/wizards/android/resources/ExtensionContext.java.resource index 4b2409e..30c21b5 100644 --- a/ANE-Wizard-Android/src/com/freshplanet/ane/wizards/android/resources/ExtensionContext.java.resource +++ b/ANE-Wizard-Android/src/com/freshplanet/ane/wizards/android/resources/ExtensionContext.java.resource @@ -1,23 +1,4 @@ -////////////////////////////////////////////////////////////////////////////////////// -// -// Copyright 2012 Freshplanet (http://freshplanet.com | opensource@freshplanet.com) -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -////////////////////////////////////////////////////////////////////////////////////// - - -package com.freshplanet.ane.${PROJECT_NAME}; +package ${PACKAGE_NAME}.${PROJECT_NAME}; import java.util.HashMap; import java.util.Map; @@ -26,7 +7,7 @@ import android.util.Log; import com.adobe.fre.FREContext; import com.adobe.fre.FREFunction; -import com.freshplanet.ane.${PROJECT_NAME}.functions.IsSupportedFunction; +import ${PACKAGE_NAME}.${PROJECT_NAME}.functions.IsSupportedFunction; public class ${PROJECT_NAME}ExtensionContext extends FREContext { diff --git a/ANE-Wizard-Android/src/com/freshplanet/ane/wizards/android/resources/Function.java.resource b/ANE-Wizard-Android/src/com/freshplanet/ane/wizards/android/resources/Function.java.resource index 27e4748..8c4c9a8 100644 --- a/ANE-Wizard-Android/src/com/freshplanet/ane/wizards/android/resources/Function.java.resource +++ b/ANE-Wizard-Android/src/com/freshplanet/ane/wizards/android/resources/Function.java.resource @@ -1,22 +1,4 @@ -////////////////////////////////////////////////////////////////////////////////////// -// -// Copyright 2012 Freshplanet (http://freshplanet.com | opensource@freshplanet.com) -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -////////////////////////////////////////////////////////////////////////////////////// - -package com.freshplanet.ane.${PROJECT_NAME}.functions; +package ${PACKAGE_NAME}.${PROJECT_NAME}.functions; import android.util.Log; diff --git a/ANE-Wizard-Android/src/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage.java b/ANE-Wizard-Android/src/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage.java new file mode 100644 index 0000000..37c4f43 --- /dev/null +++ b/ANE-Wizard-Android/src/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage.java @@ -0,0 +1,461 @@ +package pl.mateuszmackowiak.ane.wizard.android; + + +import java.net.URI; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IWorkspace; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Path; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.VerifyEvent; +import org.eclipse.swt.events.VerifyListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Listener; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.IWorkingSet; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.dialogs.WorkingSetGroup; +import org.eclipse.ui.internal.ide.IDEWorkbenchMessages; +import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin; +import org.eclipse.ui.internal.ide.IIDEHelpContextIds; +import org.eclipse.ui.internal.ide.dialogs.ProjectContentsLocationArea; +import org.eclipse.ui.internal.ide.dialogs.ProjectContentsLocationArea.IErrorMessageReporter; + + +/** + * + * @author Mateusz Mackowiak + * + */ +public class WizardNewProjectPackageAndLocationPage extends WizardPage { + + // initial value stores + private String initialProjectFieldValue; + private String initialPackageFieldValue; + + // widgets + Text projectNameField; + Text packageNameField; + + private Listener packageModifyListener = new Listener() { + + @Override + public void handleEvent(Event event) { + boolean valid = validatePage(); + setPageComplete(valid); + } + }; + private Listener nameModifyListener = new Listener() { + public void handleEvent(Event e) { + setLocationForSelection(); + boolean valid = validatePage(); + setPageComplete(valid); + + } + }; + + private ProjectContentsLocationArea locationArea; + + + private WorkingSetGroup workingSetGroup; + + // constants + private static final int SIZING_TEXT_FIELD_WIDTH = 250; + + /** + * Creates a new project creation wizard page. + * + * @param pageName the name of this page + */ + public WizardNewProjectPackageAndLocationPage(String pageName){ + super(pageName); + setPageComplete(false); + } + + public String getPackageName(){ + return getPackageNameFieldValue(); + } + + + /** (non-Javadoc) + * Method declared on IDialogPage. + */ + public void createControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NULL); + + + initializeDialogUnits(parent); + + PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, + IIDEHelpContextIds.NEW_PROJECT_WIZARD_PAGE); + + composite.setLayout(new GridLayout()); + composite.setLayoutData(new GridData(GridData.FILL_BOTH)); + + createProjectNameGroup(composite); + locationArea = new ProjectContentsLocationArea(getErrorReporter(), composite); + if(initialProjectFieldValue != null) { + locationArea.updateProjectName(initialProjectFieldValue); + } + + // Scale the button based on the rest of the dialog + setButtonLayoutData(locationArea.getBrowseButton()); + + setPageComplete(validatePage()); + // Show description on opening + setErrorMessage(null); + setMessage(null); + setControl(composite); + Dialog.applyDialogFont(composite); + } + + /** + * Create a working set group for this page. This method can only be called + * once. + * + * @param composite + * the composite in which to create the group + * @param selection + * the current workbench selection + * @param supportedWorkingSetTypes + * an array of working set type IDs that will restrict what types + * of working sets can be chosen in this group + * @return the created group. If this method has been called previously the + * original group will be returned. + * @since 3.4 + */ + public WorkingSetGroup createWorkingSetGroup(Composite composite, + IStructuredSelection selection, String[] supportedWorkingSetTypes) { + if (workingSetGroup != null) + return workingSetGroup; + workingSetGroup = new WorkingSetGroup(composite, selection, + supportedWorkingSetTypes); + return workingSetGroup; + } + + /** + * Get an error reporter for the receiver. + * @return IErrorMessageReporter + */ + private IErrorMessageReporter getErrorReporter() { + return new IErrorMessageReporter(){ + /* (non-Javadoc) + * @see org.eclipse.ui.internal.ide.dialogs.ProjectContentsLocationArea.IErrorMessageReporter#reportError(java.lang.String) + */ + public void reportError(String errorMessage, boolean infoOnly) { + if (infoOnly) { + setMessage(errorMessage, IStatus.INFO); + setErrorMessage(null); + } + else + setErrorMessage(errorMessage); + boolean valid = errorMessage == null; + if(valid) { + valid = validatePage(); + } + + setPageComplete(valid); + } + }; + } + + /** + * Creates the project name specification controls. + * + * @param parent the parent composite + */ + private final void createProjectNameGroup(Composite parent) { + // project specification group + Composite projectGroup = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.numColumns = 2; + projectGroup.setLayout(layout); + projectGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + // new project label + Label projectLabel = new Label(projectGroup, SWT.NONE); + projectLabel.setText(IDEWorkbenchMessages.WizardNewProjectCreationPage_nameLabel); + projectLabel.setFont(parent.getFont()); + + // new project name entry field + projectNameField = new Text(projectGroup, SWT.BORDER); + GridData data = new GridData(GridData.FILL_HORIZONTAL); + data.widthHint = SIZING_TEXT_FIELD_WIDTH; + projectNameField.setLayoutData(data); + projectNameField.setFont(parent.getFont()); + + //package lable + Label packageNameLabel = new Label(projectGroup, SWT.NONE); + packageNameLabel.setText("Main package name"); + packageNameLabel.setFont(parent.getFont()); + + //package name input field + packageNameField = new Text(projectGroup, SWT.BORDER); + packageNameField.setFont(parent.getFont()); + data = new GridData(GridData.FILL_HORIZONTAL); + data.widthHint = SIZING_TEXT_FIELD_WIDTH; + packageNameField.setLayoutData(data); + + if(initialPackageFieldValue!=null){ + packageNameField.setText(initialPackageFieldValue); + } + packageNameField.addListener(SWT.Modify, packageModifyListener); + + // Set the initial value first before listener + // to avoid handling an event during the creation. + if (initialProjectFieldValue != null) { + projectNameField.setText(initialProjectFieldValue); + } + projectNameField.addListener(SWT.Modify, nameModifyListener); + } + + + /** + * Returns the current project location path as entered by + * the user, or its anticipated initial value. + * Note that if the default has been returned the path + * in a project description used to create a project + * should not be set. + * + * @return the project location path or its anticipated initial value. + */ + public IPath getLocationPath() { + return new Path(locationArea.getProjectLocation()); + } + + /** + /** + * Returns the current project location URI as entered by + * the user, or null if a valid project location + * has not been entered. + * + * @return the project location URI, or null + * @since 3.2 + */ + public URI getLocationURI() { + return locationArea.getProjectLocationURI(); + } + + /** + * Creates a project resource handle for the current project name field + * value. The project handle is created relative to the workspace root. + *

+ * This method does not create the project resource; this is the + * responsibility of IProject::create invoked by the new + * project resource wizard. + *

+ * + * @return the new project resource handle + */ + public IProject getProjectHandle() { + return ResourcesPlugin.getWorkspace().getRoot().getProject( + getProjectName()); + } + + /** + * Returns the current project name as entered by the user, or its anticipated + * initial value. + * + * @return the project name, its anticipated initial value, or null + * if no project name is known + */ + public String getProjectName() { + if (projectNameField == null) { + return initialProjectFieldValue; + } + + return getProjectNameFieldValue(); + } + /** + * Returns the value of the project package name field + * with leading and trailing spaces removed. + * + * @return the project name in the field + */ + private String getPackageNameFieldValue(){ + if(packageNameField==null){ + return ""; + } + return packageNameField.getText().trim(); + } + /** + * Returns the value of the project name field + * with leading and trailing spaces removed. + * + * @return the project name in the field + */ + private String getProjectNameFieldValue() { + if (projectNameField == null) { + return ""; //$NON-NLS-1$ + } + + return projectNameField.getText().trim(); + } + + + public void setInitialPackageName(String name) { + if (name == null) { + initialPackageFieldValue = null; + } else { + initialPackageFieldValue = name.trim(); + } + if(packageNameField!=null){ + if(initialPackageFieldValue!=null){ + packageNameField.setText(initialPackageFieldValue); + } + else{ + packageNameField.setText(""); + } + } + } + /** + * Sets the initial project name that this page will use when + * created. The name is ignored if the createControl(Composite) + * method has already been called. Leading and trailing spaces + * in the name are ignored. + * Providing the name of an existing project will not necessarily + * cause the wizard to warn the user. Callers of this method + * should first check if the project name passed already exists + * in the workspace. + * + * @param name initial project name for this page + * + * @see IWorkspace#validateName(String, int) + * + */ + public void setInitialProjectName(String name) { + if (name == null) { + initialProjectFieldValue = null; + } else { + initialProjectFieldValue = name.trim(); + if(locationArea != null) { + locationArea.updateProjectName(name.trim()); + } + } + } + + /** + * Set the location to the default location if we are set to useDefaults. + */ + void setLocationForSelection() { + locationArea.updateProjectName(getProjectNameFieldValue()); + } + + + /** + * Returns whether this page's controls currently all contain valid + * values. + * + * @return true if all controls are valid, and + * false if at least one is invalid + */ + protected boolean validatePage() { + IWorkspace workspace = IDEWorkbenchPlugin.getPluginWorkspace(); + + String packageNameContents = getPackageNameFieldValue(); + if(packageNameContents==null || packageNameContents.equals("")){ + setErrorMessage("Package name cannot be empty!"); + setMessage("Package name cannot be empty!"); + return false; + } + if(packageNameContents.endsWith(".") || packageNameContents.startsWith(".")){ + setErrorMessage("Package name cannot start or begin with a '.' character"); + setMessage("Package name cannot start or begin with a '.' character!"); + return false; + } + boolean lastWasDot = true; + for (int i = 0; i < packageNameContents.length(); i++) { + char m = packageNameContents.charAt(i);//i; + + if(!(Character.isLetter(m) || (!lastWasDot && Character.isDigit(m)) || m=='.' || m=='_')){ + setErrorMessage("Package name is not valid! Use only Letters, numbers '.' or '_'"); + setMessage("Package name is not valid!"); + return false; + }else if (lastWasDot && Character.isDigit(m)){ + setErrorMessage("Package name cannot start with a number is not valid!"); + setMessage("Package name cannot start with a number is not validd!"); + return false; + } + if(m=='.'){ + lastWasDot = true; + }else{ + lastWasDot = false; + } + } + + String projectFieldContents = getProjectNameFieldValue(); + if (projectFieldContents.equals("")) { //$NON-NLS-1$ + setErrorMessage(null); + setMessage(IDEWorkbenchMessages.WizardNewProjectCreationPage_projectNameEmpty); + return false; + } + + IStatus nameStatus = workspace.validateName(projectFieldContents, + IResource.PROJECT); + if (!nameStatus.isOK()) { + setErrorMessage(nameStatus.getMessage()); + return false; + } + + IProject handle = getProjectHandle(); + if (handle.exists()) { + setErrorMessage(IDEWorkbenchMessages.WizardNewProjectCreationPage_projectExistsMessage); + return false; + } + + IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject( + getProjectNameFieldValue()); + locationArea.setExistingProject(project); + + String validLocationMessage = locationArea.checkValidLocation(); + if (validLocationMessage != null) { // there is no destination location given + setErrorMessage(validLocationMessage); + return false; + } + + setErrorMessage(null); + setMessage(null); + return true; + } + + /* + * see @DialogPage.setVisible(boolean) + */ + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + projectNameField.setFocus(); + } + } + + /** + * Returns the useDefaults. + * @return boolean + */ + public boolean useDefaults() { + return locationArea.isDefault(); + } + + /** + * Return the selected working sets, if any. If this page is not configured + * to interact with working sets this will be an empty array. + * + * @return the selected working sets + * @since 3.4 + */ + public IWorkingSet[] getSelectedWorkingSets() { + return workingSetGroup == null ? new IWorkingSet[0] : workingSetGroup + .getSelectedWorkingSets(); + } +} diff --git a/ANE-Wizard-Eclipse.jar b/ANE-Wizard-Eclipse.jar index 62b45dc622c2202422e080d400bdc8c1d20b459a..b2d0b30f6c2c0bc3461e2ffcd0e320aeb50c9b0e 100644 GIT binary patch delta 15626 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 UKKu@;_(1qTC-33j`M3A~FUSnyM*si- delta 8611 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 diff --git a/ANE-Wizard-FlashBuilder.jar b/ANE-Wizard-FlashBuilder.jar index 78bbad3118a035ea50fc560cf0168c0349d653ce..4b7d2c7b7adc8d91f5404616ca36c8a217a6f745 100644 GIT binary patch delta 14746 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 I{^#ib0Jq%d2LJ#7 diff --git a/ANE-Wizard-FlashBuilder/bin/com/freshplanet/ane/wizards/flashbuilder/NewANEProjectWizard$1.class b/ANE-Wizard-FlashBuilder/bin/com/freshplanet/ane/wizards/flashbuilder/NewANEProjectWizard$1.class index 111852d04d1f7599c55dbac41cc29dc6248e920f..ec659c7d9b5b4cbfb4206698ecf8ba049e8cfa99 100644 GIT binary patch delta 509 zcmZWmJ5Rz;6#i~oKuVE;(jVdAU_7l(GTd{%lbr8y@BI?rJ>u*4(=&h)w#VWwEBOX$Cw{3m&ef)Ns9tCc zfofYFsD+N&Z5EF7eyiKuVQ`jP-IiWqxKE9)E5;2wu1&9{PZ)%~-kIhGgI|IJP7BRR zaAC$mAqj4X7Mhpffh2-QRDu^VBf`B18w^R~j*A+foX?%WrVB}i@<=YzP6}xTZ=oP^+FCUH{0#(uG(%p!)NV7y5#KaPosS8-a>X25} z?15q3HmH%jWf@W?q(33~34$3a;RnS3Yabwps;wRVCH-j=9SSn!$0JK(9CFCpHVG8y MgRN}LN+S@&50Yn3{{R30 delta 397 zcmZ9GyGjE=6o&uV8M9`yF`F23@g6U6Gr4%F6hgoYs1SlSL9mjzMJx=2U~AzMgaO|p zu&ZJr*!l`Krt}p=#j~rGQ_T6#nfbr}3?mN;mV=cwDca9TZv8@vCyrrudzeR8Qb#T751tOlaOxOx+r zYiP7>1SW+=N$pTCs3v96!aoLf#`ept*)L-A3S|m9d8m^}d@t$YPSJz!awG z$4sCZW&`pe&Hb#nbP4Pd*F~aua)0EvmL*Gr*#aX1mSq_PUS(rPwgVo|e92>vX2dL( zWdebOCF~HE5OxB@5SBm!k`<*UO&Ta9aY;+FwPYztOH$I1Cf!m%IrslRtH#2VVm$xN zoBQs)@7{Bl_r70w?`!)2oFtDMs1lqRNe%@2QdWA~U_6|#GC_U>hhn?Ksc1Ub7Z0bm zZOz8wQ7aW(X$^I(>{^{lZnq+t4K{@VkKmYOsy}E&;<3TB72Mtzj^x${b3`?QKrvA^ z7VIWB=VyW65w|+rZwXc{AB+bF!Wk=@-aQbG>_`s9!aItT;xL*@#-c8BvT-$9O=5EB zNJN(>BjHRenNWu9f|^J&(HH9%oVdJLiAXYK1yk8XCN^LNyE|=~Y|38P6}JYgM22f? zhmxrsTdhQ7n_y1Ka^1s*+>c6`w&Ju4#g+?lOtLd(4OyvluzPJLm5pSwDJ!}*w}Q)! zLC3Cw<4eRiT3YF3HWjhB+TE;f>&#dpmN`pM-Lzo6z|)zGT7FbxmWi3D7aX!YmatZ4 z2ew+Nb>XdXnzmjI6JH-r#q_&7>B(%1r3Gg#|1db9I=*l;ss>LRI8w0U|J8{;94(ku zfiT?Hl>uVu6&V&J<5625;ccv_&sxjP{u!b55 zaXwZUST1Ou9J%?J=*f*%$Fu#hgo%|{B`~R{#%Fqv2}x}_^;Yww?R8j#wFY{K zo+*Up0@1`ewTeM$YK}Ur$Hxq8U>HxeI4{jaFE$dv#H8z+BKQfGRzmi{xU7f^H?$cS z8u+-NZ7Q86%QtZmwm3mi;-{IeRyj8>BFU?4{D-= zp>Lmz@&)TPfcs5sL(D-O%Sa~7yqglVmLaZE80X39q#YPA5GPWLoiybl6A2_4@+@M4 z)0;MKEZK&$G|Bv6*R)`FPd1Uz#J?ey*+ysgv*xFnC;hk>Oxo1Ar4Ys`t52(0usgBS zEvD#!%(*3P zlS4#YT!*_%d>(hRhB|E&ySN@}rxhkV&a1SGT*@b^-C=tP_$!IgG0VHk926`n5kz~0?dCKc%*$AjjK=zgSLG4}MG8UFShT-N_90no z5y|@|3erzw=M^t9@T{Ws`OsCmwHaD^MR?F|O$~gREkVIqPGe`_S!P;$)-|w!uL^=? zVf22RrLc(I54r{v+%YxGDj2%Nzz1+lDJn}NkSy&SydufIFqx`YUkI(d;h3cN3Qj2A zX$iwl9%%B!2EN7wa6sC;*E_?B2#+BJ{QK~A0poukzG2{nvT{@+Pg|hk4Vd^#e3NM3 zYOxDj7f$aG99E%!>DD;>D^{BWDz`SfwT!hN-@=R98@xnUS8`PD7+1Egox-%Ad)dS* z_>LY0ZKn$^ti+^{RLDjTxy4~s!P^HCsxtTCdnWd4`|FRTb4K=K46{_9@0<8r{2gOl zi;Qlm`vbA};qO`Y)2WD7)E}Do5q`{|aQ3z=sfTrTB^69xK}ccGgA`p`qi2qy=+7P2Hcg&0@Jn_Q<>9}? zxrEBG3!-Z)r0L7&n9o6(T9I!z6<*C27YVe-|#zvBRoiN zM7499tj=UUt}3ivZ{YVP{#_dnUnc2nNqg?KKKuu#+6EmksjvRa#DC*|I2lO}4lj%8 z8SK6a!X}G9sF}$D^`X7%!~fC?ZB9B}YoCi58!Q=_n3eY7U3P$N>=bt`k7>x}=O>t7 ztz8)_k>)A7ZP!5DC&C_uhz*uaSJQzj*fF<-(?0PM)f^aNl-(+oLqn8rZAY_aL#|Ry5ZnN{!55dXbqt#V{7jQP*B! zs)(pi!?c?ol?G*XD35@Zl1wg=oL#X0X0DLKOgUWdY&_9qf|#h&((m3ua8dz8GYvR( zf|>IJ1Ss=yq;Mvgy89?(0Q#yg8_(TTIFKf4-A0JlMGX}qmM2A*z`Z}?MqKPWty6U@ z$<4XdztlOb{xxaauY$Q#Y|pitAx-ad!p`r-kVZpV1V>Gd4%Zc{!*A#%`7vSdm;85KJ9gKlAL15$=u=lQ?p>nsqFsBPjzL&ODizZ zq;R1|G-sb%2<9D(ZcI)RGNoP4{>pZY6QyOcD;Ojfl~ka(rP1TD zERm&#bQUL-!ahvt(zx|T;>k3zZRXBw4&ZD1VhO$PQ-4g){p1*+Bn}Gv2$K17zA4LP z1tVTDXcvj4mCTXX`5+KTE@Zt*))=yyJ^qyVBdsYtTF+~&U9of~tqa$ga)A(Cb-c$^ z>+^b?X`su+M45rhZX(_fv&#Qt3i#f_jaNCx59Bjej|0=&xX}LJ*+tGBo<7^sm6A^Z zcj}FHpIpS&!EZ>I4Q_dN9f?0lvN}r);s-jbj)0UXhFT{jif^_l~izd{P zI}>}7f|&OGIoza!eu+!MkO7{O3u0|jQi_JL7e7ft-`}^?1d=Focbx zvnAT!*@~usFgr>^7?uH>QK@g7pZ$`Som%&J=AT^|6&gzy%disd)(z)Xa5ym5eDVo4 z6r1O5zGQVr=lLDybX~NvV@22IOWE$pWu|;mF1PK$7gZ6fL$8ibuduZPZnpUKfKNV^ zlhm{7yspl5IZ3ibu4F$bR|ytYU|y*WREM|g)~+$-GjVe6FFLu@C)X2gUAw{q zgSkey>9y!Q*M>dI#5wULdDaxVAB%6+#t8BDeqwR zY1*_zGrz%0qd3Kq#CcSux6&Jv4B|MJCD$9%%)>ZWh4s+j(oS+dX+8S3NwBgs6P4Vv zlqO^6{&C9JUiNj9JZNGXrZXWHUXk$SqP~Aw8qP4rHk67i%_hu6e79Hj-fq&4i_g}% zg8>a@vOUqBb=XPQ9^Rl)Uhxf&OHA0UweRAbbUd4FXZfqpHgzXib|-lIYX_y3#i&? zn*-jKg`kdHs^tlu5*jo=e|aYgl$%`MO4 z49YpGS*hpX4}O8){3U;~nz-HDC35}R-}F2wcNg4?l`{3Cb* zmTkm78x&8uMx2RzaUbEpluOF{@c?xS;xaslhp5Xb7{(XyFg@Fe?RW%_5?;N05%on{ zpoUVb@E9H^+>+${7{0{OPV#yJPZEGnaR;ZusC^g58CYZB>BR<~nLr4J0dZzHVStx3 zn+<$L=kDn=aPjPET=*QGC-V`GYWN(bYv|>wA5s8+m7do6@tMY}WB7||ENmIaw|ZM= zR=+ulZ;#=xt3mI5S9r-=H;%F1QT)vd3uof;5~5eREaYvje~qpl#SiLV3)KWXFJeQ$ zGlHMoja30p{p%z6nYy<(RJZRmfAwj#d$1@_H>>ufkZ&As^ag77;#Z^ib^UKf@Rs`h ztr5IUkOXQRmRHuwtlC-rhbHzDT7TeMQlq*4kM(~H7y*w>@Sn}~f2#je@z;0i-zon3 zUIRT+pl*<=$zqAUw;F^xtMCHx9<+tL<5JUWG>ES{;2jaajLIRQnsJO$@lmONA!N3W z$t+4RUvLJ`(#nvdq*3blTr7)ec?XKSaWuzSUepcYD8iu)mk^Lw5Qtau{pa-r;EjBH zcN5=C-NH8}x8g3|=0C*o6C8b&Uic>N#`g)ppA%?r<9;~`4@x5*lDT+TTJVT0;`1~- zN{Nrj58g8d155VB((Q=&3gO}R)<#;)PD-^;J7;O_c z2d0f$B9&0yM>HEU-~L>{^MxS`fYu4FaIjrY1x)ZQmbZ)p5ifNYQ5!!u!J9RHD&RGX zj@l_X%dwX;a~6(Eb8pM2EF6J|-(QLDVx8nbJLDvewIl zHeJ8!w+)V69sD~r>Dx@jFVQJ4vnIVleZI$kmhq~+ld~M|`JJ@c8mf)kV#c@^R{>7^_9qJD6+8Dk4F6G%nvn)m7Y{mh$}#a$(3bE?as>WvkXC ziD+7AkQj4Oi<1aOWJkytmy3JHCEXh^MkPBcyF$J_Slap`X1CfIZf3ySAeXd`$fY6g z9votSs~@+&>iCL<&XCD$L_WPCP(!iyz&9dS_lCSLO^oirv`{S*pIjTLeZhY2!Eq|r zPCM6CD-N8r!+goKceh5Gjz&GQ5P z@?$muKOyDo{P!h4W##)B>*Ft2)!tyu`z2G;uUM~M$F+EqY3SFu4Zp#ieBOh%2%F!s zlKqb5b6GT%vjh(3SR1*Y~lcx$|l#88@CJ6BIAD!hi zi^zR)Kl6w7i)&~oMRc9^IyW~jd|nbyEi)IdArx?yI(sQ)oEK! zb|MeS7x*mAf<2tkBvPY-t|`dStf@_dS9~`AW``=zUmHSgak)|+cKuo-kI19cqe{NW R`6}5XkMXHgVLtiap8@XIf8hWC delta 4000 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 diff --git a/ANE-Wizard-FlashBuilder/bin/com/freshplanet/ane/wizards/flashbuilder/resources/Main.as b/ANE-Wizard-FlashBuilder/bin/com/freshplanet/ane/wizards/flashbuilder/resources/Main.as index 4702057..0421a1b 100644 --- a/ANE-Wizard-FlashBuilder/bin/com/freshplanet/ane/wizards/flashbuilder/resources/Main.as +++ b/ANE-Wizard-FlashBuilder/bin/com/freshplanet/ane/wizards/flashbuilder/resources/Main.as @@ -1,22 +1,4 @@ -////////////////////////////////////////////////////////////////////////////////////// -// -// Copyright 2012 Freshplanet (http://freshplanet.com | opensource@freshplanet.com) -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -////////////////////////////////////////////////////////////////////////////////////// - -package com.freshplanet.ane +package ${PACKAGE_NAME} { import flash.events.EventDispatcher; import flash.events.StatusEvent; @@ -32,7 +14,7 @@ package com.freshplanet.ane { if (!_instance) { - extCtx = ExtensionContext.createExtensionContext("com.freshplanet.ane.${PROJECT_NAME}", null); + extCtx = ExtensionContext.createExtensionContext("${PACKAGE_NAME}.${PROJECT_NAME}", null); if (extCtx != null) { extCtx.addEventListener(StatusEvent.STATUS, onStatus); diff --git a/ANE-Wizard-FlashBuilder/bin/com/freshplanet/ane/wizards/flashbuilder/resources/extension.xml b/ANE-Wizard-FlashBuilder/bin/com/freshplanet/ane/wizards/flashbuilder/resources/extension.xml index 54c46bc..37d7248 100755 --- a/ANE-Wizard-FlashBuilder/bin/com/freshplanet/ane/wizards/flashbuilder/resources/extension.xml +++ b/ANE-Wizard-FlashBuilder/bin/com/freshplanet/ane/wizards/flashbuilder/resources/extension.xml @@ -1,23 +1,5 @@ - - - com.freshplanet.ane.${PROJECT_NAME} + ${PACKAGE_NAME}.${PROJECT_NAME} 1 @@ -30,8 +12,8 @@ lib${PROJECT_NAME}.jar - com.freshplanet.ane.${PROJECT_NAME}.${PROJECT_NAME}Extension - com.freshplanet.ane.${PROJECT_NAME}.${PROJECT_NAME}Extension + ${PACKAGE_NAME}.${PROJECT_NAME}.${PROJECT_NAME}Extension + ${PACKAGE_NAME}.${PROJECT_NAME}.${PROJECT_NAME}Extension diff --git a/ANE-Wizard-FlashBuilder/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage$1.class b/ANE-Wizard-FlashBuilder/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage$1.class new file mode 100644 index 0000000000000000000000000000000000000000..972ab84a7d06737e681e0e0756476b18b87c0e1a GIT binary patch literal 1078 zcmb_bU279T6g`uqO_Q!|TEDg0SfeH>xK#7C?qxIWW+&`S66n7Y zw1N-*0DqKtXB+TI^dSqw%)NW=nX~8K{rT(r4**ZmC?Y3tG>ZM9v@|wnLm8avsgkF@ zOvsVVyBy8(ITBVZ?hqav|3IdfAIgx%WlgK~n zJ9H6?0#%(xJ_WHF8S>54@)co3*7$8@EG3i*EZTuGwI?jAJy%_OO#M5xhgxa6UTr84qZ^-w}ZAYXTY)wW9La6If&`bqX<5?FV}#a)>y7tfLfXMn)_ z`AV$qumQ^h?qy8-6H2VWR=xeVc4UaXMz@R`xK+eWfrGg=!^3TC2zV12tB^;}4NhiL z&)s;}!zQY1m?0jrh+29$ipesfQ13Y>7wF;(HvjPfjLdEj5IuqNM?FphdaIoE+y6Js zkKGuvlKmuzwNXiQKz5)*mi{i`ac#xY7&54G+w;5@ASxBteg3_2yht&dbSnV)*$DD={Jy literal 0 HcmV?d00001 diff --git a/ANE-Wizard-FlashBuilder/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage$2.class b/ANE-Wizard-FlashBuilder/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage$2.class new file mode 100644 index 0000000000000000000000000000000000000000..09300bdfe180b10028cc9302c65ec1a20ca615eb GIT binary patch literal 1121 zcmb_bU2hUW6g>mmB6JmsA5^UtTU0)bYj`rj)->RkAyOJF_}`%%zQJ~vWDU2-eU3>=2SIiGPa`j2Mn=-?F}$xX znY-3waM~&mSuosmk-?1|(#X5WqQH=@T0p)dBXK+(4@CTd4?@9Ew2cdUJeJm91RdJ| zhSTMiSZPuN)&E~GPn^!3R;Vi--+%DC!hdkb*g#CoOe4W4GCMHzyl-ToB>oYu0 X_^XteLJf7Y4k3UBE&CE%7k$3~nm{bM literal 0 HcmV?d00001 diff --git a/ANE-Wizard-FlashBuilder/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage$3.class b/ANE-Wizard-FlashBuilder/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage$3.class new file mode 100644 index 0000000000000000000000000000000000000000..d1268e717187b4fd219d9ff5039bc212244649e3 GIT binary patch literal 1558 zcmcIk+fUO_82=sCQ5aPwDx!j-PTfT*f)@;CNES>;Hb78}ydBo#IMDShZGp&NA`f2T zCFrAx&cqmBP5hgT@jKlNB=TV5Y|`|*|GsO#|NQ(FzzA-dXk(bIxptL@Vm;WZ^75M6 zlzh$Rp0GFN7WW+@9bZYueh{%UVsp+{tD+pvkuk4`NzW;&G7qKl=7>#=nlKoWt9*mo zF83<-?6S5t(avyR`4wA~U0Dl+y)JF(g~Io^YfDGij^wVY1a>ogL6Oo6gWtg?eZf=H zQ@*eKk_ZBVninRO8L_b3!5MguZ`=>D7Na2))(-@?#k^SCH zVK}-^-VL9#7S18XU~O<$I&=qmi=*~0>8dVRxQKKkq}CKvwdRVDEQ~Z2PJUv~O6u|a z(I18m={-`jp8J@AEiuF+C>r`gNHHl*Pwy(zEks({8( z65)z+ER5nRonfWfh}~Oxn9dac%Nf$HSks;-{DRAaKm;akFiiX-6isg5o5vs>O^n_+ zSTd<^hyG}7^mZaa(k`OLh}V)tHun)$_7e`ik8BQUS)|e4PtZfWMLt@37)R(!py+Kz z`9dfL$tL=@aV+}*R?et52v*0y4!R;4k-2X$jU5=V{J?fYTF05Z)(+HhUPH&Ap|b=7 zJf)z|Z~)H<>IJRYODgCU>0V<9Z*U!Nk;l6zwQK{vnHnX64B6>)Cy>J>DkMuWE)x|a pUr_1sKGVF-e!$WlvPsm2VO*iFK|mw8MpO^U;si6+u75t!^9x(0vjzYF literal 0 HcmV?d00001 diff --git a/ANE-Wizard-FlashBuilder/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage.class b/ANE-Wizard-FlashBuilder/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage.class new file mode 100644 index 0000000000000000000000000000000000000000..fd42910bd5540ce4d454d4a4592630bcf021acf5 GIT binary patch literal 9945 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 xRLe_wT=U&Nf0Q_Wjx_)P literal 0 HcmV?d00001 diff --git a/ANE-Wizard-FlashBuilder/src/com/freshplanet/ane/wizards/flashbuilder/NewANEProjectWizard.java b/ANE-Wizard-FlashBuilder/src/com/freshplanet/ane/wizards/flashbuilder/NewANEProjectWizard.java index 5bf14f7..d4ef101 100644 --- a/ANE-Wizard-FlashBuilder/src/com/freshplanet/ane/wizards/flashbuilder/NewANEProjectWizard.java +++ b/ANE-Wizard-FlashBuilder/src/com/freshplanet/ane/wizards/flashbuilder/NewANEProjectWizard.java @@ -21,10 +21,12 @@ import org.eclipse.ui.ide.IDE; import org.eclipse.ui.wizards.newresource.BasicNewProjectResourceWizard; +import pl.mateuszmackowiak.ane.wizard.android.WizardNewProjectPackageAndLocationPage; + public class NewANEProjectWizard extends Wizard implements INewWizard { - private WizardNewProjectCreationPage wizardPage; + private WizardNewProjectPackageAndLocationPage wizardPage; private IConfigurationElement config; private IWorkbench workbench; private IStructuredSelection selection; @@ -43,9 +45,10 @@ public NewANEProjectWizard() */ public void addPages() { - wizardPage = new WizardNewProjectCreationPage("NewANEProject"); + wizardPage = new WizardNewProjectPackageAndLocationPage("NewANEProject"); wizardPage.setDescription("Create a new ANE Project"); wizardPage.setTitle("New ANE Project"); + wizardPage.setInitialPackageName("com.yourcompany"); addPage(wizardPage); } @@ -60,6 +63,7 @@ public boolean performFinish() if (project != null) return true; final IProject projectHandle = wizardPage.getProjectHandle(); + final String packageName = wizardPage.getPackageName(); URI projectURI = (!wizardPage.useDefaults()) ? wizardPage.getLocationURI() : null; IWorkspace workspace = ResourcesPlugin.getWorkspace(); final IProjectDescription desc = workspace.newProjectDescription(projectHandle.getName()); @@ -68,7 +72,7 @@ public boolean performFinish() WorkspaceModifyOperation op = new WorkspaceModifyOperation() { protected void execute(IProgressMonitor monitor) throws CoreException { - createProject(desc, projectHandle, monitor); + createProject(desc, projectHandle, monitor,packageName); } }; @@ -106,7 +110,7 @@ protected void execute(IProgressMonitor monitor) throws CoreException * @throws CoreException * @throws OperationCanceledException */ - void createProject(IProjectDescription description, IProject proj, IProgressMonitor monitor) throws CoreException, OperationCanceledException + void createProject(IProjectDescription description, IProject proj, IProgressMonitor monitor, String packageName) throws CoreException, OperationCanceledException { try { @@ -126,17 +130,33 @@ void createProject(IProjectDescription description, IProject proj, IProgressMoni // Create folders createFolder("src", container, monitor); - createFolder("src/com", container, monitor); + /*createFolder("src/com", container, monitor); createFolder("src/com/freshplanet", container, monitor); createFolder("src/com/freshplanet/ane", container, monitor); - + */ + + + String fullPackageString = "src"; + //Create folders if package not empty + if(packageName!=null && !packageName.isEmpty()){ + String[] packages = packageName.split("\\."); + + for (String packageElement : packages) { + fullPackageString+="/"+packageElement; + createFolder(fullPackageString, container, monitor); + } + } + + // Copy files String projectName = description.getName(); - copyFile(".project", ".project", projectName, container, monitor); - copyFile(".actionScriptProperties", ".actionScriptProperties", projectName, container, monitor); - copyFile(".flexLibProperties", ".flexLibProperties", projectName, container, monitor); - copyFile("extension.xml", "src/extension.xml", projectName, container, monitor); - copyFile("Main.as", "src/com/freshplanet/ane/"+ projectName + ".as", projectName, container, monitor); + copyFile(".project", ".project", projectName,packageName, container, monitor); + copyFile(".actionScriptProperties", ".actionScriptProperties", projectName,packageName, container, monitor); + copyFile(".flexLibProperties", ".flexLibProperties", projectName,packageName, container, monitor); + copyFile("extension.xml", "src/extension.xml", projectName,packageName, container, monitor); + + copyFile("Main.as", fullPackageString+"/"+ projectName + ".as", projectName,packageName, container, monitor); + //copyFile("Main.as", "src/com/freshplanet/ane/"+ projectName + ".as", projectName, container, monitor); } catch (IOException ioe) { @@ -156,9 +176,9 @@ private void createFolder(String path, IContainer container, IProgressMonitor mo folder.create(true, true, monitor); } - private void copyFile(String resourceName, String finalPath, String projectName, IContainer container, IProgressMonitor monitor) throws IOException, CoreException + private void copyFile(String resourceName, String finalPath, String projectName, String packageName, IContainer container, IProgressMonitor monitor) throws IOException, CoreException { - InputStream resourceStream = openFilteredResource(resourceName, projectName); + InputStream resourceStream = openFilteredResource(resourceName, projectName,packageName); addFileToProject(container, new Path(finalPath), resourceStream, monitor); resourceStream.close(); } @@ -187,7 +207,7 @@ private void addFileToProject(IContainer container, Path path, InputStream conte } - private InputStream openFilteredResource(String resourceName, String projectName) throws CoreException + private InputStream openFilteredResource(String resourceName, String projectName,String packageName) throws CoreException { final String newline = "\n"; String line; @@ -199,6 +219,11 @@ private InputStream openFilteredResource(String resourceName, String projectName try { while ((line = reader.readLine()) != null) { + if(packageName!=null && !packageName.isEmpty()) + line = line.replaceAll("\\$\\{PACKAGE_NAME\\}", packageName); + else{ + line = line.replaceAll("\\$\\{PACKAGE_NAME\\}", ""); + } line = line.replaceAll("\\$\\{PROJECT_NAME\\}", projectName); sb.append(line); sb.append(newline); diff --git a/ANE-Wizard-FlashBuilder/src/com/freshplanet/ane/wizards/flashbuilder/resources/.flexLibProperties b/ANE-Wizard-FlashBuilder/src/com/freshplanet/ane/wizards/flashbuilder/resources/.flexLibProperties index e044014..dca0055 100644 --- a/ANE-Wizard-FlashBuilder/src/com/freshplanet/ane/wizards/flashbuilder/resources/.flexLibProperties +++ b/ANE-Wizard-FlashBuilder/src/com/freshplanet/ane/wizards/flashbuilder/resources/.flexLibProperties @@ -1,7 +1,7 @@ - + diff --git a/ANE-Wizard-FlashBuilder/src/com/freshplanet/ane/wizards/flashbuilder/resources/Main.as b/ANE-Wizard-FlashBuilder/src/com/freshplanet/ane/wizards/flashbuilder/resources/Main.as index 4702057..0421a1b 100644 --- a/ANE-Wizard-FlashBuilder/src/com/freshplanet/ane/wizards/flashbuilder/resources/Main.as +++ b/ANE-Wizard-FlashBuilder/src/com/freshplanet/ane/wizards/flashbuilder/resources/Main.as @@ -1,22 +1,4 @@ -////////////////////////////////////////////////////////////////////////////////////// -// -// Copyright 2012 Freshplanet (http://freshplanet.com | opensource@freshplanet.com) -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -////////////////////////////////////////////////////////////////////////////////////// - -package com.freshplanet.ane +package ${PACKAGE_NAME} { import flash.events.EventDispatcher; import flash.events.StatusEvent; @@ -32,7 +14,7 @@ package com.freshplanet.ane { if (!_instance) { - extCtx = ExtensionContext.createExtensionContext("com.freshplanet.ane.${PROJECT_NAME}", null); + extCtx = ExtensionContext.createExtensionContext("${PACKAGE_NAME}.${PROJECT_NAME}", null); if (extCtx != null) { extCtx.addEventListener(StatusEvent.STATUS, onStatus); diff --git a/ANE-Wizard-FlashBuilder/src/com/freshplanet/ane/wizards/flashbuilder/resources/extension.xml b/ANE-Wizard-FlashBuilder/src/com/freshplanet/ane/wizards/flashbuilder/resources/extension.xml index 54c46bc..37d7248 100755 --- a/ANE-Wizard-FlashBuilder/src/com/freshplanet/ane/wizards/flashbuilder/resources/extension.xml +++ b/ANE-Wizard-FlashBuilder/src/com/freshplanet/ane/wizards/flashbuilder/resources/extension.xml @@ -1,23 +1,5 @@ - - - com.freshplanet.ane.${PROJECT_NAME} + ${PACKAGE_NAME}.${PROJECT_NAME} 1 @@ -30,8 +12,8 @@ lib${PROJECT_NAME}.jar - com.freshplanet.ane.${PROJECT_NAME}.${PROJECT_NAME}Extension - com.freshplanet.ane.${PROJECT_NAME}.${PROJECT_NAME}Extension + ${PACKAGE_NAME}.${PROJECT_NAME}.${PROJECT_NAME}Extension + ${PACKAGE_NAME}.${PROJECT_NAME}.${PROJECT_NAME}Extension diff --git a/ANE-Wizard-FlashBuilder/src/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage.java b/ANE-Wizard-FlashBuilder/src/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage.java new file mode 100644 index 0000000..37c4f43 --- /dev/null +++ b/ANE-Wizard-FlashBuilder/src/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectPackageAndLocationPage.java @@ -0,0 +1,461 @@ +package pl.mateuszmackowiak.ane.wizard.android; + + +import java.net.URI; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IWorkspace; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Path; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.VerifyEvent; +import org.eclipse.swt.events.VerifyListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Listener; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.IWorkingSet; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.dialogs.WorkingSetGroup; +import org.eclipse.ui.internal.ide.IDEWorkbenchMessages; +import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin; +import org.eclipse.ui.internal.ide.IIDEHelpContextIds; +import org.eclipse.ui.internal.ide.dialogs.ProjectContentsLocationArea; +import org.eclipse.ui.internal.ide.dialogs.ProjectContentsLocationArea.IErrorMessageReporter; + + +/** + * + * @author Mateusz Mackowiak + * + */ +public class WizardNewProjectPackageAndLocationPage extends WizardPage { + + // initial value stores + private String initialProjectFieldValue; + private String initialPackageFieldValue; + + // widgets + Text projectNameField; + Text packageNameField; + + private Listener packageModifyListener = new Listener() { + + @Override + public void handleEvent(Event event) { + boolean valid = validatePage(); + setPageComplete(valid); + } + }; + private Listener nameModifyListener = new Listener() { + public void handleEvent(Event e) { + setLocationForSelection(); + boolean valid = validatePage(); + setPageComplete(valid); + + } + }; + + private ProjectContentsLocationArea locationArea; + + + private WorkingSetGroup workingSetGroup; + + // constants + private static final int SIZING_TEXT_FIELD_WIDTH = 250; + + /** + * Creates a new project creation wizard page. + * + * @param pageName the name of this page + */ + public WizardNewProjectPackageAndLocationPage(String pageName){ + super(pageName); + setPageComplete(false); + } + + public String getPackageName(){ + return getPackageNameFieldValue(); + } + + + /** (non-Javadoc) + * Method declared on IDialogPage. + */ + public void createControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NULL); + + + initializeDialogUnits(parent); + + PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, + IIDEHelpContextIds.NEW_PROJECT_WIZARD_PAGE); + + composite.setLayout(new GridLayout()); + composite.setLayoutData(new GridData(GridData.FILL_BOTH)); + + createProjectNameGroup(composite); + locationArea = new ProjectContentsLocationArea(getErrorReporter(), composite); + if(initialProjectFieldValue != null) { + locationArea.updateProjectName(initialProjectFieldValue); + } + + // Scale the button based on the rest of the dialog + setButtonLayoutData(locationArea.getBrowseButton()); + + setPageComplete(validatePage()); + // Show description on opening + setErrorMessage(null); + setMessage(null); + setControl(composite); + Dialog.applyDialogFont(composite); + } + + /** + * Create a working set group for this page. This method can only be called + * once. + * + * @param composite + * the composite in which to create the group + * @param selection + * the current workbench selection + * @param supportedWorkingSetTypes + * an array of working set type IDs that will restrict what types + * of working sets can be chosen in this group + * @return the created group. If this method has been called previously the + * original group will be returned. + * @since 3.4 + */ + public WorkingSetGroup createWorkingSetGroup(Composite composite, + IStructuredSelection selection, String[] supportedWorkingSetTypes) { + if (workingSetGroup != null) + return workingSetGroup; + workingSetGroup = new WorkingSetGroup(composite, selection, + supportedWorkingSetTypes); + return workingSetGroup; + } + + /** + * Get an error reporter for the receiver. + * @return IErrorMessageReporter + */ + private IErrorMessageReporter getErrorReporter() { + return new IErrorMessageReporter(){ + /* (non-Javadoc) + * @see org.eclipse.ui.internal.ide.dialogs.ProjectContentsLocationArea.IErrorMessageReporter#reportError(java.lang.String) + */ + public void reportError(String errorMessage, boolean infoOnly) { + if (infoOnly) { + setMessage(errorMessage, IStatus.INFO); + setErrorMessage(null); + } + else + setErrorMessage(errorMessage); + boolean valid = errorMessage == null; + if(valid) { + valid = validatePage(); + } + + setPageComplete(valid); + } + }; + } + + /** + * Creates the project name specification controls. + * + * @param parent the parent composite + */ + private final void createProjectNameGroup(Composite parent) { + // project specification group + Composite projectGroup = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.numColumns = 2; + projectGroup.setLayout(layout); + projectGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + // new project label + Label projectLabel = new Label(projectGroup, SWT.NONE); + projectLabel.setText(IDEWorkbenchMessages.WizardNewProjectCreationPage_nameLabel); + projectLabel.setFont(parent.getFont()); + + // new project name entry field + projectNameField = new Text(projectGroup, SWT.BORDER); + GridData data = new GridData(GridData.FILL_HORIZONTAL); + data.widthHint = SIZING_TEXT_FIELD_WIDTH; + projectNameField.setLayoutData(data); + projectNameField.setFont(parent.getFont()); + + //package lable + Label packageNameLabel = new Label(projectGroup, SWT.NONE); + packageNameLabel.setText("Main package name"); + packageNameLabel.setFont(parent.getFont()); + + //package name input field + packageNameField = new Text(projectGroup, SWT.BORDER); + packageNameField.setFont(parent.getFont()); + data = new GridData(GridData.FILL_HORIZONTAL); + data.widthHint = SIZING_TEXT_FIELD_WIDTH; + packageNameField.setLayoutData(data); + + if(initialPackageFieldValue!=null){ + packageNameField.setText(initialPackageFieldValue); + } + packageNameField.addListener(SWT.Modify, packageModifyListener); + + // Set the initial value first before listener + // to avoid handling an event during the creation. + if (initialProjectFieldValue != null) { + projectNameField.setText(initialProjectFieldValue); + } + projectNameField.addListener(SWT.Modify, nameModifyListener); + } + + + /** + * Returns the current project location path as entered by + * the user, or its anticipated initial value. + * Note that if the default has been returned the path + * in a project description used to create a project + * should not be set. + * + * @return the project location path or its anticipated initial value. + */ + public IPath getLocationPath() { + return new Path(locationArea.getProjectLocation()); + } + + /** + /** + * Returns the current project location URI as entered by + * the user, or null if a valid project location + * has not been entered. + * + * @return the project location URI, or null + * @since 3.2 + */ + public URI getLocationURI() { + return locationArea.getProjectLocationURI(); + } + + /** + * Creates a project resource handle for the current project name field + * value. The project handle is created relative to the workspace root. + *

+ * This method does not create the project resource; this is the + * responsibility of IProject::create invoked by the new + * project resource wizard. + *

+ * + * @return the new project resource handle + */ + public IProject getProjectHandle() { + return ResourcesPlugin.getWorkspace().getRoot().getProject( + getProjectName()); + } + + /** + * Returns the current project name as entered by the user, or its anticipated + * initial value. + * + * @return the project name, its anticipated initial value, or null + * if no project name is known + */ + public String getProjectName() { + if (projectNameField == null) { + return initialProjectFieldValue; + } + + return getProjectNameFieldValue(); + } + /** + * Returns the value of the project package name field + * with leading and trailing spaces removed. + * + * @return the project name in the field + */ + private String getPackageNameFieldValue(){ + if(packageNameField==null){ + return ""; + } + return packageNameField.getText().trim(); + } + /** + * Returns the value of the project name field + * with leading and trailing spaces removed. + * + * @return the project name in the field + */ + private String getProjectNameFieldValue() { + if (projectNameField == null) { + return ""; //$NON-NLS-1$ + } + + return projectNameField.getText().trim(); + } + + + public void setInitialPackageName(String name) { + if (name == null) { + initialPackageFieldValue = null; + } else { + initialPackageFieldValue = name.trim(); + } + if(packageNameField!=null){ + if(initialPackageFieldValue!=null){ + packageNameField.setText(initialPackageFieldValue); + } + else{ + packageNameField.setText(""); + } + } + } + /** + * Sets the initial project name that this page will use when + * created. The name is ignored if the createControl(Composite) + * method has already been called. Leading and trailing spaces + * in the name are ignored. + * Providing the name of an existing project will not necessarily + * cause the wizard to warn the user. Callers of this method + * should first check if the project name passed already exists + * in the workspace. + * + * @param name initial project name for this page + * + * @see IWorkspace#validateName(String, int) + * + */ + public void setInitialProjectName(String name) { + if (name == null) { + initialProjectFieldValue = null; + } else { + initialProjectFieldValue = name.trim(); + if(locationArea != null) { + locationArea.updateProjectName(name.trim()); + } + } + } + + /** + * Set the location to the default location if we are set to useDefaults. + */ + void setLocationForSelection() { + locationArea.updateProjectName(getProjectNameFieldValue()); + } + + + /** + * Returns whether this page's controls currently all contain valid + * values. + * + * @return true if all controls are valid, and + * false if at least one is invalid + */ + protected boolean validatePage() { + IWorkspace workspace = IDEWorkbenchPlugin.getPluginWorkspace(); + + String packageNameContents = getPackageNameFieldValue(); + if(packageNameContents==null || packageNameContents.equals("")){ + setErrorMessage("Package name cannot be empty!"); + setMessage("Package name cannot be empty!"); + return false; + } + if(packageNameContents.endsWith(".") || packageNameContents.startsWith(".")){ + setErrorMessage("Package name cannot start or begin with a '.' character"); + setMessage("Package name cannot start or begin with a '.' character!"); + return false; + } + boolean lastWasDot = true; + for (int i = 0; i < packageNameContents.length(); i++) { + char m = packageNameContents.charAt(i);//i; + + if(!(Character.isLetter(m) || (!lastWasDot && Character.isDigit(m)) || m=='.' || m=='_')){ + setErrorMessage("Package name is not valid! Use only Letters, numbers '.' or '_'"); + setMessage("Package name is not valid!"); + return false; + }else if (lastWasDot && Character.isDigit(m)){ + setErrorMessage("Package name cannot start with a number is not valid!"); + setMessage("Package name cannot start with a number is not validd!"); + return false; + } + if(m=='.'){ + lastWasDot = true; + }else{ + lastWasDot = false; + } + } + + String projectFieldContents = getProjectNameFieldValue(); + if (projectFieldContents.equals("")) { //$NON-NLS-1$ + setErrorMessage(null); + setMessage(IDEWorkbenchMessages.WizardNewProjectCreationPage_projectNameEmpty); + return false; + } + + IStatus nameStatus = workspace.validateName(projectFieldContents, + IResource.PROJECT); + if (!nameStatus.isOK()) { + setErrorMessage(nameStatus.getMessage()); + return false; + } + + IProject handle = getProjectHandle(); + if (handle.exists()) { + setErrorMessage(IDEWorkbenchMessages.WizardNewProjectCreationPage_projectExistsMessage); + return false; + } + + IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject( + getProjectNameFieldValue()); + locationArea.setExistingProject(project); + + String validLocationMessage = locationArea.checkValidLocation(); + if (validLocationMessage != null) { // there is no destination location given + setErrorMessage(validLocationMessage); + return false; + } + + setErrorMessage(null); + setMessage(null); + return true; + } + + /* + * see @DialogPage.setVisible(boolean) + */ + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + projectNameField.setFocus(); + } + } + + /** + * Returns the useDefaults. + * @return boolean + */ + public boolean useDefaults() { + return locationArea.isDefault(); + } + + /** + * Return the selected working sets, if any. If this page is not configured + * to interact with working sets this will be an empty array. + * + * @return the selected working sets + * @since 3.4 + */ + public IWorkingSet[] getSelectedWorkingSets() { + return workingSetGroup == null ? new IWorkingSet[0] : workingSetGroup + .getSelectedWorkingSets(); + } +} From 9f9fecb4ffe092cd806eddc125d04b6df1a2528d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Ma=C4=87kowiak?= Date: Thu, 10 Jan 2013 00:51:52 +0100 Subject: [PATCH 2/4] Update README.md --- README.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1763543..228857b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,14 @@ -**ANE-Wizard** +# ANE-Wizard # +*** +#####This is a fork of repo by [freshplanet](https://github.com/freshplanet/ANE-Wizard) with some CHANGES. +#####Now an input for the extension package. +*** + + + + + + This wizard is a set of tools to help Air Mobile developers build ANE (Air Native Extensions) faster. @@ -47,4 +57,4 @@ If you need more information about ANEs, we recommand you read the following art - http://www.adobe.com/devnet/air/native-extensions-for-air.html - http://www.adobe.com/devnet/air/articles/transferring-data-ane-ios-pt1.html -- http://www.adobe.com/devnet/air/articles/extending-air.html \ No newline at end of file +- http://www.adobe.com/devnet/air/articles/extending-air.html From 2785889c97bce6ffc509e325313f0f084fe5fa3b Mon Sep 17 00:00:00 2001 From: Mateusz Mackowiak Date: Thu, 10 Jan 2013 23:36:58 +0100 Subject: [PATCH 3/4] Flash builder Main project with build script and other.. --- .../flashbuilder/resources/.flexLibProperties | 2 +- ANE-Wizard-MainProject/.classpath | 7 + ANE-Wizard-MainProject/.project | 28 + .../.settings/org.eclipse.jdt.core.prefs | 8 + ANE-Wizard-MainProject/META-INF/MANIFEST.MF | 13 + .../ane/wizard/android/Activator.class | Bin 0 -> 1236 bytes .../android/NewANEMainProjectWizard$1.class | Bin 0 -> 1604 bytes .../android/NewANEMainProjectWizard$2.class | Bin 0 -> 4165 bytes .../android/NewANEMainProjectWizard.class | Bin 0 -> 11997 bytes ...rdNewProjectWithAirSDKLocationPage$1.class | Bin 0 -> 1078 bytes ...rdNewProjectWithAirSDKLocationPage$2.class | Bin 0 -> 1078 bytes ...rdNewProjectWithAirSDKLocationPage$3.class | Bin 0 -> 1121 bytes ...rdNewProjectWithAirSDKLocationPage$4.class | Bin 0 -> 1558 bytes ...zardNewProjectWithAirSDKLocationPage.class | Bin 0 -> 12888 bytes .../android/resources/.actionScriptProperties | 25 + .../android/resources/.flexLibProperties | 8 + .../ane/wizard/android/resources/.project | 18 + .../ane/wizard/android/resources/Main.as | 62 ++ .../resources/build.properties.resources | 6 +- .../android/resources/build.xml.resources | 19 - .../wizard/android/resources/extension.xml | 24 + ANE-Wizard-MainProject/build.properties | 6 + ANE-Wizard-MainProject/icons/freshplanet.gif | Bin 0 -> 565 bytes ANE-Wizard-MainProject/plugin.xml | 20 + .../ane/wizard/android/Activator.java | 62 ++ .../android/NewANEMainProjectWizard.java | 333 ++++++++++ ...izardNewProjectWithAirSDKLocationPage.java | 601 ++++++++++++++++++ .../android/resources/.actionScriptProperties | 25 + .../android/resources/.flexLibProperties | 8 + .../ane/wizard/android/resources/.project | 18 + .../ane/wizard/android/resources/Main.as | 62 ++ .../resources/build.properties.resources | 26 + .../android/resources/build.xml.resources | 99 +++ .../wizard/android/resources/extension.xml | 24 + ANE-Wizards-MainProject.jar | Bin 0 -> 25230 bytes LICENSE | 177 ------ NOTICE | 13 - README.md | 39 +- newANE.py | 27 - 39 files changed, 1497 insertions(+), 263 deletions(-) create mode 100644 ANE-Wizard-MainProject/.classpath create mode 100644 ANE-Wizard-MainProject/.project create mode 100644 ANE-Wizard-MainProject/.settings/org.eclipse.jdt.core.prefs create mode 100644 ANE-Wizard-MainProject/META-INF/MANIFEST.MF create mode 100644 ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/Activator.class create mode 100644 ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/NewANEMainProjectWizard$1.class create mode 100644 ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/NewANEMainProjectWizard$2.class create mode 100644 ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/NewANEMainProjectWizard.class create mode 100644 ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectWithAirSDKLocationPage$1.class create mode 100644 ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectWithAirSDKLocationPage$2.class create mode 100644 ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectWithAirSDKLocationPage$3.class create mode 100644 ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectWithAirSDKLocationPage$4.class create mode 100644 ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectWithAirSDKLocationPage.class create mode 100644 ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/.actionScriptProperties create mode 100644 ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/.flexLibProperties create mode 100644 ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/.project create mode 100644 ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/Main.as rename resources/build.properties => ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/build.properties.resources (87%) rename resources/build.xml => ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/build.xml.resources (77%) create mode 100755 ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/extension.xml create mode 100644 ANE-Wizard-MainProject/build.properties create mode 100644 ANE-Wizard-MainProject/icons/freshplanet.gif create mode 100644 ANE-Wizard-MainProject/plugin.xml create mode 100644 ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/Activator.java create mode 100644 ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/NewANEMainProjectWizard.java create mode 100644 ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectWithAirSDKLocationPage.java create mode 100644 ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/.actionScriptProperties create mode 100644 ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/.flexLibProperties create mode 100644 ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/.project create mode 100644 ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/Main.as create mode 100644 ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/build.properties.resources create mode 100644 ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/build.xml.resources create mode 100755 ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/extension.xml create mode 100644 ANE-Wizards-MainProject.jar delete mode 100644 LICENSE delete mode 100644 NOTICE delete mode 100755 newANE.py diff --git a/ANE-Wizard-FlashBuilder/bin/com/freshplanet/ane/wizards/flashbuilder/resources/.flexLibProperties b/ANE-Wizard-FlashBuilder/bin/com/freshplanet/ane/wizards/flashbuilder/resources/.flexLibProperties index e044014..dca0055 100644 --- a/ANE-Wizard-FlashBuilder/bin/com/freshplanet/ane/wizards/flashbuilder/resources/.flexLibProperties +++ b/ANE-Wizard-FlashBuilder/bin/com/freshplanet/ane/wizards/flashbuilder/resources/.flexLibProperties @@ -1,7 +1,7 @@ - + diff --git a/ANE-Wizard-MainProject/.classpath b/ANE-Wizard-MainProject/.classpath new file mode 100644 index 0000000..ad32c83 --- /dev/null +++ b/ANE-Wizard-MainProject/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/ANE-Wizard-MainProject/.project b/ANE-Wizard-MainProject/.project new file mode 100644 index 0000000..4f5a6de --- /dev/null +++ b/ANE-Wizard-MainProject/.project @@ -0,0 +1,28 @@ + + + ANE-Wizard-MainProject + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/ANE-Wizard-MainProject/.settings/org.eclipse.jdt.core.prefs b/ANE-Wizard-MainProject/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..b237604 --- /dev/null +++ b/ANE-Wizard-MainProject/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +#Fri Aug 10 20:43:18 EDT 2012 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/ANE-Wizard-MainProject/META-INF/MANIFEST.MF b/ANE-Wizard-MainProject/META-INF/MANIFEST.MF new file mode 100644 index 0000000..565be4e --- /dev/null +++ b/ANE-Wizard-MainProject/META-INF/MANIFEST.MF @@ -0,0 +1,13 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: ANE-Wizards-FlashBuilderMainProject +Bundle-SymbolicName: ANE-Wizards-FlashBuilderMainProject;singleton:=true +Bundle-Version: 1.0.0 +Bundle-Activator: pl.mateuszmackowiak.ane.wizard.android.Activator +Bundle-Vendor: Mateusz Maćkowiak +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.eclipse.core.resources, + org.eclipse.ui.ide +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Bundle-ActivationPolicy: lazy diff --git a/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/Activator.class b/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/Activator.class new file mode 100644 index 0000000000000000000000000000000000000000..07c34716167737db697c2c2a32d7e8bf78b04970 GIT binary patch literal 1236 zcmbtTTT|0O6#ljp($)Z41VogpKwHEJ`Ud03txjhu!-(LcvrU(hg^rsLY84VRGuSTUq-QT66r*K;>o~SZp2z~S8vxg(*uV5W_|lv zZR2%qjiFfI=ZD&g)#hYasQ;}6qU~Cefz(eJI!fgohU{wC6a{qPx(yrM483(3h>fJx z5b7mw_`;|UUGDF2B~5&GnALkSX6PgbiZo4?>ZUMZ>`7-=@s>CW)q%5;1WjL%Pc4r1 zqM<9SAG;#blB`>}#n5+In2Q^u=C+NS=+A@Uj*SAYF<5RJhGF8*ROBnxVPufTZH%Iy zm_4D_#4b;KlKZ$+{+HSn38U8Ho>&vHt7Jq&!SJ;7V|UA`#Pc!P-{r1wl!(Jb(dG)m zVu4)F*eIdQFeJZ+ud1+hK2a}zLiC^1RHumRJ*v)Ds;w$b!+S19{()%^#z|lY{W%#7 zp%YycS!tA`&QNb?-$`dQJ+$^v^oYL9oK{ZJ`!-FzL2H2kfB|GNh$8Lmb`tth2xb~i z83S~arJKPNs!Av3RiQF_ilNGT3}52)q@qTMd=z<%rI-Wl>@!Tmc^4z892$aOqcZ|F z3}aW(XGlwl(96F?&tn3U#A3|fOI?wNcNl&{aR$b_DH<@Jq8LAU%9}cSF;6+>)+**I XA25CO(b6}?vQQx?Q2H#b8QlL0<$M^8 literal 0 HcmV?d00001 diff --git a/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/NewANEMainProjectWizard$1.class b/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/NewANEMainProjectWizard$1.class new file mode 100644 index 0000000000000000000000000000000000000000..caca814108e62bc3c3aa14c34a4aa39b36662504 GIT binary patch literal 1604 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 V)PEF&*fG}eJMJPpU2x@}{{aj0$Hf2u literal 0 HcmV?d00001 diff --git a/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/NewANEMainProjectWizard.class b/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/NewANEMainProjectWizard.class new file mode 100644 index 0000000000000000000000000000000000000000..b03534dc27341a0f30504d8cd7739fd4fc217456 GIT binary patch literal 11997 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 AdjJ3c literal 0 HcmV?d00001 diff --git a/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectWithAirSDKLocationPage$3.class b/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectWithAirSDKLocationPage$3.class new file mode 100644 index 0000000000000000000000000000000000000000..5fee8969ea90b6b992b2218092fdc4908a27730a GIT binary patch literal 1121 zcmb_bU2hUW6g>mmuFzEwKd4$QR#ZNWYwU|j)x=<%7`K4M(1f>PcLLKcJ7jl&r2oo9 zYvO}Hz#nD2v&Hyi^npz#ckZ2Y&)m89?2n({z5{rUCpIz+ooVP!xE8bIY{LChwUGSO z<&kg~@{Gp;ZG%|Jz&%dgwpesybs~IyEcN(}jC*h2d&=ips;J9HqPlCtVkn;QId?-I zjoi-Aplz%(R8%~2g&)dkBHU!5>55<^bmDq4(IOHt!@3^Jr234?@>W{c9#OxPk<_ml zj%q9BuJ;+NmI_1;43{0)xRgg01qV448L~A4D0ngw?b&1~;*We73WkztT-fKaH2yMZ znFcU?SZ#^bU24F_m}VJ@{ke!V!%ofn+c;9hUcH~kCT`of#c;UNVK}&B`ch7W{;iz@ z7579)LLnWQYwtR^hiwLD&O;fHJdL>0Ru0VZeFr;uKuskIbJ9|iX(%)ytlGeIo6&ar z9}i?$OW6rMV958>EcV5LG^1($pW2@qnNt<}ksqo=Mx#Ta$10$*-$f+nR>+e?B&d)q zvb5H~ibbOi`u#Gra>!G3gLW^-H<5g!`2|knE3SM>F;`72Ju%rHO5{6~W1`n^oh-u* z++4B@37MtXX5%xQbCfU4)+=MT&QbZpS%O8lHr3KW0bP`FlyX-t@|WDigeo2qdx2_w ZgvTj=jWRQ+qe0dp1kj{qUSjH^?-y*!EHVH9 literal 0 HcmV?d00001 diff --git a/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectWithAirSDKLocationPage$4.class b/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectWithAirSDKLocationPage$4.class new file mode 100644 index 0000000000000000000000000000000000000000..e5fe1d27a70d8436badcf7608744853569d4352c GIT binary patch literal 1558 zcmcIkT~8B16g@*17Rn+O6;VM^tM)@#L{to>NGc}87LY1L-iCH81KZtZb_xx zEy*`*?h1QLZgW*4v7|g%vX{f-oY-1W-nu9T%Q9G-ma6dddCn{HKzi;1FN^rN34Ibi4r)}$XFrCf3?O=gl@KbEcxG7O7}7W+;vF&J5|B)Y)R zW5Gmc6cO}V=t7JklF$mhIq8bIT4hzJmweR`41KyF&JtHrpPQhe3&8NAwIRmGsQ}$7 zEOS_RhWn02fVMV92+$0TwP{kRj@epxN}3Lzr!ZaM{8Y3{%xe z|M;XZoI4@zhRrn#*AZv1Hn}59vEt1Z!T&!aa=B8kU=dINFuhiDd4-tRc;cHS4-UWgYJO!Z-1dVd@{LsB3vwK1Dx6mbxvz6ywTS0&_`#BY&3cXXX#6% z=x=)YLM#ShQ-eD=pZWwVZPXhAt7B*v-62L|`WsAR7e*vAw9`QAxSG+oLv`HH)DdXv z6wv_h$>|65V2`Li(wKdsg!bvKju9N-0S=MD=P2Rlz#%)R@MLzD3 r6d_ws>g@xj`Goy|r7L6;)P_;qrLRFmW4KRJA7Sl8Gtr@cKH>8VG8nS( literal 0 HcmV?d00001 diff --git a/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectWithAirSDKLocationPage.class b/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectWithAirSDKLocationPage.class new file mode 100644 index 0000000000000000000000000000000000000000..b58a69f812fb1d3ea947072b77e204b7fdecbef4 GIT binary patch literal 12888 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 YA(uO}yn;d$Ozb~RPP@QqAG6#40u + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/.flexLibProperties b/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/.flexLibProperties new file mode 100644 index 0000000..dca0055 --- /dev/null +++ b/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/.flexLibProperties @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/.project b/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/.project new file mode 100644 index 0000000..425454b --- /dev/null +++ b/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/.project @@ -0,0 +1,18 @@ + + + ${PROJECT_NAME} + + + + + + com.adobe.flexbuilder.project.flexbuilder + + + + + + com.adobe.flexbuilder.project.flexlibnature + com.adobe.flexbuilder.project.actionscriptnature + + diff --git a/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/Main.as b/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/Main.as new file mode 100644 index 0000000..bca65e5 --- /dev/null +++ b/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/Main.as @@ -0,0 +1,62 @@ +package ${MYPACKAGE_NAME} +{ + import flash.events.EventDispatcher; + import flash.events.StatusEvent; + import flash.external.ExtensionContext; + + public class ${MYPROJECT_NAME} extends EventDispatcher + { + private static var _instance:${MYPROJECT_NAME}; + + private var extCtx:ExtensionContext = null; + + public function ${MYPROJECT_NAME}() + { + if (!_instance) + { + extCtx = ExtensionContext.createExtensionContext("${MYPACKAGE_NAME}.${MYPROJECT_NAME}", null); + if (extCtx != null) + { + extCtx.addEventListener(StatusEvent.STATUS, onStatus); + } + else + { + trace('[${MYPROJECT_NAME}] Error - Extension Context is null.'); + } + _instance = this; + } + else + { + throw Error('This is a singleton, use getInstance(), do not call the constructor directly.'); + } + } + + public static function getInstance() : ${MYPROJECT_NAME} + { + return _instance ? _instance : new ${MYPROJECT_NAME}(); + } + + + /** + * Example function. + * Define your own API and use extCtx.call() to communicate with the native part of the ANE. + */ + public function isSupported() : Boolean + { + return extCtx.call('isSupported'); + } + + + /** + * Status events allow the native part of the ANE to communicate with the ActionScript part. + * We use event.code to represent the type of event, and event.level to carry the data. + */ + private function onStatus( event : StatusEvent ) : void + { + if (event.code == "LOGGING") + { + trace('[${MYPROJECT_NAME}] ' + event.level); + } + } + } +} \ No newline at end of file diff --git a/resources/build.properties b/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/build.properties.resources similarity index 87% rename from resources/build.properties rename to ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/build.properties.resources index e876358..8e03d22 100644 --- a/resources/build.properties +++ b/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/build.properties.resources @@ -1,4 +1,6 @@ -AIR_SDK_PATH = /Applications/Adobe Flash Builder 4.6/sdks/4.6.0 +AIR_SDK_PATH = ${MYAIR_SDK_PATH} +PROJECT_NAME = ${MYPROJECT_NAME} + FRE.JAR = ${AIR_SDK_PATH}/lib/android/FlashRuntimeExtensions.jar ADT.JAR = ${AIR_SDK_PATH}/lib/adt.jar @@ -10,7 +12,7 @@ ANDROID_FOLDER = NativeAndroid ANE_PATH = ${BINARIES_FOLDER}/${PROJECT_NAME}.ane SWC_PATH = ${ACTIONSCRIPT_FOLDER}/bin/${PROJECT_NAME}.swc -EXTENSION.XML = ${ACTIONSCRIPT_FOLDER}/src/extension.xml +EXTENSION.XML = extension.xml IOS_PLATFORM_OPTIONS = ${IOS_FOLDER}/${PROJECT_NAME}/platformoptions.xml IOS_PROJECT_PATH = ${IOS_FOLDER}/${PROJECT_NAME}.xcodeproj diff --git a/resources/build.xml b/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/build.xml.resources similarity index 77% rename from resources/build.xml rename to ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/build.xml.resources index a54cc6c..94591fe 100644 --- a/resources/build.xml +++ b/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/build.xml.resources @@ -1,22 +1,3 @@ - - - diff --git a/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/extension.xml b/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/extension.xml new file mode 100755 index 0000000..3393490 --- /dev/null +++ b/ANE-Wizard-MainProject/bin/pl/mateuszmackowiak/ane/wizard/android/resources/extension.xml @@ -0,0 +1,24 @@ + + ${MYPACKAGE_NAME}.${MYPROJECT_NAME} + 1 + + + + lib${MYPROJECT_NAME}.a + ${MYPROJECT_NAME}ExtInitializer + ${MYPROJECT_NAME}ExtFinalizer + + + + + lib${MYPROJECT_NAME}.jar + ${MYPROJECT_NAME}.${MYPROJECT_NAME}.${MYPROJECT_NAME}Extension + ${MYPROJECT_NAME}.${MYPROJECT_NAME}.${MYPROJECT_NAME}Extension + + + + + + + + \ No newline at end of file diff --git a/ANE-Wizard-MainProject/build.properties b/ANE-Wizard-MainProject/build.properties new file mode 100644 index 0000000..0d3d3a7 --- /dev/null +++ b/ANE-Wizard-MainProject/build.properties @@ -0,0 +1,6 @@ +source.. = src/ +output.. = bin/ +bin.includes = plugin.xml,\ + META-INF/,\ + .,\ + icons/ diff --git a/ANE-Wizard-MainProject/icons/freshplanet.gif b/ANE-Wizard-MainProject/icons/freshplanet.gif new file mode 100644 index 0000000000000000000000000000000000000000..3f8d440c0fe7434de5c23eae0fa02007c7a0cb4f GIT binary patch literal 565 zcmZ?wbhEHb6krfwc*Xz%|ABy!={Pe>Hxu(WHulRL-2V-YL`6gub+uIu^t8=QjU24q zqXQW<1v}0!zwqXcOr;}(rhr>P=;X_*7$W7Ow^uE?w~fJEkV%TOX{t^EL(oGiA9#3QkA7WjgS1gaP}v6$J6dkH?lMSGcf#PVEE0z@QZ=r zCj-NG28OQ;3||-+J~J@9Wng&2!0?)Z;UxpeYfl*%9x*UHWMH_>z;KI!;R*x8B?g9L z3=BsZ7!EQp>}O!u%fPUmfnhBJ!!ibjB@7Jn85m|WF!Tchgpu(VJ6j?%vk)WWe<8s~ zq9XrgWxgsZ{MOaFs-|*NSLdaz?RO71V6cJ1k0L_xCkrD3Lnea`$P`eVFtAT*$ZTqE zY0+=(Xo_?&?(7H-vgGM&ina6gOVw(Qk7H)C$+Wd|bFxm-%QR(SV~vUSbhLN2jtWcB z6xK;|v9b2?cD0W1vI{ZeR8ZBnu(o#h_plBRvraI`R8y1|Fi#E)@ID`!Xvo#XCn_kS tVPuugo?)WP-6Er+BrnD + + + + + + + + + + + diff --git a/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/Activator.java b/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/Activator.java new file mode 100644 index 0000000..ad4df9e --- /dev/null +++ b/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/Activator.java @@ -0,0 +1,62 @@ +package pl.mateuszmackowiak.ane.wizard.android; + + +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.osgi.framework.BundleContext; + +/** + * The activator class controls the plug-in life cycle + */ +public class Activator extends AbstractUIPlugin { + + // The plug-in ID + public static final String PLUGIN_ID = "ANE-Wizards-FlashBuilderMainProject"; //$NON-NLS-1$ + + // The shared instance + private static Activator plugin; + + /** + * The constructor + */ + public Activator() { + } + + /* + * (non-Javadoc) + * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) + */ + public void start(BundleContext context) throws Exception { + super.start(context); + plugin = this; + } + + /* + * (non-Javadoc) + * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) + */ + public void stop(BundleContext context) throws Exception { + plugin = null; + super.stop(context); + } + + /** + * Returns the shared instance + * + * @return the shared instance + */ + public static Activator getDefault() { + return plugin; + } + + /** + * Returns an image descriptor for the image file at the given + * plug-in relative path + * + * @param path the path + * @return the image descriptor + */ + public static ImageDescriptor getImageDescriptor(String path) { + return imageDescriptorFromPlugin(PLUGIN_ID, path); + } +} diff --git a/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/NewANEMainProjectWizard.java b/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/NewANEMainProjectWizard.java new file mode 100644 index 0000000..ac4b622 --- /dev/null +++ b/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/NewANEMainProjectWizard.java @@ -0,0 +1,333 @@ +package pl.mateuszmackowiak.ane.wizard.android; + +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; +import org.eclipse.core.runtime.*; +import org.eclipse.jface.operation.*; +import java.lang.reflect.InvocationTargetException; +import java.net.MalformedURLException; +import java.net.URI; +import java.net.URISyntaxException; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.core.resources.*; +import org.eclipse.core.runtime.CoreException; +import java.io.*; + +import javax.swing.JOptionPane; + +import org.eclipse.ui.*; +import org.eclipse.ui.actions.WorkspaceModifyOperation; +import org.eclipse.ui.dialogs.WizardNewProjectCreationPage; +import org.eclipse.ui.ide.IDE; +import org.eclipse.ui.wizards.newresource.BasicNewProjectResourceWizard; + + + +public class NewANEMainProjectWizard extends Wizard implements INewWizard +{ + private WizardNewProjectWithAirSDKLocationPage wizardPage; + private IConfigurationElement config; + private IWorkbench workbench; + private IStructuredSelection selection; + private IProject project; + + /** + * Constructor + */ + public NewANEMainProjectWizard() + { + super(); + } + + + + + /** + * Adding the page to the wizard. + */ + public void addPages() + { + wizardPage = new WizardNewProjectWithAirSDKLocationPage("NewANEMainProject"); + wizardPage.setDescription("Create a new ANE Main Project"); + wizardPage.setTitle("New ANE Main Project"); + wizardPage.setInitialPackageName("com.yourcompany"); + addPage(wizardPage); + } + + /** + * This method is called when 'Finish' button is pressed in + * the wizard. We will create an operation and run it + * using wizard as execution context. + */ + @Override + public boolean performFinish() + { + if (project != null) return true; + + final IProject projectHandle = wizardPage.getProjectHandle(); + final String AirSDKLocation = wizardPage.getSDKLocationName(); + final String packageName = wizardPage.getPackageName(); + final URI projectURI = (!wizardPage.useDefaults()) ? wizardPage.getLocationURI() : null; + final IProjectDescription desc = ResourcesPlugin.getWorkspace().newProjectDescription(projectHandle.getName()); + desc.setLocationURI(projectURI); + + try + { + try{ + System.setProperty(WizardNewProjectWithAirSDKLocationPage.aneAIRSDKPathKey, AirSDKLocation); + }catch(Exception e){} + + + getContainer().run(true, true, new WorkspaceModifyOperation() { + protected void execute(IProgressMonitor monitor) throws CoreException + { + createProject(desc, projectHandle, monitor,AirSDKLocation, packageName); + } + }); + + + getContainer().run(true, true, new WorkspaceModifyOperation() { + protected void execute(IProgressMonitor monitor) throws CoreException + { + try + { + String projectName = projectHandle.getName(); + final IProjectDescription descript = ResourcesPlugin.getWorkspace().newProjectDescription(projectName+"_AS"); + if(projectURI!=null){ + descript.setLocationURI( new URI(projectURI.toURL().toString()+"/AS")); + }else{ + descript.setLocationURI( new URI((ResourcesPlugin.getWorkspace().getRoot().getLocation().toString()+"/"+projectHandle.getName()+"/AS").replace(" ", "%20"))); + } + + IProject proj = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName+"_AS"); + if(proj==null){ + throw new Exception("proj null"); + } + monitor.beginTask("", 2000); + proj.create(descript, new SubProgressMonitor(monitor, 1000)); + if (monitor.isCanceled()) throw new OperationCanceledException(); + proj.open(IResource.BACKGROUND_REFRESH, new SubProgressMonitor(monitor, 1000)); + + createASProject(projectName, packageName, monitor, (IContainer) proj,AirSDKLocation); + } + catch (Exception ioe) + { + IStatus status = new Status(IStatus.ERROR, "NewFileWizard", IStatus.OK, + ioe.toString(), null); + throw new CoreException(status); + } + finally + { + monitor.done(); + } + } + }); + } + catch (InterruptedException e) + { + return false; + } + catch (InvocationTargetException e) + { + Throwable realException = e.getTargetException(); + MessageDialog.openError(getShell(), "Error", realException.getMessage()); + return false; + } catch (Exception e1) { + MessageDialog.openError(getShell(), "Error", e1.toString()); + return false; + } + + project = projectHandle; + + if (project == null) return false; + + BasicNewProjectResourceWizard.updatePerspective(config); + BasicNewProjectResourceWizard.selectAndReveal(project, workbench.getActiveWorkbenchWindow()); + + return true; + } + + void createASProject(String projectName,String packageName, IProgressMonitor monitor, IContainer container,String AirSDKLocation) throws CoreException, IOException{ + + + createFolder("src", container, monitor); + createFolder("bin", container, monitor); + createFolder("libs", container, monitor); + + String fullPackageString = "src"; + //Create folders if package not empty + if(packageName!=null && !packageName.isEmpty()){ + String[] packages = packageName.split("\\."); + + for (String packageElement : packages) { + fullPackageString+="/"+packageElement; + createFolder(fullPackageString, container, monitor); + } + } + copyFile(".project", ".project", projectName,packageName,AirSDKLocation, container, monitor); + copyFile(".actionScriptProperties", ".actionScriptProperties", projectName,packageName,AirSDKLocation, container, monitor); + copyFile(".flexLibProperties", ".flexLibProperties", projectName,packageName,AirSDKLocation, container, monitor); + + + copyFile("Main.as", fullPackageString+"/"+ projectName + ".as", projectName,packageName,AirSDKLocation, container, monitor); + } + + /** + * This creates the project in the workspace. + * + * @param description + * @param projectHandle + * @param monitor + * @throws CoreException + * @throws OperationCanceledException + */ + void createProject(IProjectDescription description, IProject proj, IProgressMonitor monitor,String AirSDKLocation ,String packageName) throws CoreException, OperationCanceledException + { + try + { + monitor.beginTask("", 2000); + + + proj.create(description, new SubProgressMonitor(monitor, 1000)); + + if (monitor.isCanceled()) throw new OperationCanceledException(); + + proj.open(IResource.BACKGROUND_REFRESH, new SubProgressMonitor(monitor, 1000)); + + /* + * Okay, now we have the project and we can do more things with it + * before updating the perspective. + */ + IContainer container = (IContainer) proj; + + // Create folders + createFolder("AS", container, monitor); + createFolder("NativeAndroid", container, monitor); + createFolder("NativeIOS", container, monitor); + + + // Copy files + String projectName = description.getName(); + copyFile("build.properties.resources", "build.properties", projectName,packageName,AirSDKLocation, container, monitor); + copyFile("build.xml.resources", "build.xml", projectName,packageName,AirSDKLocation, container, monitor); + copyFile("extension.xml", "extension.xml", projectName,packageName,AirSDKLocation, container, monitor); + + try{ + description.setName(projectName+"_AS"); + + description.setLocation(new Path(container.getProjectRelativePath()+"/AS")); + proj.create(description, new SubProgressMonitor(monitor, 1000)); + }catch(Exception e){ + System.out.println(e.toString()); + } + } + catch (IOException ioe) + { + IStatus status = new Status(IStatus.ERROR, "NewFileWizard", IStatus.OK, + ioe.toString(), null); + throw new CoreException(status); + } + finally + { + monitor.done(); + } + } + + private void createFolder(String path, IContainer container, IProgressMonitor monitor) throws CoreException + { + final IFolder folder = container.getFolder(new Path(path)); + folder.create(true, true, monitor); + } + + private void copyFile(String resourceName, String finalPath, String projectName,String packageName, String AirSDKLocation, IContainer container, IProgressMonitor monitor) throws IOException, CoreException + { + InputStream resourceStream = openFilteredResource(resourceName, projectName,packageName,AirSDKLocation); + addFileToProject(container, new Path(finalPath), resourceStream, monitor); + resourceStream.close(); + } + + /** + * Adds a new file to the project. + * + * @param container + * @param path + * @param contentStream + * @param monitor + * @throws CoreException + */ + private void addFileToProject(IContainer container, Path path, InputStream contentStream, IProgressMonitor monitor) throws CoreException + { + final IFile file = container.getFile(path); + + if (file.exists()) + { + file.setContents(contentStream, true, true, monitor); + } + else + { + file.create(contentStream, true, monitor); + } + + } + + private InputStream openFilteredResource(String resourceName, String projectName, String packageName,String AirSDKLocation) throws CoreException + { + final String newline = "\n"; + String line; + StringBuffer sb = new StringBuffer(); + try + { + InputStream input = this.getClass().getResourceAsStream("resources/" + resourceName); + BufferedReader reader = new BufferedReader(new InputStreamReader(input)); + try { + + while ((line = reader.readLine()) != null) { + if(packageName!=null && !packageName.isEmpty()) + line = line.replaceAll("\\$\\{MYPACKAGE_NAME\\}", packageName); + else{ + line = line.replaceAll("\\$\\{MYPACKAGE_NAME\\}", ""); + } + line = line.replaceAll("\\$\\{MYAIR_SDK_PATH\\}", AirSDKLocation); + line = line.replaceAll("\\$\\{MYPROJECT_NAME\\}", projectName); + sb.append(line); + sb.append(newline); + } + + } finally { + reader.close(); + } + + } + catch (IOException ioe) + { + IStatus status = new Status(IStatus.ERROR, "ExampleWizard", IStatus.OK, ioe.getLocalizedMessage(), null); + throw new CoreException(status); + } + + return new ByteArrayInputStream(sb.toString().getBytes()); + } + + /** + * We will accept the selection in the workbench to see if + * we can initialize from it. + * @see IWorkbenchWizard#init(IWorkbench, IStructuredSelection) + */ + public void init(IWorkbench workbench, IStructuredSelection selection) + { + this.workbench = workbench; + this.selection = selection; + } + + /** + * Sets the initialization data for the wizard. + */ + public void setInitializationData(IConfigurationElement config, + String propertyName, Object data) throws CoreException + { + this.config = config; + } +} \ No newline at end of file diff --git a/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectWithAirSDKLocationPage.java b/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectWithAirSDKLocationPage.java new file mode 100644 index 0000000..b57890b --- /dev/null +++ b/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/WizardNewProjectWithAirSDKLocationPage.java @@ -0,0 +1,601 @@ +package pl.mateuszmackowiak.ane.wizard.android; + + +import java.io.File; +import java.net.URI; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IWorkspace; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Path; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.VerifyEvent; +import org.eclipse.swt.events.VerifyListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Listener; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.IWorkingSet; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.dialogs.WorkingSetGroup; +import org.eclipse.ui.internal.ide.IDEWorkbenchMessages; +import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin; +import org.eclipse.ui.internal.ide.IIDEHelpContextIds; +import org.eclipse.ui.internal.ide.dialogs.ProjectContentsLocationArea; +import org.eclipse.ui.internal.ide.dialogs.ProjectContentsLocationArea.IErrorMessageReporter; + + +/** + * + * @author Mateusz Mackowiak + * + */ +public class WizardNewProjectWithAirSDKLocationPage extends WizardPage { + + public static boolean isMac(){ + return System.getProperty("os.name").toLowerCase().indexOf("mac") >= 0; + } + public static boolean isWindows(){ + return System.getProperty("os.name").toLowerCase().indexOf("win") >= 0; + } + + // initial value stores + private String initialProjectFieldValue; + private String initialPackageFieldValue; + + // widgets + Text projectNameField; + Text sdkLocationField; + Text packageNameField; + + private Listener sdkLocatioModifyListener = new Listener() { + + @Override + public void handleEvent(Event event) { + boolean valid = validatePage(); + setPageComplete(valid); + } + }; + private Listener packageModifyListener = new Listener() { + + @Override + public void handleEvent(Event event) { + boolean valid = validatePage(); + setPageComplete(valid); + } + }; + private Listener nameModifyListener = new Listener() { + public void handleEvent(Event e) { + setLocationForSelection(); + boolean valid = validatePage(); + setPageComplete(valid); + + } + }; + + private ProjectContentsLocationArea locationArea; + + + private WorkingSetGroup workingSetGroup; + + // constants + private static final int SIZING_TEXT_FIELD_WIDTH = 250; + + /** + * Creates a new project creation wizard page. + * + * @param pageName the name of this page + */ + public WizardNewProjectWithAirSDKLocationPage(String pageName){ + super(pageName); + setPageComplete(false); + } + + public String getSDKLocationName(){ + return getSDKLocationValue(); + } + + + /** (non-Javadoc) + * Method declared on IDialogPage. + */ + public void createControl(Composite parent) { + Composite composite = new Composite(parent, SWT.NULL); + + + initializeDialogUnits(parent); + + PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, + IIDEHelpContextIds.NEW_PROJECT_WIZARD_PAGE); + + composite.setLayout(new GridLayout()); + composite.setLayoutData(new GridData(GridData.FILL_BOTH)); + + createProjectNameGroup(composite); + locationArea = new ProjectContentsLocationArea(getErrorReporter(), composite); + if(initialProjectFieldValue != null) { + locationArea.updateProjectName(initialProjectFieldValue); + } + + // Scale the button based on the rest of the dialog + setButtonLayoutData(locationArea.getBrowseButton()); + + setPageComplete(validatePage()); + // Show description on opening + setErrorMessage(null); + setMessage(null); + setControl(composite); + Dialog.applyDialogFont(composite); + } + + /** + * Create a working set group for this page. This method can only be called + * once. + * + * @param composite + * the composite in which to create the group + * @param selection + * the current workbench selection + * @param supportedWorkingSetTypes + * an array of working set type IDs that will restrict what types + * of working sets can be chosen in this group + * @return the created group. If this method has been called previously the + * original group will be returned. + * @since 3.4 + */ + public WorkingSetGroup createWorkingSetGroup(Composite composite, + IStructuredSelection selection, String[] supportedWorkingSetTypes) { + if (workingSetGroup != null) + return workingSetGroup; + workingSetGroup = new WorkingSetGroup(composite, selection, + supportedWorkingSetTypes); + return workingSetGroup; + } + + + /** + * Get an error reporter for the receiver. + * @return IErrorMessageReporter + */ + private IErrorMessageReporter getErrorReporter() { + return new IErrorMessageReporter(){ + /* (non-Javadoc) + * @see org.eclipse.ui.internal.ide.dialogs.ProjectContentsLocationArea.IErrorMessageReporter#reportError(java.lang.String) + */ + public void reportError(String errorMessage, boolean infoOnly) { + if (infoOnly) { + setMessage(errorMessage, IStatus.INFO); + setErrorMessage(null); + } + else + setErrorMessage(errorMessage); + boolean valid = errorMessage == null; + if(valid) { + valid = validatePage(); + } + + setPageComplete(valid); + } + }; + } + + /** + * Creates the project name specification controls. + * + * @param parent the parent composite + */ + private final void createProjectNameGroup(Composite parent) { + // project specification group + Composite projectGroup = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.numColumns = 2; + projectGroup.setLayout(layout); + projectGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + // new project label + Label projectLabel = new Label(projectGroup, SWT.NONE); + projectLabel.setText(IDEWorkbenchMessages.WizardNewProjectCreationPage_nameLabel); + projectLabel.setFont(parent.getFont()); + + // new project name entry field + projectNameField = new Text(projectGroup, SWT.BORDER); + GridData data = new GridData(GridData.FILL_HORIZONTAL); + data.widthHint = SIZING_TEXT_FIELD_WIDTH; + projectNameField.setLayoutData(data); + projectNameField.setFont(parent.getFont()); + + + + + //package lablel + Label packageNameLabel = new Label(projectGroup, SWT.NONE); + packageNameLabel.setText("Main package name"); + packageNameLabel.setFont(parent.getFont()); + + //package name input field + packageNameField = new Text(projectGroup, SWT.BORDER); + packageNameField.setFont(parent.getFont()); + data = new GridData(GridData.FILL_HORIZONTAL); + data.widthHint = SIZING_TEXT_FIELD_WIDTH; + packageNameField.setLayoutData(data); + + if(initialPackageFieldValue!=null){ + packageNameField.setText(initialPackageFieldValue); + } + packageNameField.addListener(SWT.Modify, packageModifyListener); + + + //sdk location + Label sdkLocationLabel = new Label(projectGroup, SWT.NONE); + sdkLocationLabel.setText("AIR SDK Location"); + sdkLocationLabel.setFont(parent.getFont()); + + //package name input field + sdkLocationField = new Text(projectGroup, SWT.BORDER); + sdkLocationField.setFont(parent.getFont()); + data = new GridData(GridData.FILL_HORIZONTAL); + data.widthHint = SIZING_TEXT_FIELD_WIDTH; + sdkLocationField.setLayoutData(data); + sdkLocationField.setText(getDefaultSDKPath()); + + sdkLocationField.addListener(SWT.Modify, sdkLocatioModifyListener); + + // Set the initial value first before listener + // to avoid handling an event during the creation. + if (initialProjectFieldValue != null) { + projectNameField.setText(initialProjectFieldValue); + } + projectNameField.addListener(SWT.Modify, nameModifyListener); + } + + public final static String aneAIRSDKPathKey = "ANE-Wizard-MainProject.airSdkPath"; + public static String getDefaultSDKPath(){ + //if has remembered get it else try to find + String path = System.getProperty(aneAIRSDKPathKey); + if(path==null || path.isEmpty()){ + /*String programName = System.getProperty("program.name"); + if(programName==null || programName.isEmpty() || !programName.toLowerCase().contains("flash")){*/ + File dir; + if(isMac()){ + dir = new File("/Applications"); + return searchForSDKinDirectory(dir); + }else{ + dir = new File("C:/Program Files"); + if(dir.exists()){ + return searchForSDKinDirectory(dir); + } + } + /*}else{ + + }*/ + + } + return path; + } + public static boolean isValidSDKPath(String path){ + if(path==null || path.isEmpty()){ + return false; + } + File dir = new File(path+"/lib/adt.jar"); + if(dir!=null && dir.exists()){ + return true; + } + return false; + } + private static String searchForSDKinDirectory(File dir){ + if (dir!=null && dir.exists()) + { + File listDir[] = dir.listFiles(); + for (int i = 0; i < listDir.length; i++) { + File dir2 = listDir[i]; + if (dir2.isDirectory()) { + if(dir2.getName().toLowerCase().contains("flash builder")){ + File listDir2[] = dir2.listFiles(); + for (int j = 0; j < listDir2.length; j++) { + File dir1 = listDir2[j]; + if (dir1.isDirectory()) { + if(dir1.getName().toLowerCase().contains("sdks")){ + File listDir3[] = dir1.listFiles(); + for (int k = 0; k < listDir3.length; k++) { + File dir3 = listDir3[k]; + if (dir3.isDirectory()) { + String path = dir3.getAbsolutePath(); + if(isValidSDKPath(path)){ + //System.setProperty(aneAIRSDKPathKey, path); + try{ + System.setProperty(WizardNewProjectWithAirSDKLocationPage.aneAIRSDKPathKey, path); + }catch(Exception e){} + return path; + } + } + } + } + } + } + } + } + } + } + return ""; + } + /** + * Returns the current project location path as entered by + * the user, or its anticipated initial value. + * Note that if the default has been returned the path + * in a project description used to create a project + * should not be set. + * + * @return the project location path or its anticipated initial value. + */ + public IPath getLocationPath() { + return new Path(locationArea.getProjectLocation()); + } + + /** + /** + * Returns the current project location URI as entered by + * the user, or null if a valid project location + * has not been entered. + * + * @return the project location URI, or null + * @since 3.2 + */ + public URI getLocationURI() { + return locationArea.getProjectLocationURI(); + } + + /** + * Creates a project resource handle for the current project name field + * value. The project handle is created relative to the workspace root. + *

+ * This method does not create the project resource; this is the + * responsibility of IProject::create invoked by the new + * project resource wizard. + *

+ * + * @return the new project resource handle + */ + public IProject getProjectHandle() { + return ResourcesPlugin.getWorkspace().getRoot().getProject( + getProjectName()); + } + + /** + * Returns the current project name as entered by the user, or its anticipated + * initial value. + * + * @return the project name, its anticipated initial value, or null + * if no project name is known + */ + public String getProjectName() { + if (projectNameField == null) { + return initialProjectFieldValue; + } + + return getProjectNameFieldValue(); + } + + /** + * Returns the value of the project package name field + * with leading and trailing spaces removed. + * + * @return the project name in the field + */ + private String getPackageNameFieldValue(){ + if(packageNameField==null){ + return ""; + } + return packageNameField.getText().trim(); + } + + public void setInitialPackageName(String name) { + if (name == null) { + initialPackageFieldValue = null; + } else { + initialPackageFieldValue = name.trim(); + } + if(packageNameField!=null){ + if(initialPackageFieldValue!=null){ + packageNameField.setText(initialPackageFieldValue); + } + else{ + packageNameField.setText(""); + } + } + } + /** + * Returns the value of the project package name field + * with leading and trailing spaces removed. + * + * @return the project name in the field + */ + public String getPackageName(){ + return getPackageNameFieldValue(); + } + + private String getSDKLocationValue(){ + if(sdkLocationField==null){ + return ""; + } + return sdkLocationField.getText().trim(); + } + + + /** + * Returns the value of the project name field + * with leading and trailing spaces removed. + * + * @return the project name in the field + */ + private String getProjectNameFieldValue() { + if (projectNameField == null) { + return ""; //$NON-NLS-1$ + } + + return projectNameField.getText().trim(); + } + + /** + * Sets the initial project name that this page will use when + * created. The name is ignored if the createControl(Composite) + * method has already been called. Leading and trailing spaces + * in the name are ignored. + * Providing the name of an existing project will not necessarily + * cause the wizard to warn the user. Callers of this method + * should first check if the project name passed already exists + * in the workspace. + * + * @param name initial project name for this page + * + * @see IWorkspace#validateName(String, int) + * + */ + public void setInitialProjectName(String name) { + if (name == null) { + initialProjectFieldValue = null; + } else { + initialProjectFieldValue = name.trim(); + if(locationArea != null) { + locationArea.updateProjectName(name.trim()); + } + } + } + + /** + * Set the location to the default location if we are set to useDefaults. + */ + void setLocationForSelection() { + locationArea.updateProjectName(getProjectNameFieldValue()); + } + + + /** + * Returns whether this page's controls currently all contain valid + * values. + * + * @return true if all controls are valid, and + * false if at least one is invalid + */ + protected boolean validatePage() { + IWorkspace workspace = IDEWorkbenchPlugin.getPluginWorkspace(); + + + String packageNameContents = getPackageNameFieldValue(); + if(packageNameContents==null || packageNameContents.equals("")){ + setErrorMessage("Package name cannot be empty!"); + setMessage("Package name cannot be empty!"); + return false; + } + if(packageNameContents.endsWith(".") || packageNameContents.startsWith(".")){ + setErrorMessage("Package name cannot start or begin with a '.' character"); + setMessage("Package name cannot start or begin with a '.' character!"); + return false; + } + boolean lastWasDot = true; + for (int i = 0; i < packageNameContents.length(); i++) { + char m = packageNameContents.charAt(i);//i; + + if(!(Character.isLetter(m) || (!lastWasDot && Character.isDigit(m)) || m=='.' || m=='_')){ + setErrorMessage("Package name is not valid! Use only Letters, numbers '.' or '_'"); + setMessage("Package name is not valid!"); + return false; + }else if (lastWasDot && Character.isDigit(m)){ + setErrorMessage("Package name cannot start with a number is not valid!"); + setMessage("Package name cannot start with a number is not validd!"); + return false; + } + if(m=='.'){ + lastWasDot = true; + }else{ + lastWasDot = false; + } + } + + + + String sdkLocationContents = getSDKLocationValue(); + if (sdkLocationContents.equals("")) { //$NON-NLS-1$ + setErrorMessage(null); + setMessage("Must setup SDK Location"); + return false; + } + + if(!isValidSDKPath(sdkLocationContents)){ + setErrorMessage("Path to sdk not valid!"); + setMessage("Path to sdk not valid!"); + return false; + } + String projectFieldContents = getProjectNameFieldValue(); + if (projectFieldContents.equals("")) { //$NON-NLS-1$ + setErrorMessage(null); + setMessage(IDEWorkbenchMessages.WizardNewProjectCreationPage_projectNameEmpty); + return false; + } + + IStatus nameStatus = workspace.validateName(projectFieldContents, + IResource.PROJECT); + if (!nameStatus.isOK()) { + setErrorMessage(nameStatus.getMessage()); + return false; + } + + IProject handle = getProjectHandle(); + if (handle.exists()) { + setErrorMessage(IDEWorkbenchMessages.WizardNewProjectCreationPage_projectExistsMessage); + return false; + } + + IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject( + getProjectNameFieldValue()); + locationArea.setExistingProject(project); + + String validLocationMessage = locationArea.checkValidLocation(); + if (validLocationMessage != null) { // there is no destination location given + setErrorMessage(validLocationMessage); + return false; + } + + setErrorMessage(null); + setMessage(null); + return true; + } + + /* + * see @DialogPage.setVisible(boolean) + */ + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + projectNameField.setFocus(); + } + } + + /** + * Returns the useDefaults. + * @return boolean + */ + public boolean useDefaults() { + return locationArea.isDefault(); + } + + /** + * Return the selected working sets, if any. If this page is not configured + * to interact with working sets this will be an empty array. + * + * @return the selected working sets + * @since 3.4 + */ + public IWorkingSet[] getSelectedWorkingSets() { + return workingSetGroup == null ? new IWorkingSet[0] : workingSetGroup + .getSelectedWorkingSets(); + } +} diff --git a/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/.actionScriptProperties b/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/.actionScriptProperties new file mode 100644 index 0000000..a52ae70 --- /dev/null +++ b/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/.actionScriptProperties @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/.flexLibProperties b/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/.flexLibProperties new file mode 100644 index 0000000..96dcc51 --- /dev/null +++ b/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/.flexLibProperties @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/.project b/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/.project new file mode 100644 index 0000000..5b33224 --- /dev/null +++ b/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/.project @@ -0,0 +1,18 @@ + + + ${MYPROJECT_NAME} + + + + + + com.adobe.flexbuilder.project.flexbuilder + + + + + + com.adobe.flexbuilder.project.flexlibnature + com.adobe.flexbuilder.project.actionscriptnature + + diff --git a/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/Main.as b/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/Main.as new file mode 100644 index 0000000..bca65e5 --- /dev/null +++ b/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/Main.as @@ -0,0 +1,62 @@ +package ${MYPACKAGE_NAME} +{ + import flash.events.EventDispatcher; + import flash.events.StatusEvent; + import flash.external.ExtensionContext; + + public class ${MYPROJECT_NAME} extends EventDispatcher + { + private static var _instance:${MYPROJECT_NAME}; + + private var extCtx:ExtensionContext = null; + + public function ${MYPROJECT_NAME}() + { + if (!_instance) + { + extCtx = ExtensionContext.createExtensionContext("${MYPACKAGE_NAME}.${MYPROJECT_NAME}", null); + if (extCtx != null) + { + extCtx.addEventListener(StatusEvent.STATUS, onStatus); + } + else + { + trace('[${MYPROJECT_NAME}] Error - Extension Context is null.'); + } + _instance = this; + } + else + { + throw Error('This is a singleton, use getInstance(), do not call the constructor directly.'); + } + } + + public static function getInstance() : ${MYPROJECT_NAME} + { + return _instance ? _instance : new ${MYPROJECT_NAME}(); + } + + + /** + * Example function. + * Define your own API and use extCtx.call() to communicate with the native part of the ANE. + */ + public function isSupported() : Boolean + { + return extCtx.call('isSupported'); + } + + + /** + * Status events allow the native part of the ANE to communicate with the ActionScript part. + * We use event.code to represent the type of event, and event.level to carry the data. + */ + private function onStatus( event : StatusEvent ) : void + { + if (event.code == "LOGGING") + { + trace('[${MYPROJECT_NAME}] ' + event.level); + } + } + } +} \ No newline at end of file diff --git a/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/build.properties.resources b/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/build.properties.resources new file mode 100644 index 0000000..8e03d22 --- /dev/null +++ b/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/build.properties.resources @@ -0,0 +1,26 @@ +AIR_SDK_PATH = ${MYAIR_SDK_PATH} +PROJECT_NAME = ${MYPROJECT_NAME} + +FRE.JAR = ${AIR_SDK_PATH}/lib/android/FlashRuntimeExtensions.jar +ADT.JAR = ${AIR_SDK_PATH}/lib/adt.jar + +BINARIES_FOLDER = Binaries +ACTIONSCRIPT_FOLDER = AS +IOS_FOLDER = NativeIOS/${PROJECT_NAME} +ANDROID_FOLDER = NativeAndroid + +ANE_PATH = ${BINARIES_FOLDER}/${PROJECT_NAME}.ane + +SWC_PATH = ${ACTIONSCRIPT_FOLDER}/bin/${PROJECT_NAME}.swc +EXTENSION.XML = extension.xml + +IOS_PLATFORM_OPTIONS = ${IOS_FOLDER}/${PROJECT_NAME}/platformoptions.xml +IOS_PROJECT_PATH = ${IOS_FOLDER}/${PROJECT_NAME}.xcodeproj +IOS_LIB_PATH = ${IOS_FOLDER}/build/Release-iphoneos/lib${PROJECT_NAME}.a + +ANDROID_BUILD_FOLDER = ${ANDROID_FOLDER}/build +ANDROID_BIN_FOLDER = ${ANDROID_FOLDER}/bin +ANDROID_GEN_FOLDER = ${ANDROID_FOLDER}/gen +ANDROID_SRC_FOLDER = ${ANDROID_FOLDER}/src +ANDROID_LIBS_FOLDER = ${ANDROID_FOLDER}/libs +ANDROID_LIB_PATH = ${ANDROID_BUILD_FOLDER}/lib${PROJECT_NAME}.jar \ No newline at end of file diff --git a/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/build.xml.resources b/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/build.xml.resources new file mode 100644 index 0000000..94591fe --- /dev/null +++ b/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/build.xml.resources @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/extension.xml b/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/extension.xml new file mode 100755 index 0000000..3393490 --- /dev/null +++ b/ANE-Wizard-MainProject/src/pl/mateuszmackowiak/ane/wizard/android/resources/extension.xml @@ -0,0 +1,24 @@ + + ${MYPACKAGE_NAME}.${MYPROJECT_NAME} + 1 + + + + lib${MYPROJECT_NAME}.a + ${MYPROJECT_NAME}ExtInitializer + ${MYPROJECT_NAME}ExtFinalizer + + + + + lib${MYPROJECT_NAME}.jar + ${MYPROJECT_NAME}.${MYPROJECT_NAME}.${MYPROJECT_NAME}Extension + ${MYPROJECT_NAME}.${MYPROJECT_NAME}.${MYPROJECT_NAME}Extension + + + + + + + + \ No newline at end of file diff --git a/ANE-Wizards-MainProject.jar b/ANE-Wizards-MainProject.jar new file mode 100644 index 0000000000000000000000000000000000000000..d5982688da511701b5bdec063bcb9a9b23e1291d GIT binary patch literal 25230 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

;3Ctt#ZV2JPo0VbYK$3it8i5hTiOpu^uO3;A)8 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 LUE))_{LlXbo81@r literal 0 HcmV?d00001 diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 4947287..0000000 --- a/LICENSE +++ /dev/null @@ -1,177 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/NOTICE b/NOTICE deleted file mode 100644 index 7a02b61..0000000 --- a/NOTICE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright 2012 Freshplanet (http://freshplanet.com | opensource@freshplanet.com) - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. \ No newline at end of file diff --git a/README.md b/README.md index 228857b..b8f7d4f 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,10 @@ # ANE-Wizard # *** -#####This is a fork of repo by [freshplanet](https://github.com/freshplanet/ANE-Wizard) with some CHANGES. -#####Now an input for the extension package. +#####This is a extended version of a repo by [freshplanet](https://github.com/freshplanet/ANE-Wizard). + *** - - - - - +**ANE-Wizard** This wizard is a set of tools to help Air Mobile developers build ANE (Air Native Extensions) faster. @@ -16,38 +12,33 @@ This wizard is a set of tools to help Air Mobile developers build ANE (Air Nativ The wizard is composed of 4 tools: -- a Python script that will create the appropriate folders hierarchy for your ANE, and setup an Ant script to let you compile the ANE quickly - an updated version of Divij Kumar's Xcode template (https://github.com/divijkumar/xcode-template-ane) that let you quickly setup the iOS part of your ANE - an Eclipse "New ANE Project" wizard that let you quickly setup the Android part of your ANE -- a Flash Builder "New ANE Project" wizard that let you quickly setup the Actionscript part of your ANE +- a Flash Builder "New ANE Main Project" wizard that let you quickly setup two projects with a correct folders, the build script for the ANE and a second Actionscript project for the ANE +- a Flash Builder "New ANE Project" wizard that let you quickly setup the Actionscript part of your ANE +- **Installation** Note: the path below might change depending on your system. I assume you are on OSX. 1. Unzip _ANE-Wizard-Xcode.zip_ in the following directory: _~/Library/Developer/Xcode/Templates/Project Templates_ (then restart Xcode) -2. Copy _ANE-Wizard-Eclipse.jar_ in the following directory: _/Applications/eclipse/plugins_ (then restart Eclipse) -3. Copy _ANE-Wizard-FlashBuilder.jar_ in the following directory: _/Applications/Adobe Flash Builder 4.6/eclipse/plugins_ (then restart Flash Builder) +2. Copy _ANE-Wizard-Eclipse.jar_ in the eclipse directory: _/Applications/eclipse/plugins_ (then restart Eclipse) +3. Copy _ANE-Wizard-FlashBuilder.jar_ and _ANE-Wizard-MainProject.jar_ in the adobe Flash builder directory: _/Applications/Adobe Flash Builder 4.6/eclipse/plugins_ (then restart Flash Builder) + **Creating a new ANE** Let's say you want to create an extension named MyExtension at the path ~/Projects/MyExtension -1. In the Terminal, go to the ANE-Wizard folder. -2. Run _./newANE.py MyExtension ~/Projects/MyExtensions_ (at this point you should see new folders at ~/Projects/MyExtension) -3. Create a new Xcode project: File -> New -> Project -> Air Native Extension -> Air Native Extension for iOS. When prompted to choose a folder, choose ~/Projects/MyExtension/NativeIOS -4. Create a new Eclipse project: File -> New -> Project -> Air Native Extension (ANE) -> ANE Project. When prompted to choose a folder, choose ~/Projects/MyExtension/NativeAndroid -5. Create a new Flash Builder project: File -> New -> Project -> Air Native Extension (ANE) -> ANE Project. When prompted to choose a folder, choose ~/Projects/MyExtension/AS -6. In the Terminal, go to ~/Projects/MyExtension. -7. Run _ant_ (at this point your ANE is at ~/Projects/MyExtension/Binaries/MyExtension.ane) +1. Create a new Flash builder Main Project: File -> New -> Air Native Extension (ANE) -> ANE Main Project. When promped specyfy the Air sdk path and path of the project +2. Create a new Xcode project: File -> New -> Project -> Air Native Extension -> Air Native Extension for iOS. When prompted to choose a folder, choose ~/Projects/MyExtension/NativeIOS +3. Create a new Eclipse project: File -> New -> Project -> Air Native Extension (ANE) -> ANE Project. When prompted to choose a folder, choose ~/Projects/MyExtension/NativeAndroid +4. Run _ant_ (at this point your ANE is at ~/Projects/MyExtension/Binaries/MyExtension.ane) **Work in progress** -This wizard is a work in progress. We use it at FreshPlanet to speed up the development of our own ANEs and thought it might be useful to other developers. We haven't taken the time to make it -completely independent, so you might want to update some of the auto-generated files. - -For example, the Eclipse and Flash Builder wizards use the com.freshplanet.ane package. You might want to replace it with your own. Also, the _build.properties_ and _NativeAndroid/.classpath_ -files link to a Air SDK path that might be different on your machine. +This wizard is a work in progress. FreshPlanet was using it to speed up the development of thair own ANEs and I thought it might be useful to other developers to evolve it a little. **Problems / Feedback** @@ -57,4 +48,4 @@ If you need more information about ANEs, we recommand you read the following art - http://www.adobe.com/devnet/air/native-extensions-for-air.html - http://www.adobe.com/devnet/air/articles/transferring-data-ane-ios-pt1.html -- http://www.adobe.com/devnet/air/articles/extending-air.html +- http://www.adobe.com/devnet/air/articles/extending-air.html \ No newline at end of file diff --git a/newANE.py b/newANE.py deleted file mode 100755 index 251a3e9..0000000 --- a/newANE.py +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/python -import sys, os, shutil - -def createANE(name, path): - if not os.path.exists(path): os.makedirs(path) - - for folder in ["AS", "NativeIOS", "NativeAndroid"]: - subpath = os.path.join(path, folder) - if not os.path.exists(subpath): os.makedirs(subpath) - - buildProperties = "PROJECT_NAME = %s\n\n%s" % (name, open('resources/build.properties').read()) - buildPropertiesFile = open(os.path.join(path, "build.properties"), "w") - buildPropertiesFile.write(buildProperties) - buildPropertiesFile.close() - - shutil.copy('resources/build.xml', path) - - -def main(): - if len(sys.argv) < 3: - raise Exception("One argument (ANE name and path) expected!") - else: - createANE(sys.argv[1], sys.argv[2]) - - -if __name__ == "__main__": - main() \ No newline at end of file From 99c24b2ab87da07c4b75f793a9fb629ab9c0818b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Ma=C4=87kowiak?= Date: Thu, 10 Jan 2013 23:38:47 +0100 Subject: [PATCH 4/4] Update README.md --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b8f7d4f..e78b5f2 100644 --- a/README.md +++ b/README.md @@ -14,10 +14,9 @@ The wizard is composed of 4 tools: - an updated version of Divij Kumar's Xcode template (https://github.com/divijkumar/xcode-template-ane) that let you quickly setup the iOS part of your ANE - an Eclipse "New ANE Project" wizard that let you quickly setup the Android part of your ANE - - a Flash Builder "New ANE Main Project" wizard that let you quickly setup two projects with a correct folders, the build script for the ANE and a second Actionscript project for the ANE - a Flash Builder "New ANE Project" wizard that let you quickly setup the Actionscript part of your ANE -- + **Installation** Note: the path below might change depending on your system. I assume you are on OSX. @@ -48,4 +47,4 @@ If you need more information about ANEs, we recommand you read the following art - http://www.adobe.com/devnet/air/native-extensions-for-air.html - http://www.adobe.com/devnet/air/articles/transferring-data-ane-ios-pt1.html -- http://www.adobe.com/devnet/air/articles/extending-air.html \ No newline at end of file +- http://www.adobe.com/devnet/air/articles/extending-air.html