-/**\r
- * Common\r
- *\r
- * @since 2017. 2. 7.\r
- *\r
- * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.\r
- *\r
- * Contact:\r
- * Daeryong Park <bdragon.park@samsung.com>\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- *\r
- * Contributors:\r
- * - S-Core Co., Ltd\r
- *\r
- */\r
-\r
-package org.tizen.rt.ide;\r
-\r
-import org.eclipse.osgi.util.NLS;\r
-\r
-public class Messages extends NLS {\r
- private static final String BUNDLE_NAME = "org.tizen.rt.ide.messages"; //$NON-NLS-1$\r
-\r
- public static String NewArtikProjectWizard_CreateOperationLabel;\r
- public static String NewArtikProjectWizard_WindowTitle;\r
-\r
- public static String NewArtikProjectWizardPage_Description;\r
- public static String NewArtikProjectWizardPage_Title;\r
-\r
- public static String NewArtikProjectWizardPage2_Description;\r
- public static String NewArtikProjectWizardPage2_Title;\r
- public static String NewArtikProjectWizardPage2_LabelBoard;\r
- public static String NewArtikProjectWizardPage2_LabelBoardName;\r
- public static String NewArtikProjectWizardPage2_NameColumn;\r
-\r
- public static String RtosBuildDialogPage_BoardNameColumn;\r
- public static String RtosBuildDialogPage_Description;\r
- public static String RtosBuildDialogPage_KconfigErrorMessage;\r
- public static String RtosBuildDialogPage_KernelConfigButtonText;\r
- public static String RtosBuildDialogPage_OptionNameColumn;\r
- public static String RtosBuildDialogPage_Title;\r
- public static String RtosBuildDialogPage_ToolchainButtonText;\r
- public static String RtosBuildDialogPage_ToolchainDialogMessage;\r
-\r
- public static String RtosBuildWizard_WindowTitle;\r
-\r
- public static String RtosFlashDialogPage_Description;\r
- public static String RtosFlashDialogPage_OptionNameColumn;\r
- public static String RtosFlashDialogPage_Title;\r
-\r
- public static String RtosFlashWizard_WindowTitle;\r
-\r
- public static String FlashHandler_NotFoundBuildInfo;\r
-\r
- public static String LaunchShortcut_NotFoundBuildInfo;\r
- public static String RtosBuildDialogPage_text_text;\r
- public static String RtosBuildDialogPage_lblNewLabel_text;\r
- public static String RtosBuildDialogPage_clearToolchainBtn_text;\r
-\r
- public static String RtosNewRtAppWizard_WindowTitle;\r
-\r
- static {\r
- // initialize resource bundle\r
- NLS.initializeMessages(BUNDLE_NAME, Messages.class);\r
- }\r
-\r
- private Messages() {\r
- }\r
-}\r
+/**
+ * Common
+ *
+ * @since 2017. 2. 7.
+ *
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * Daeryong Park <bdragon.park@samsung.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.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+package org.tizen.rt.ide;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.tizen.rt.ide.messages"; //$NON-NLS-1$
+
+ public static String NewArtikProjectWizard_CreateOperationLabel;
+ public static String NewArtikProjectWizard_WindowTitle;
+
+ public static String NewArtikProjectWizardPage_Description;
+ public static String NewArtikProjectWizardPage_Title;
+
+ public static String NewArtikProjectWizardPage2_Description;
+ public static String NewArtikProjectWizardPage2_Title;
+ public static String NewArtikProjectWizardPage2_LabelBoard;
+ public static String NewArtikProjectWizardPage2_LabelBoardName;
+ public static String NewArtikProjectWizardPage2_NameColumn;
+
+ public static String RtosBuildDialogPage_BoardNameColumn;
+ public static String RtosBuildDialogPage_Description;
+ public static String RtosBuildDialogPage_KconfigErrorMessage;
+ public static String RtosBuildDialogPage_KernelConfigButtonText;
+ public static String RtosBuildDialogPage_OptionNameColumn;
+ public static String RtosBuildDialogPage_Title;
+ public static String RtosBuildDialogPage_ToolchainButtonText;
+ public static String RtosBuildDialogPage_ToolchainDialogMessage;
+
+ public static String RtosBuildWizard_WindowTitle;
+
+ public static String RtosFlashDialogPage_Description;
+ public static String RtosFlashDialogPage_OptionNameColumn;
+ public static String RtosFlashDialogPage_Title;
+
+ public static String RtosFlashWizard_WindowTitle;
+
+ public static String FlashHandler_NotFoundBuildInfo;
+
+ public static String LaunchShortcut_NotFoundBuildInfo;
+ public static String RtosBuildDialogPage_text_text;
+ public static String RtosBuildDialogPage_lblNewLabel_text;
+ public static String RtosBuildDialogPage_clearToolchainBtn_text;
+
+ public static String RtosNewRtAppWizard_WindowTitle;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
-/*\r
-* Common\r
-*\r
-* Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.\r
-*\r
-* Contact:\r
-* Jaemin Kim <jm.jemin.kim@samsung.com>\r
-* Gyeongmin Ju <gyeongmin.ju@samsung.com>\r
-* Daeryong Park <bdragon.park@samsung.com>\r
-* HyeongSeok Heo <harry.heo@samsung.com>\r
-*\r
-* Licensed under the Apache License, Version 2.0 (the "License");\r
-* you may not use this file except in compliance with the License.\r
-* You may obtain a copy of the License at\r
-*\r
-* http://www.apache.org/licenses/LICENSE-2.0\r
-*\r
-* Unless required by applicable law or agreed to in writing, software\r
-* distributed under the License is distributed on an "AS IS" BASIS,\r
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-* See the License for the specific language governing permissions and\r
-* limitations under the License.\r
-*\r
-* Contributors:\r
-* - S-Core Co., Ltd\r
-*\r
-*/\r
-\r
-package org.tizen.rt.ide.build;\r
-\r
-import java.io.File;\r
-import java.io.IOException;\r
-import java.util.List;\r
-\r
-import org.eclipse.jface.dialogs.MessageDialog;\r
-import org.eclipse.jface.viewers.ArrayContentProvider;\r
-import org.eclipse.jface.viewers.DoubleClickEvent;\r
-import org.eclipse.jface.viewers.IDoubleClickListener;\r
-import org.eclipse.jface.viewers.ISelectionChangedListener;\r
-import org.eclipse.jface.viewers.IStructuredSelection;\r
-import org.eclipse.jface.viewers.ITableLabelProvider;\r
-import org.eclipse.jface.viewers.LabelProvider;\r
-import org.eclipse.jface.viewers.SelectionChangedEvent;\r
-import org.eclipse.jface.viewers.TableViewer;\r
-import org.eclipse.jface.wizard.WizardPage;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.browser.Browser;\r
-import org.eclipse.swt.events.SelectionAdapter;\r
-import org.eclipse.swt.events.SelectionEvent;\r
-import org.eclipse.swt.events.SelectionListener;\r
-import org.eclipse.swt.graphics.Image;\r
-import org.eclipse.swt.layout.GridData;\r
-import org.eclipse.swt.layout.GridLayout;\r
-import org.eclipse.swt.layout.RowLayout;\r
-import org.eclipse.swt.widgets.Button;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.DirectoryDialog;\r
-import org.eclipse.swt.widgets.Display;\r
-import org.eclipse.swt.widgets.Label;\r
-import org.eclipse.swt.widgets.Shell;\r
-import org.eclipse.swt.widgets.Table;\r
-import org.eclipse.swt.widgets.TableColumn;\r
-import org.eclipse.swt.widgets.Text;\r
-import org.tizen.rt.ide.Messages;\r
-import org.tizen.rt.ide.RtosCommandManager;\r
-import org.tizen.rt.ide.util.ResourceUtil;\r
-\r
-/**\r
- * DeviceGuideDialogPage Select Emulator Wizard Feature\r
- * @author jm.jaemin.kim{@literal <jm.jaemin.kim>} (S-Core)\r
- */\r
-public class RtosBuildDialogPage extends WizardPage {\r
-\r
- public final static String DEFAULT_DESC_FILE = "index.html"; //$NON-NLS-1$\r
- public final static String DEFAULT_DESC_HTML_FORMAT = "<html><body><h2>%s</h2>App : %s</body></html>"; //$NON-NLS-1$\r
- public final static String[] KERNEL_CONFIG_CMD = new String[] { "gnome-terminal", "--command", "make menuconfig" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$\r
-\r
- private Shell shell;\r
- private Table buildOptionTable;\r
- private Table boardTable;\r
- private TableViewer boardTableViewer;\r
- private TableViewer buildOptionTableViewer;\r
- private Button selectToolchainBtn;\r
- private Button kernelConfigBtn;\r
- private Browser browser;\r
- private Text toolchainText;\r
- private Composite composite;\r
- private Label lblNewLabel;\r
- private Button clearToolchainBtn;\r
-\r
- protected RtosBuildDialogPage(String pageName, Shell shell) {\r
- super(pageName);\r
- this.shell = shell;\r
- setTitle(Messages.RtosBuildDialogPage_Title);\r
- setDescription(Messages.RtosBuildDialogPage_Description);\r
- setErrorMessage(null);\r
- }\r
-\r
- @Override\r
- public void createControl(Composite parentComposite) {\r
-\r
- List<String> boardList = RtosCommandManager.getBuildBoards();\r
-\r
- Composite container = new Composite(parentComposite, SWT.NONE);\r
- container.setLayoutData(new GridData(GridData.FILL_BOTH));\r
- container.setLayout(new GridLayout(1, true));\r
-\r
- Composite tableComposite = new Composite(container, SWT.NONE);\r
- tableComposite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));\r
- GridLayout layout = new GridLayout(2, true);\r
- layout.marginWidth = 0;\r
- layout.horizontalSpacing = 5;\r
- tableComposite.setLayout(layout);\r
-\r
- // Boards select table\r
- boardTableViewer = new TableViewer(tableComposite, SWT.BORDER | SWT.FULL_SELECTION);\r
-\r
- boardTable = boardTableViewer.getTable();\r
- boardTable.setLinesVisible(true);\r
- boardTable.setHeaderVisible(true);\r
- GridData gd = new GridData(GridData.FILL_BOTH);\r
- gd.minimumHeight = 180;\r
- boardTable.setLayoutData(gd);\r
-\r
- TableColumn boardNameColumn = new TableColumn(boardTable, SWT.NONE);\r
- boardNameColumn.setWidth(300);\r
- boardNameColumn.setText(Messages.RtosBuildDialogPage_BoardNameColumn);\r
-\r
- boardTableViewer.setLabelProvider(new TableViewerProvider_1());\r
- boardTableViewer.setContentProvider(new ArrayContentProvider());\r
- boardTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {\r
- @Override\r
- public void selectionChanged(SelectionChangedEvent event) {\r
- selectToolchainBtn.setEnabled(false);\r
- clearToolchainBtn.setEnabled(false);\r
- IStructuredSelection selection = (IStructuredSelection) event.getSelection();\r
- for (Object o : selection.toArray()) {\r
- String board = (String) o;\r
- RtosBuildWizardDialog.selectionBoard(board);\r
- // input buildOption list\r
- List<BuildOption> testList = RtosCommandManager.getBuildOptions(board);\r
- buildOptionTableViewer.setInput(testList);\r
- if (testList != null && !testList.isEmpty()) {\r
- boolean isActive = testList.get(0).getSetEnv();\r
- selectToolchainBtn.setEnabled(isActive);\r
- clearToolchainBtn.setEnabled(isActive);\r
- }\r
- }\r
- }\r
- });\r
- boardTableViewer.setInput(boardList);\r
-\r
- // Build option select table\r
- buildOptionTableViewer = new TableViewer(tableComposite, SWT.BORDER | SWT.FULL_SELECTION);\r
-\r
- buildOptionTable = buildOptionTableViewer.getTable();\r
- buildOptionTable.setHeaderVisible(true);\r
- buildOptionTable.setLinesVisible(true);\r
- gd = new GridData(GridData.FILL_BOTH);\r
- gd.minimumHeight = 180;\r
- buildOptionTable.setLayoutData(gd);\r
-\r
- TableColumn optionNameColumn = new TableColumn(buildOptionTable, SWT.NONE);\r
- optionNameColumn.setWidth(300);\r
- optionNameColumn.setText(Messages.RtosBuildDialogPage_OptionNameColumn);\r
-\r
- buildOptionTableViewer.setLabelProvider(new TableViewerProvider());\r
- buildOptionTableViewer.setContentProvider(new ArrayContentProvider());\r
- buildOptionTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {\r
- @Override\r
- public void selectionChanged(SelectionChangedEvent event) {\r
- IStructuredSelection selection = (IStructuredSelection) event.getSelection();\r
- if (selection.isEmpty()) {\r
- browser.setText(""); //$NON-NLS-1$\r
- kernelConfigBtn.setEnabled(false);\r
- setPageComplete(false);\r
- } else {\r
- for (Object o : selection.toArray()) {\r
- BuildOption bOption = (BuildOption) o;\r
- RtosBuildWizardDialog.selectionOption(bOption);\r
- File desc = new File(bOption.getPath(), DEFAULT_DESC_FILE);\r
- if (desc.exists()) {\r
- browser.setUrl(desc.toURI().toString());\r
- } else {\r
- browser.setText(String.format(DEFAULT_DESC_HTML_FORMAT, bOption.getBoard(), bOption.getBuildOption()));\r
- }\r
- kernelConfigBtn.setEnabled(true);\r
- setPageComplete(true);\r
- }\r
- }\r
- }\r
- });\r
- buildOptionTableViewer.addDoubleClickListener(new IDoubleClickListener() {\r
- @Override\r
- public void doubleClick(DoubleClickEvent arg0) {\r
- RtosBuildWizard wizard = (RtosBuildWizard) getWizard();\r
- RtosBuildWizardDialog dialog = (RtosBuildWizardDialog) wizard.getContainer();\r
- dialog.PressedFinished();\r
- }\r
- });\r
-\r
- // Description area\r
- Composite descComposite = new Composite(container, SWT.BORDER);\r
- descComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 2));\r
- GridLayout browserLayout = new GridLayout(1, true);\r
- browserLayout.marginHeight = 0;\r
- browserLayout.marginWidth = 0;\r
- descComposite.setLayout(browserLayout);\r
-\r
- browser = new Browser(descComposite, SWT.NONE);\r
- browser.setJavascriptEnabled(false);\r
- browser.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
-\r
- composite = new Composite(container, SWT.NONE);\r
- composite.setLayout(new GridLayout(4, false));\r
- composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));\r
-\r
- lblNewLabel = new Label(composite, SWT.NONE);\r
- lblNewLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));\r
- lblNewLabel.setText(Messages.RtosBuildDialogPage_lblNewLabel_text);\r
-\r
- toolchainText = new Text(composite, SWT.BORDER);\r
- toolchainText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));\r
- toolchainText.setEditable(false);\r
-\r
- selectToolchainBtn = new Button(composite, SWT.NONE);\r
- selectToolchainBtn.setText(Messages.RtosBuildDialogPage_ToolchainButtonText);\r
- selectToolchainBtn.setEnabled(false);\r
-\r
- clearToolchainBtn = new Button(composite, SWT.NONE);\r
- clearToolchainBtn.setText(Messages.RtosBuildDialogPage_clearToolchainBtn_text);\r
- clearToolchainBtn.setEnabled(false);\r
-\r
- selectToolchainBtn.addSelectionListener(new SelectionAdapter() {\r
- @Override\r
- public void widgetSelected(SelectionEvent arg0) {\r
- DirectoryDialog dialog = new DirectoryDialog(getShell(), SWT.SHEET);\r
- dialog.setMessage(Messages.RtosBuildDialogPage_ToolchainDialogMessage);\r
- String toolchainPath = dialog.open();\r
- if (toolchainPath != null) {\r
- toolchainText.setText(toolchainPath);\r
- RtosBuildWizardDialog.selectionToolchain(toolchainPath);\r
- }\r
- }\r
- });\r
-\r
- clearToolchainBtn.addSelectionListener(new SelectionAdapter() {\r
- @Override\r
- public void widgetSelected(SelectionEvent e) {\r
- toolchainText.setText("");\r
- RtosBuildWizardDialog.selectionToolchain(null);\r
- }\r
- });\r
-\r
- // Button group area\r
- Composite btnGroupComposite = new Composite(container, SWT.NONE);\r
- btnGroupComposite.setLayoutData(new GridData(SWT.LEFT, SWT.BOTTOM, true, false, 2, 1));\r
- RowLayout btnLayout = new RowLayout(SWT.HORIZONTAL);\r
- btnLayout.marginLeft = 0;\r
- btnLayout.spacing = 5;\r
- btnLayout.pack = false;\r
- btnGroupComposite.setLayout(btnLayout);\r
-\r
- kernelConfigBtn = new Button(btnGroupComposite, SWT.NONE);\r
- kernelConfigBtn.setText(Messages.RtosBuildDialogPage_KernelConfigButtonText);\r
- kernelConfigBtn.setEnabled(false);\r
- kernelConfigBtn.addSelectionListener(new SelectionListener() {\r
- @Override\r
- public void widgetDefaultSelected(SelectionEvent arg0) {\r
- }\r
-\r
- @Override\r
- public void widgetSelected(SelectionEvent arg0) {\r
- try {\r
- Runtime.getRuntime().exec(KERNEL_CONFIG_CMD, null,\r
- new File(ResourceUtil.getCurrentProject().getLocation().toString() + File.separator + "os")); //$NON-NLS-1$\r
- } catch (IOException e) {\r
- MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", Messages.RtosBuildDialogPage_KconfigErrorMessage); //$NON-NLS-1$\r
- return;\r
- }\r
- }\r
- });\r
-\r
- initialize();\r
- dialogChanged();\r
-\r
- setControl(parentComposite);\r
- }\r
-\r
- /**\r
- * Tests if the current workbench selection is a suitable container to use.\r
- */\r
- private void initialize() {\r
- String toolchainPath = RtosBuildWizardDialog.getSelectionToolchain();\r
- if (toolchainPath != null) {\r
- toolchainText.setText(RtosBuildWizardDialog.getSelectionToolchain());\r
- } else {\r
- toolchainText.setText("");\r
- }\r
- setPageComplete(false);\r
- }\r
-\r
- private void dialogChanged() {\r
-\r
- }\r
-\r
- /**\r
- * @return the shell\r
- */\r
- public Shell getShell() {\r
- return shell;\r
- }\r
-\r
- private class TableViewerProvider_1 extends LabelProvider implements ITableLabelProvider {\r
-\r
- @Override\r
- public Image getColumnImage(Object arg0, int columnIndex) {\r
- return null;\r
- }\r
-\r
- @Override\r
- public String getColumnText(Object element, int columnIndex) {\r
- // TODO: create object in associated with Device EntryList\r
- if (element instanceof String) {\r
- String bOption = (String) element;\r
- switch (columnIndex) {\r
- case 0:\r
- return bOption;\r
- default:\r
- break;\r
- }\r
- }\r
- return null;\r
- }\r
-\r
- }\r
-\r
- private class TableViewerProvider extends LabelProvider implements ITableLabelProvider {\r
-\r
- @Override\r
- public Image getColumnImage(Object arg0, int columnIndex) {\r
- return null;\r
- }\r
-\r
- @Override\r
- public String getColumnText(Object element, int columnIndex) {\r
- // TODO: create object in associated with Device EntryList\r
- if (element instanceof BuildOption) {\r
- BuildOption bOption = (BuildOption) element;\r
- switch (columnIndex) {\r
- case 0:\r
- return bOption.getBuildOption();\r
- default:\r
- break;\r
- }\r
- }\r
- return null;\r
- }\r
-\r
- }\r
-\r
-}\r
+/*
+* Common
+*
+* Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+*
+* Contact:
+* Jaemin Kim <jm.jemin.kim@samsung.com>
+* Gyeongmin Ju <gyeongmin.ju@samsung.com>
+* Daeryong Park <bdragon.park@samsung.com>
+* HyeongSeok Heo <harry.heo@samsung.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.
+*
+* Contributors:
+* - S-Core Co., Ltd
+*
+*/
+
+package org.tizen.rt.ide.build;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.browser.Browser;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Text;
+import org.tizen.rt.ide.Messages;
+import org.tizen.rt.ide.RtosCommandManager;
+import org.tizen.rt.ide.util.ResourceUtil;
+
+/**
+ * DeviceGuideDialogPage Select Emulator Wizard Feature
+ * @author jm.jaemin.kim{@literal <jm.jaemin.kim>} (S-Core)
+ */
+public class RtosBuildDialogPage extends WizardPage {
+
+ public final static String DEFAULT_DESC_FILE = "index.html"; //$NON-NLS-1$
+ public final static String DEFAULT_DESC_HTML_FORMAT = "<html><body><h2>%s</h2>App : %s</body></html>"; //$NON-NLS-1$
+ public final static String[] KERNEL_CONFIG_CMD = new String[] { "gnome-terminal", "--command", "make menuconfig" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+
+ private Shell shell;
+ private Table buildOptionTable;
+ private Table boardTable;
+ private TableViewer boardTableViewer;
+ private TableViewer buildOptionTableViewer;
+ private Button selectToolchainBtn;
+ private Button kernelConfigBtn;
+ private Browser browser;
+ private Text toolchainText;
+ private Composite composite;
+ private Label lblNewLabel;
+ private Button clearToolchainBtn;
+
+ protected RtosBuildDialogPage(String pageName, Shell shell) {
+ super(pageName);
+ this.shell = shell;
+ setTitle(Messages.RtosBuildDialogPage_Title);
+ setDescription(Messages.RtosBuildDialogPage_Description);
+ setErrorMessage(null);
+ }
+
+ @Override
+ public void createControl(Composite parentComposite) {
+
+ List<String> boardList = RtosCommandManager.getBuildBoards();
+
+ Composite container = new Composite(parentComposite, SWT.NONE);
+ container.setLayoutData(new GridData(GridData.FILL_BOTH));
+ container.setLayout(new GridLayout(1, true));
+
+ Composite tableComposite = new Composite(container, SWT.NONE);
+ tableComposite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+ GridLayout layout = new GridLayout(2, true);
+ layout.marginWidth = 0;
+ layout.horizontalSpacing = 5;
+ tableComposite.setLayout(layout);
+
+ // Boards select table
+ boardTableViewer = new TableViewer(tableComposite, SWT.BORDER | SWT.FULL_SELECTION);
+
+ boardTable = boardTableViewer.getTable();
+ boardTable.setLinesVisible(true);
+ boardTable.setHeaderVisible(true);
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.minimumHeight = 180;
+ boardTable.setLayoutData(gd);
+
+ TableColumn boardNameColumn = new TableColumn(boardTable, SWT.NONE);
+ boardNameColumn.setWidth(300);
+ boardNameColumn.setText(Messages.RtosBuildDialogPage_BoardNameColumn);
+
+ boardTableViewer.setLabelProvider(new TableViewerProvider_1());
+ boardTableViewer.setContentProvider(new ArrayContentProvider());
+ boardTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ selectToolchainBtn.setEnabled(false);
+ clearToolchainBtn.setEnabled(false);
+ IStructuredSelection selection = (IStructuredSelection) event.getSelection();
+ for (Object o : selection.toArray()) {
+ String board = (String) o;
+ RtosBuildWizardDialog.selectionBoard(board);
+ // input buildOption list
+ List<BuildOption> testList = RtosCommandManager.getBuildOptions(board);
+ buildOptionTableViewer.setInput(testList);
+ if (testList != null && !testList.isEmpty()) {
+ boolean isActive = testList.get(0).getSetEnv();
+ selectToolchainBtn.setEnabled(isActive);
+ clearToolchainBtn.setEnabled(isActive);
+ }
+ }
+ }
+ });
+ boardTableViewer.setInput(boardList);
+
+ // Build option select table
+ buildOptionTableViewer = new TableViewer(tableComposite, SWT.BORDER | SWT.FULL_SELECTION);
+
+ buildOptionTable = buildOptionTableViewer.getTable();
+ buildOptionTable.setHeaderVisible(true);
+ buildOptionTable.setLinesVisible(true);
+ gd = new GridData(GridData.FILL_BOTH);
+ gd.minimumHeight = 180;
+ buildOptionTable.setLayoutData(gd);
+
+ TableColumn optionNameColumn = new TableColumn(buildOptionTable, SWT.NONE);
+ optionNameColumn.setWidth(300);
+ optionNameColumn.setText(Messages.RtosBuildDialogPage_OptionNameColumn);
+
+ buildOptionTableViewer.setLabelProvider(new TableViewerProvider());
+ buildOptionTableViewer.setContentProvider(new ArrayContentProvider());
+ buildOptionTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ IStructuredSelection selection = (IStructuredSelection) event.getSelection();
+ if (selection.isEmpty()) {
+ browser.setText(""); //$NON-NLS-1$
+ kernelConfigBtn.setEnabled(false);
+ setPageComplete(false);
+ } else {
+ for (Object o : selection.toArray()) {
+ BuildOption bOption = (BuildOption) o;
+ RtosBuildWizardDialog.selectionOption(bOption);
+ File desc = new File(bOption.getPath(), DEFAULT_DESC_FILE);
+ if (desc.exists()) {
+ browser.setUrl(desc.toURI().toString());
+ } else {
+ browser.setText(String.format(DEFAULT_DESC_HTML_FORMAT, bOption.getBoard(), bOption.getBuildOption()));
+ }
+ kernelConfigBtn.setEnabled(true);
+ setPageComplete(true);
+ }
+ }
+ }
+ });
+ buildOptionTableViewer.addDoubleClickListener(new IDoubleClickListener() {
+ @Override
+ public void doubleClick(DoubleClickEvent arg0) {
+ RtosBuildWizard wizard = (RtosBuildWizard) getWizard();
+ RtosBuildWizardDialog dialog = (RtosBuildWizardDialog) wizard.getContainer();
+ dialog.PressedFinished();
+ }
+ });
+
+ // Description area
+ Composite descComposite = new Composite(container, SWT.BORDER);
+ descComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 2));
+ GridLayout browserLayout = new GridLayout(1, true);
+ browserLayout.marginHeight = 0;
+ browserLayout.marginWidth = 0;
+ descComposite.setLayout(browserLayout);
+
+ browser = new Browser(descComposite, SWT.NONE);
+ browser.setJavascriptEnabled(false);
+ browser.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ composite = new Composite(container, SWT.NONE);
+ composite.setLayout(new GridLayout(4, false));
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+
+ lblNewLabel = new Label(composite, SWT.NONE);
+ lblNewLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+ lblNewLabel.setText(Messages.RtosBuildDialogPage_lblNewLabel_text);
+
+ toolchainText = new Text(composite, SWT.BORDER);
+ toolchainText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+ toolchainText.setEditable(false);
+
+ selectToolchainBtn = new Button(composite, SWT.NONE);
+ selectToolchainBtn.setText(Messages.RtosBuildDialogPage_ToolchainButtonText);
+ selectToolchainBtn.setEnabled(false);
+
+ clearToolchainBtn = new Button(composite, SWT.NONE);
+ clearToolchainBtn.setText(Messages.RtosBuildDialogPage_clearToolchainBtn_text);
+ clearToolchainBtn.setEnabled(false);
+
+ selectToolchainBtn.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent arg0) {
+ DirectoryDialog dialog = new DirectoryDialog(getShell(), SWT.SHEET);
+ dialog.setMessage(Messages.RtosBuildDialogPage_ToolchainDialogMessage);
+ String toolchainPath = dialog.open();
+ if (toolchainPath != null) {
+ toolchainText.setText(toolchainPath);
+ RtosBuildWizardDialog.selectionToolchain(toolchainPath);
+ }
+ }
+ });
+
+ clearToolchainBtn.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ toolchainText.setText("");
+ RtosBuildWizardDialog.selectionToolchain(null);
+ }
+ });
+
+ // Button group area
+ Composite btnGroupComposite = new Composite(container, SWT.NONE);
+ btnGroupComposite.setLayoutData(new GridData(SWT.LEFT, SWT.BOTTOM, true, false, 2, 1));
+ RowLayout btnLayout = new RowLayout(SWT.HORIZONTAL);
+ btnLayout.marginLeft = 0;
+ btnLayout.spacing = 5;
+ btnLayout.pack = false;
+ btnGroupComposite.setLayout(btnLayout);
+
+ kernelConfigBtn = new Button(btnGroupComposite, SWT.NONE);
+ kernelConfigBtn.setText(Messages.RtosBuildDialogPage_KernelConfigButtonText);
+ kernelConfigBtn.setEnabled(false);
+ kernelConfigBtn.addSelectionListener(new SelectionListener() {
+ @Override
+ public void widgetDefaultSelected(SelectionEvent arg0) {
+ }
+
+ @Override
+ public void widgetSelected(SelectionEvent arg0) {
+ try {
+ Runtime.getRuntime().exec(KERNEL_CONFIG_CMD, null,
+ new File(ResourceUtil.getCurrentProject().getLocation().toString() + File.separator + "os")); //$NON-NLS-1$
+ } catch (IOException e) {
+ MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", Messages.RtosBuildDialogPage_KconfigErrorMessage); //$NON-NLS-1$
+ return;
+ }
+ }
+ });
+
+ initialize();
+ dialogChanged();
+
+ setControl(parentComposite);
+ }
+
+ /**
+ * Tests if the current workbench selection is a suitable container to use.
+ */
+ private void initialize() {
+ String toolchainPath = RtosBuildWizardDialog.getSelectionToolchain();
+ if (toolchainPath != null) {
+ toolchainText.setText(RtosBuildWizardDialog.getSelectionToolchain());
+ } else {
+ toolchainText.setText("");
+ }
+ setPageComplete(false);
+ }
+
+ private void dialogChanged() {
+
+ }
+
+ /**
+ * @return the shell
+ */
+ public Shell getShell() {
+ return shell;
+ }
+
+ private class TableViewerProvider_1 extends LabelProvider implements ITableLabelProvider {
+
+ @Override
+ public Image getColumnImage(Object arg0, int columnIndex) {
+ return null;
+ }
+
+ @Override
+ public String getColumnText(Object element, int columnIndex) {
+ // TODO: create object in associated with Device EntryList
+ if (element instanceof String) {
+ String bOption = (String) element;
+ switch (columnIndex) {
+ case 0:
+ return bOption;
+ default:
+ break;
+ }
+ }
+ return null;
+ }
+
+ }
+
+ private class TableViewerProvider extends LabelProvider implements ITableLabelProvider {
+
+ @Override
+ public Image getColumnImage(Object arg0, int columnIndex) {
+ return null;
+ }
+
+ @Override
+ public String getColumnText(Object element, int columnIndex) {
+ // TODO: create object in associated with Device EntryList
+ if (element instanceof BuildOption) {
+ BuildOption bOption = (BuildOption) element;
+ switch (columnIndex) {
+ case 0:
+ return bOption.getBuildOption();
+ default:
+ break;
+ }
+ }
+ return null;
+ }
+
+ }
+
+}
-/*\r
-* Common\r
-*\r
-* Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.\r
-*\r
-* Contact:\r
-* jm.jemin.kim <jm.jemin.kim@samsung.com>\r
-*\r
-* Licensed under the Apache License, Version 2.0 (the "License");\r
-* you may not use this file except in compliance with the License.\r
-* You may obtain a copy of the License at\r
-*\r
-* http://www.apache.org/licenses/LICENSE-2.0\r
-*\r
-* Unless required by applicable law or agreed to in writing, software\r
-* distributed under the License is distributed on an "AS IS" BASIS,\r
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-* See the License for the specific language governing permissions and\r
-* limitations under the License.\r
-*\r
-* Contributors:\r
-* - S-Core Co., Ltd\r
-*\r
-*/\r
-\r
-package org.tizen.rt.ide.build;\r
-\r
-import java.lang.reflect.InvocationTargetException;\r
-\r
-import org.eclipse.core.resources.IProject;\r
-import org.eclipse.core.resources.IResource;\r
-import org.eclipse.core.runtime.CoreException;\r
-import org.eclipse.core.runtime.IProgressMonitor;\r
-import org.eclipse.jface.dialogs.IPageChangedListener;\r
-import org.eclipse.jface.dialogs.PageChangedEvent;\r
-import org.eclipse.jface.operation.IRunnableWithProgress;\r
-import org.eclipse.jface.wizard.IWizardContainer;\r
-import org.eclipse.jface.wizard.Wizard;\r
-import org.eclipse.jface.wizard.WizardDialog;\r
-import org.eclipse.swt.widgets.Shell;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-import org.tizen.rt.ide.Messages;\r
-import org.tizen.rt.ide.RtosCommandManager;\r
-import org.tizen.rt.ide.console.ConsoleManager;\r
-\r
-/**\r
- * RtosWizard\r
- * @author jm.jaemin.kim{@literal <jm.jaemin.kim>} (S-Core)\r
- */\r
-public class RtosBuildWizard extends Wizard implements IPageChangedListener {\r
-\r
- private ConsoleManager consoleManager;\r
- private Shell shell;\r
- private IProject project;\r
- private final String GUIDE_DIALOG_NAME = "Build Option Selection"; //$NON-NLS-1$\r
- private RtosBuildDialogPage rtosDialogPage = null;\r
- private final Logger logger = LoggerFactory.getLogger(RtosBuildWizard.class);\r
-\r
- public RtosBuildWizard(Shell shell, IProject project) {\r
- super();\r
- this.setWindowTitle(Messages.RtosBuildWizard_WindowTitle);\r
- this.setNeedsProgressMonitor(true);\r
- this.shell = shell;\r
- this.project = project;\r
- this.consoleManager = new ConsoleManager(true);\r
- }\r
-\r
- @Override\r
- public boolean performFinish() {\r
- IWizardContainer container = getContainer();\r
- try {\r
- container.run(true, false, new IRunnableWithProgress() {\r
- @Override\r
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {\r
- // String selectedDeviceName =\r
- monitor.beginTask("Build", 4); //$NON-NLS-1$\r
- BuildOption buildOption = RtosBuildWizardDialog.getSelectionOption();\r
- consoleManager.println("Build Option : " + buildOption.getBuildOption()); //$NON-NLS-1$\r
- monitor.worked(1);\r
-\r
- String toolchainPath = RtosBuildWizardDialog.getSelectionToolchain();\r
- monitor.worked(1);\r
-\r
- RtosCommandManager.runBuild(buildOption, toolchainPath, consoleManager, monitor);\r
- try {\r
- project.refreshLocal(IResource.DEPTH_INFINITE, monitor);\r
- } catch (CoreException e) {\r
- logger.error(e.getMessage(), e);\r
- }\r
-\r
- monitor.done();\r
- }\r
- });\r
- } catch (InvocationTargetException e) {\r
- logger.error(e.getMessage(), e);\r
- } catch (InterruptedException e) {\r
- logger.error(e.getMessage(), e);\r
- }\r
- return true;\r
- }\r
-\r
- @Override\r
- public void addPages() {\r
- rtosDialogPage = new RtosBuildDialogPage(GUIDE_DIALOG_NAME, shell);\r
- addPage(rtosDialogPage);\r
- WizardDialog dialog = (WizardDialog) getContainer();\r
- dialog.addPageChangedListener(this);\r
- }\r
-\r
- @Override\r
- public void pageChanged(PageChangedEvent arg0) {\r
-\r
- }\r
-}\r
+/*
+* Common
+*
+* Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+*
+* Contact:
+* jm.jemin.kim <jm.jemin.kim@samsung.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.
+*
+* Contributors:
+* - S-Core Co., Ltd
+*
+*/
+
+package org.tizen.rt.ide.build;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.dialogs.IPageChangedListener;
+import org.eclipse.jface.dialogs.PageChangedEvent;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.wizard.IWizardContainer;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.tizen.rt.ide.Messages;
+import org.tizen.rt.ide.RtosCommandManager;
+import org.tizen.rt.ide.console.ConsoleManager;
+
+/**
+ * RtosWizard
+ * @author jm.jaemin.kim{@literal <jm.jaemin.kim>} (S-Core)
+ */
+public class RtosBuildWizard extends Wizard implements IPageChangedListener {
+
+ private ConsoleManager consoleManager;
+ private Shell shell;
+ private IProject project;
+ private final String GUIDE_DIALOG_NAME = "Build Option Selection"; //$NON-NLS-1$
+ private RtosBuildDialogPage rtosDialogPage = null;
+ private final Logger logger = LoggerFactory.getLogger(RtosBuildWizard.class);
+
+ public RtosBuildWizard(Shell shell, IProject project) {
+ super();
+ this.setWindowTitle(Messages.RtosBuildWizard_WindowTitle);
+ this.setNeedsProgressMonitor(true);
+ this.shell = shell;
+ this.project = project;
+ this.consoleManager = new ConsoleManager(true);
+ }
+
+ @Override
+ public boolean performFinish() {
+ IWizardContainer container = getContainer();
+ try {
+ container.run(true, false, new IRunnableWithProgress() {
+ @Override
+ public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+ // String selectedDeviceName =
+ monitor.beginTask("Build", 4); //$NON-NLS-1$
+ BuildOption buildOption = RtosBuildWizardDialog.getSelectionOption();
+ consoleManager.println("Build Option : " + buildOption.getBuildOption()); //$NON-NLS-1$
+ monitor.worked(1);
+
+ String toolchainPath = RtosBuildWizardDialog.getSelectionToolchain();
+ monitor.worked(1);
+
+ RtosCommandManager.runBuild(buildOption, toolchainPath, consoleManager, monitor);
+ try {
+ project.refreshLocal(IResource.DEPTH_INFINITE, monitor);
+ } catch (CoreException e) {
+ logger.error(e.getMessage(), e);
+ }
+
+ monitor.done();
+ }
+ });
+ } catch (InvocationTargetException e) {
+ logger.error(e.getMessage(), e);
+ } catch (InterruptedException e) {
+ logger.error(e.getMessage(), e);
+ }
+ return true;
+ }
+
+ @Override
+ public void addPages() {
+ rtosDialogPage = new RtosBuildDialogPage(GUIDE_DIALOG_NAME, shell);
+ addPage(rtosDialogPage);
+ WizardDialog dialog = (WizardDialog) getContainer();
+ dialog.addPageChangedListener(this);
+ }
+
+ @Override
+ public void pageChanged(PageChangedEvent arg0) {
+
+ }
+}
-/*\r
- * NewRtAppWizard\r
- *\r
- * Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd. All rights reserved.\r
- *\r
- * Contact:\r
- * Gyeongmin Ju <gyeongmin.ju@samsung.com>\r
- * HyeongSeok Heo <harry.heo@samsung.com>\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- *\r
- * Contributors:\r
- * - S-Core Co., Ltd\r
- */\r
-package org.tizen.rt.ide.wizards;\r
-\r
-import java.io.File;\r
-import java.io.FileOutputStream;\r
-import java.io.IOException;\r
-import java.io.InputStream;\r
-import java.io.OutputStream;\r
-import java.lang.reflect.InvocationTargetException;\r
-import java.nio.file.Files;\r
-import java.nio.file.Paths;\r
-import java.nio.file.StandardCopyOption;\r
-import java.util.HashMap;\r
-import java.util.Map;\r
-\r
-import org.eclipse.core.resources.IFolder;\r
-import org.eclipse.core.resources.IProject;\r
-import org.eclipse.core.resources.IResource;\r
-import org.eclipse.core.runtime.CoreException;\r
-import org.eclipse.core.runtime.IProgressMonitor;\r
-import org.eclipse.jface.dialogs.MessageDialog;\r
-import org.eclipse.jface.operation.IRunnableWithProgress;\r
-import org.eclipse.ui.wizards.newresource.BasicNewResourceWizard;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-import org.tizen.rt.ide.Messages;\r
-import org.tizen.rt.ide.util.MacroUtil;\r
-import org.tizen.rt.ide.util.ZipUtil;\r
-import org.tizen.rt.ide.util.ZipUtil.AbstractRunner;\r
-\r
-public class NewRtAppWizard extends BasicNewResourceWizard {\r
- private final Logger logger = LoggerFactory.getLogger(NewRtAppWizard.class);\r
-\r
- private NewRtAppWizardPage page;\r
-\r
- /**\r
- * Constructor for NewRtAppWizard.\r
- */\r
- public NewRtAppWizard() {\r
- super();\r
- setWindowTitle(Messages.RtosNewRtAppWizard_WindowTitle);\r
- setNeedsProgressMonitor(true);\r
- }\r
-\r
- /**\r
- * Adding the page to the wizard.\r
- */\r
- public void addPages() {\r
- page = new NewRtAppWizardPage(selection);\r
- addPage(page);\r
- }\r
-\r
- /**\r
- * 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.\r
- */\r
- @Override\r
- public boolean performFinish() {\r
- final String appName = page.getAppName();\r
- final String localtion = page.getFileName();\r
- final IProject project = page.getProject();\r
- final String tempFileName = page.getTemplateFileName();\r
- IRunnableWithProgress op = new IRunnableWithProgress() {\r
- public void run(IProgressMonitor monitor) throws InvocationTargetException {\r
- try {\r
- doFinish(appName, localtion, tempFileName, project, monitor);\r
- } catch (CoreException e) {\r
- throw new InvocationTargetException(e);\r
- } finally {\r
- monitor.done();\r
- }\r
- }\r
- };\r
- try {\r
- getContainer().run(true, false, op);\r
-\r
- // select and reveal created app folder\r
- IFolder folder = project.getFolder(localtion);\r
- if (folder != null && folder.exists()) {\r
- selectAndReveal(folder);\r
- }\r
- } catch (InterruptedException e) {\r
- return false;\r
- } catch (InvocationTargetException e) {\r
- Throwable realException = e.getTargetException();\r
- MessageDialog.openError(getShell(), "Error", realException.getMessage());\r
- return false;\r
- }\r
- return true;\r
- }\r
-\r
- /**\r
- * The worker method. It will find the container, create the file if missing or just replace its contents, and open the editor on the newly created file.\r
- */\r
- private void copys(File srcFile, File desFile, IProgressMonitor monitor) throws IOException {\r
- java.nio.file.Path srcPath = Paths.get(srcFile.toString());\r
- java.nio.file.Path desPath = Paths.get(desFile.toString());\r
-\r
- File[] tempFiles = srcFile.listFiles();\r
- if (tempFiles != null) {\r
- for (File file : tempFiles) {\r
- String name = file.getName();\r
- java.nio.file.Path srcPath2 = srcPath.resolve(name);\r
- if (Files.isSymbolicLink(srcPath2)) {\r
- continue;\r
- }\r
-\r
- java.nio.file.Path desPath2 = desPath.resolve(name);\r
- Files.copy(srcPath2, desPath2, StandardCopyOption.COPY_ATTRIBUTES, StandardCopyOption.REPLACE_EXISTING);\r
- if (monitor != null) {\r
- monitor.subTask(name);\r
- monitor.worked(1);\r
- }\r
-\r
- if (file.isDirectory()) {\r
- copys(file, desPath2.toFile(), monitor);\r
- }\r
- }\r
- }\r
- }\r
-\r
- private class MacroFileRunner extends AbstractRunner {\r
- private Map<String, String> macros;\r
- private String targetDir;\r
-\r
- public MacroFileRunner(Map<String, String> macros, String targetDir) {\r
- this.macros = macros;\r
- this.targetDir = targetDir;\r
- }\r
-\r
- @Override\r
- public boolean run(boolean isDirectory, InputStream ios, String filename, int extra) {\r
- File targetFile = new File(targetDir, filename);\r
-\r
- if (isDirectory) {\r
- String path = MacroUtil.processMacro(targetFile.getAbsolutePath(), "TIZEN", macros);\r
- File targetFileObj = new File(path);\r
- targetFileObj.mkdirs();\r
- } else {\r
- String path = MacroUtil.processMacro(targetFile.toString(), macros);\r
- targetFile = new File(path);\r
- File targetFileHome = targetFile.getParentFile();\r
- targetFileHome.mkdirs();\r
-\r
- OutputStream fs = null;\r
- try {\r
- fs = new FileOutputStream(targetFile);\r
- MacroUtil.processMacro(ios, fs, "TIZEN", macros);\r
- } catch (Exception e) {\r
- logger.error(e.getMessage());\r
- return false;\r
- } finally {\r
- if (fs != null) {\r
- try {\r
- fs.close();\r
- } catch (IOException e) {\r
- return false;\r
- }\r
- }\r
- }\r
- }\r
-\r
- return true;\r
- }\r
- }\r
-\r
- private void doFinish(String appName, String appPathName, String templateFileName, IProject project,\r
- IProgressMonitor monitor) throws CoreException {\r
- monitor.beginTask("Creating " + appPathName, 4); //$NON-NLS-1$\r
-\r
- Map<String, String> macros = new HashMap<String, String>();\r
- macros.put("TIZEN.newapp", appName);\r
- macros.put("TIZEN.NEWAPP", appName.toUpperCase());\r
-\r
- File appPathFile = new File(project.getLocation().toString(), appPathName);\r
- appPathFile.mkdirs();\r
-\r
- File tempFile = new File(templateFileName);\r
-\r
- if (tempFile.isDirectory()) {\r
- File projFile = project.getFullPath().toFile();\r
-\r
- try {\r
- copys(tempFile, projFile, monitor);\r
- } catch (IOException e) {\r
- logger.error(e.getMessage(), e);\r
- }\r
- } else if (tempFile.getName().endsWith(".zip")) { //$NON-NLS-1$\r
- try {\r
- ZipUtil.unzip(tempFile.toString(), new MacroFileRunner(macros, appPathFile.toString()), monitor);\r
- } catch (Exception e) {\r
- logger.error(e.getMessage(), e);\r
- }\r
- }\r
-\r
- project.getFolder(appPathName).refreshLocal(IResource.DEPTH_INFINITE, monitor);\r
-\r
- monitor.worked(1);\r
- }\r
-}\r
+/*
+ * NewRtAppWizard
+ *
+ * Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * Gyeongmin Ju <gyeongmin.ju@samsung.com>
+ * HyeongSeok Heo <harry.heo@samsung.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.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ */
+package org.tizen.rt.ide.wizards;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.lang.reflect.InvocationTargetException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.ui.wizards.newresource.BasicNewResourceWizard;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.tizen.rt.ide.Messages;
+import org.tizen.rt.ide.util.MacroUtil;
+import org.tizen.rt.ide.util.ZipUtil;
+import org.tizen.rt.ide.util.ZipUtil.AbstractRunner;
+
+public class NewRtAppWizard extends BasicNewResourceWizard {
+ private final Logger logger = LoggerFactory.getLogger(NewRtAppWizard.class);
+
+ private NewRtAppWizardPage page;
+
+ /**
+ * Constructor for NewRtAppWizard.
+ */
+ public NewRtAppWizard() {
+ super();
+ setWindowTitle(Messages.RtosNewRtAppWizard_WindowTitle);
+ setNeedsProgressMonitor(true);
+ }
+
+ /**
+ * Adding the page to the wizard.
+ */
+ public void addPages() {
+ page = new NewRtAppWizardPage(selection);
+ addPage(page);
+ }
+
+ /**
+ * 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() {
+ final String appName = page.getAppName();
+ final String localtion = page.getFileName();
+ final IProject project = page.getProject();
+ final String tempFileName = page.getTemplateFileName();
+ IRunnableWithProgress op = new IRunnableWithProgress() {
+ public void run(IProgressMonitor monitor) throws InvocationTargetException {
+ try {
+ doFinish(appName, localtion, tempFileName, project, monitor);
+ } catch (CoreException e) {
+ throw new InvocationTargetException(e);
+ } finally {
+ monitor.done();
+ }
+ }
+ };
+ try {
+ getContainer().run(true, false, op);
+
+ // select and reveal created app folder
+ IFolder folder = project.getFolder(localtion);
+ if (folder != null && folder.exists()) {
+ selectAndReveal(folder);
+ }
+ } catch (InterruptedException e) {
+ return false;
+ } catch (InvocationTargetException e) {
+ Throwable realException = e.getTargetException();
+ MessageDialog.openError(getShell(), "Error", realException.getMessage());
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * The worker method. It will find the container, create the file if missing or just replace its contents, and open the editor on the newly created file.
+ */
+ private void copys(File srcFile, File desFile, IProgressMonitor monitor) throws IOException {
+ java.nio.file.Path srcPath = Paths.get(srcFile.toString());
+ java.nio.file.Path desPath = Paths.get(desFile.toString());
+
+ File[] tempFiles = srcFile.listFiles();
+ if (tempFiles != null) {
+ for (File file : tempFiles) {
+ String name = file.getName();
+ java.nio.file.Path srcPath2 = srcPath.resolve(name);
+ if (Files.isSymbolicLink(srcPath2)) {
+ continue;
+ }
+
+ java.nio.file.Path desPath2 = desPath.resolve(name);
+ Files.copy(srcPath2, desPath2, StandardCopyOption.COPY_ATTRIBUTES, StandardCopyOption.REPLACE_EXISTING);
+ if (monitor != null) {
+ monitor.subTask(name);
+ monitor.worked(1);
+ }
+
+ if (file.isDirectory()) {
+ copys(file, desPath2.toFile(), monitor);
+ }
+ }
+ }
+ }
+
+ private class MacroFileRunner extends AbstractRunner {
+ private Map<String, String> macros;
+ private String targetDir;
+
+ public MacroFileRunner(Map<String, String> macros, String targetDir) {
+ this.macros = macros;
+ this.targetDir = targetDir;
+ }
+
+ @Override
+ public boolean run(boolean isDirectory, InputStream ios, String filename, int extra) {
+ File targetFile = new File(targetDir, filename);
+
+ if (isDirectory) {
+ String path = MacroUtil.processMacro(targetFile.getAbsolutePath(), "TIZEN", macros);
+ File targetFileObj = new File(path);
+ targetFileObj.mkdirs();
+ } else {
+ String path = MacroUtil.processMacro(targetFile.toString(), macros);
+ targetFile = new File(path);
+ File targetFileHome = targetFile.getParentFile();
+ targetFileHome.mkdirs();
+
+ OutputStream fs = null;
+ try {
+ fs = new FileOutputStream(targetFile);
+ MacroUtil.processMacro(ios, fs, "TIZEN", macros);
+ } catch (Exception e) {
+ logger.error(e.getMessage());
+ return false;
+ } finally {
+ if (fs != null) {
+ try {
+ fs.close();
+ } catch (IOException e) {
+ return false;
+ }
+ }
+ }
+ }
+
+ return true;
+ }
+ }
+
+ private void doFinish(String appName, String appPathName, String templateFileName, IProject project,
+ IProgressMonitor monitor) throws CoreException {
+ monitor.beginTask("Creating " + appPathName, 4); //$NON-NLS-1$
+
+ Map<String, String> macros = new HashMap<String, String>();
+ macros.put("TIZEN.newapp", appName);
+ macros.put("TIZEN.NEWAPP", appName.toUpperCase());
+
+ File appPathFile = new File(project.getLocation().toString(), appPathName);
+ appPathFile.mkdirs();
+
+ File tempFile = new File(templateFileName);
+
+ if (tempFile.isDirectory()) {
+ File projFile = project.getFullPath().toFile();
+
+ try {
+ copys(tempFile, projFile, monitor);
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+ } else if (tempFile.getName().endsWith(".zip")) { //$NON-NLS-1$
+ try {
+ ZipUtil.unzip(tempFile.toString(), new MacroFileRunner(macros, appPathFile.toString()), monitor);
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+
+ project.getFolder(appPathName).refreshLocal(IResource.DEPTH_INFINITE, monitor);
+
+ monitor.worked(1);
+ }
+}