From: heeyoung Date: Wed, 17 Sep 2014 08:03:14 +0000 (+0900) Subject: Merge remote-tracking branch 'origin/tizen' into da-setting X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F55%2F27655%2F1;p=sdk%2Ftools%2Fdynamic-analyzer.git Merge remote-tracking branch 'origin/tizen' into da-setting Conflicts: org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/Communicator22.java org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/listeners/AnalyzerPerspectiveListener.java org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/BinarySettingManager.java org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/InputRow.java org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallStackManager.java org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkDetailView.java org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfileDataMaker.java org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/configuration/BinarySettingsPage.java Change-Id: I9f68a203d96fe6c6951ee16c88f0085eb777dcec Signed-off-by: heeyoung --- 0f35b9b32209454f1520fb8467820392446db7c1 diff --cc org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/listeners/AnalyzerPerspectiveListener.java index 33c8756,9c435e5..f68de12 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/listeners/AnalyzerPerspectiveListener.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/listeners/AnalyzerPerspectiveListener.java @@@ -37,9 -37,8 +37,8 @@@ import org.tizen.dynamicanalyzer.commun import org.tizen.dynamicanalyzer.communicator.IDECommunicator; import org.tizen.dynamicanalyzer.swap.platform.BinarySettingManager; import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea; -import org.tizen.dynamicanalyzer.ui.toolbar.configuration.ConfigurationDialogDataManager; +import org.tizen.dynamicanalyzer.ui.toolbar.setting.SettingDataManager; import org.tizen.dynamicanalyzer.util.Logger; - import org.tizen.dynamicanalyzer.workbench.SingletonFocusManager; public class AnalyzerPerspectiveListener extends PerspectiveAdapter { private static boolean init = false; @@@ -61,11 -59,8 +59,9 @@@ IDECommunicator.startIDECommunicatorThread(); Logger.performance("TEST", "DA Start", "Start IDE Communicator"); - // TODO : check and remove - // ConfigurationDialogDataManager.getInstance() - // .updateFeaturesValueFromConfigureManager(); - ConfigurationDialogDataManager.getInstance().updateFeaturesValueFromConfigureManager(); ++ + SettingDataManager.getInstance(); - + ExecutionCallbackManager.registerCallback( ExecutionCallbackManager.WINDOWADVISOR_POSTWINDOWOPEN, new PostWindowOpenCallback()); diff --cc org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/BinarySettingManager.java index 87be305,afaea53..994af56 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/BinarySettingManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/BinarySettingManager.java @@@ -27,40 -27,28 +27,29 @@@ package org.tizen.dynamicanalyzer.swap.platform; import java.io.BufferedReader; + import java.io.BufferedWriter; import java.io.File; - import java.io.FileNotFoundException; - import java.io.FileReader; import java.io.IOException; - import java.io.InputStreamReader; + import java.nio.file.FileAlreadyExistsException; import java.util.ArrayList; - import java.util.HashMap; + import java.util.Collections; import java.util.List; - import java.util.regex.Pattern; - - import org.eclipse.swt.layout.FormAttachment; - import org.eclipse.swt.layout.FormData; + import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.common.path.PathManager; import org.tizen.dynamicanalyzer.constant.CommonConstants; - import org.tizen.dynamicanalyzer.project.BinaryInfo; - import org.tizen.dynamicanalyzer.swap.platform.ui.InputRow; -import org.tizen.dynamicanalyzer.ui.toolbar.ConfigureManager; +import org.tizen.dynamicanalyzer.ui.toolbar.setting.SettingDataManager; - import org.tizen.dynamicanalyzer.util.CommonUtil; + import org.tizen.dynamicanalyzer.util.FileUtil; import org.tizen.dynamicanalyzer.util.Logger; - import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; import org.tizen.dynamicanalyzer.utils.RpmUtil; public class BinarySettingManager { private static BinarySettingManager instance = null; - private HashMap targetBinInfoMap = new HashMap(); - - // temporary list - private HashMap inputRowHash = new HashMap(); - private List inputRowList = new ArrayList(); - - private List realBinarySettings = new ArrayList(); + private List targetBinaryList = new ArrayList(); + // private Map targetBinaryInfoMap = new HashMap(); - private String debugRoot = PathManager.getRootstrapsPath(ConfigureManager.getPlatform()); + private String debugRoot = PathManager.getRootstrapsPath(SettingDataManager.getInstance() + .getPlatform()); public static synchronized BinarySettingManager getInstance() { if (null == instance) { diff --cc org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkDetailView.java index 6419556,a90a85b..b988c94 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkDetailView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkDetailView.java @@@ -123,10 -123,10 +123,9 @@@ public class NetworkDetailView extends DATableDataFormat tableFormat = (DATableDataFormat) tableData[0].getData(); NetworkAPIType apiType = (NetworkAPIType) tableFormat.getLogData(); updateData(apiType.getSeq()); - }else{ + } else { updateData(0); } - - } @Override diff --cc org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/configuration/BinarySettingsPage.java index ac7a9c7,38ce074..4dd1b99 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/configuration/BinarySettingsPage.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/configuration/BinarySettingsPage.java @@@ -126,30 -141,23 +141,23 @@@ public class BinarySettingsPage extend String path = (String) result; File saveFile = new File(path); BufferedReader br = null; - String content = null; try { - List binarySettings = new ArrayList(); br = new BufferedReader(new FileReader(saveFile)); - while (null != (content = br.readLine())) { - InputRow inputRow = new InputRow(inputComposite); - String[] splitContent = content - .split(CommonConstants.COMMA); - inputRow.setBinaryText(new String(splitContent[0])); - inputRow.setDebugText(new String(splitContent[3])); - inputRow.setSourceText(new String(splitContent[4])); + BinarySettingManager.getInstance().openData(br); + List binarySettings = BinarySettingManager.getInstance() + .getBinarySettingList(); + + for (int i = 0; i < binarySettings.size(); i++) { + InputRow inputRow = new InputRow(inputComposite, removeButtonListener); + inputRow.setBinaryText(binarySettings.get(i).getBinaryPath()); + inputRow.setDebugText(binarySettings.get(i).getDebugRpmPath()); + inputRow.setSourceText(binarySettings.get(i).getUserSourceDir()); inputRowList.add(inputRow); - inputRowHash.put(inputRow.getBinaryText(), inputRow); - - BinarySettingData binaryData = new BinarySettingData(); - binaryData.loadSaveData(content); - binarySettings.add(binaryData); } - BinarySettingManager.getInstance().putRealBinarySettingData( - binarySettings); BinarySettingProgressManager.getInstance().startProcessStart( "now loading binaries..."); - BinarySettingProcessor.runLoadingThread(me); +// BinarySettingProcessor.runLoadingThread(me); // TODO : remove class } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { @@@ -240,12 -245,10 +245,11 @@@ public BinarySettingsPage(Composite parent, int style) { super(parent, style); me = this; - setTitle("Binary Settings"); // TODO : remove class - rootPath = PathManager - .getRootstrapsPath(ConfigureManager.getPlatform()); - inputRowHash = BinarySettingManager.getInstance().getInputRowHash(); - inputRowList = BinarySettingManager.getInstance().getInputRowList(); + setTitle("Binary Settings"); // TODO nl + rootPath = PathManager.getRootstrapsPath(ConfigureManager.getPlatform()); + inputRowList = new ArrayList(); + + String settingPath = PathManager.DA_SETTING_PATH; File settingFolder = new File(settingPath); if (!settingFolder.exists() || !settingFolder.isDirectory()) { diff --cc org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/setting/SettingDialogBinarySettingsPage.java index e57ec5a,0000000..aa92949 mode 100644,000000..100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/setting/SettingDialogBinarySettingsPage.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/setting/SettingDialogBinarySettingsPage.java @@@ -1,475 -1,0 +1,471 @@@ +/* + * Dynamic Analyzer + * + * Copyright (c) 2013 Samsung Electronics Co., Ltd. All rights reserved. + * + * Contact: + * Jaewon Lim + * Jooyoul Lee + * Juyoung Kim + * + * 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.dynamicanalyzer.ui.toolbar.setting; + +import java.io.BufferedReader; - import java.io.BufferedWriter; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; - import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; - import java.util.HashMap; +import java.util.List; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.ScrolledComposite; +import org.eclipse.swt.layout.FormAttachment; +import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.layout.FormLayout; +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.tizen.dynamicanalyzer.common.AnalyzerConstants; +import org.tizen.dynamicanalyzer.common.path.PathManager; +import org.tizen.dynamicanalyzer.communicator.DACommunicator; +import org.tizen.dynamicanalyzer.constant.CommonConstants; +import org.tizen.dynamicanalyzer.resources.ColorResources; +import org.tizen.dynamicanalyzer.resources.FontResources; +import org.tizen.dynamicanalyzer.swap.platform.BinarySettingData; +import org.tizen.dynamicanalyzer.swap.platform.BinarySettingManager; +import org.tizen.dynamicanalyzer.swap.platform.ui.BinarySettingProcessor; +import org.tizen.dynamicanalyzer.swap.platform.ui.BinarySettingProgressManager; +import org.tizen.dynamicanalyzer.swap.platform.ui.InputRow; +import org.tizen.dynamicanalyzer.swap.platform.ui.LoadSettingDialog; +import org.tizen.dynamicanalyzer.swap.platform.ui.SaveSettingDialog; +import org.tizen.dynamicanalyzer.swap.platform.ui.DeviceExplorer.DeviceExplorerDilaog; +import org.tizen.dynamicanalyzer.swap.platform.ui.FileExplorer.FileExplorerDialog; +import org.tizen.dynamicanalyzer.util.CommonUtil; +import org.tizen.dynamicanalyzer.util.Logger; +import org.tizen.dynamicanalyzer.widgets.button.DACustomButton; +import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener; +import org.tizen.dynamicanalyzer.widgets.da.base.DAButton; +import org.tizen.dynamicanalyzer.widgets.da.base.WarningDialog; +import org.tizen.dynamicanalyzer.widgets.da.view.DAPageComposite; + +public class SettingDialogBinarySettingsPage extends DAPageComposite { + public static final String ID = SettingDialogBinarySettingsPage.class.getName(); + + public static final int RADIO_CURRENT = 1; + public static final int RADIO_ADD = 2; + public static final int RADIO_REMOVE = 3; + - private HashMap inputRowHash = null; + private List inputRowList = null; + + private ScrolledComposite scrolledComposite = null; + private Composite inputComposite = null; + + private DAButton clearButton = null; + private DAButton addButton = null; + private DAButton saveButton = null; + private DAButton loadButton = null; + private DAButton debugRootButton = null; + private Label librariesLabel = null; + + private String rootPath = null; + private SettingDialogBinarySettingsPage me = null; + + private DACustomButtonClickEventListener addButtonListener = new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { + DeviceExplorerDilaog dialog = new DeviceExplorerDilaog(getShell()); +// dialog.setFilter(".so"); + Object result = dialog.open(); + if (result != null) { + BinarySettingProgressManager.getInstance().startProcessStart( + "Wait for add binaries..."); + BinarySettingProcessor.runAddThread(result, me); + } + } + }; + ++ private DACustomButtonClickEventListener removeButtonListener = new DACustomButtonClickEventListener() { ++ ++ @Override ++ public void handleClickEvent(DACustomButton button) { ++ String binaryPath = ((InputRow) button.getParent()).getBinaryText(); ++ ++ removeInputRow(binaryPath); ++ Composite inputComposite = button.getParent().getParent(); ++ BinarySettingData rmData = BinarySettingManager.getInstance().getBinarySetting( ++ binaryPath); ++ List rmBinaries = new ArrayList(); ++ rmBinaries.add(rmData); ++ DACommunicator.sendSWAPMessage(AnalyzerConstants.MSG_SWAP_INST_REMOVE, rmBinaries); ++ ++ BinarySettingManager.getInstance().removeBinarySettingData(binaryPath); ++ button.getParent().dispose(); ++ ((SettingDialogBinarySettingsPage) (inputComposite.getParent().getParent())).updateLayout(); ++ } ++ }; ++ + private DACustomButtonClickEventListener loadButtonListener = new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { - LoadSettingDialog dialog = new LoadSettingDialog(button.getParent() - .getShell()); ++ LoadSettingDialog dialog = new LoadSettingDialog(button.getParent().getShell()); + Object result = dialog.open(); + if (result == null) { + return; + } + + // swap remove message send and inputrow dispose + cleanButtonListener.handleClickEvent(null); + + String path = (String) result; + File saveFile = new File(path); + BufferedReader br = null; - String content = null; + try { - List binarySettings = new ArrayList(); + br = new BufferedReader(new FileReader(saveFile)); - while (null != (content = br.readLine())) { - InputRow inputRow = new InputRow(inputComposite); - String[] splitContent = content - .split(CommonConstants.COMMA); - inputRow.setBinaryText(new String(splitContent[0])); - inputRow.setDebugText(new String(splitContent[3])); - inputRow.setSourceText(new String(splitContent[4])); ++ BinarySettingManager.getInstance().openData(br); ++ List binarySettings = BinarySettingManager.getInstance() ++ .getBinarySettingList(); ++ ++ for (int i = 0; i < binarySettings.size(); i++) { ++ InputRow inputRow = new InputRow(inputComposite, removeButtonListener); ++ inputRow.setBinaryText(binarySettings.get(i).getBinaryPath()); ++ inputRow.setDebugText(binarySettings.get(i).getDebugRpmPath()); ++ inputRow.setSourceText(binarySettings.get(i).getUserSourceDir()); + inputRowList.add(inputRow); - inputRowHash.put(inputRow.getBinaryText(), inputRow); - - BinarySettingData binaryData = new BinarySettingData(); - binaryData.loadSaveData(content); - binarySettings.add(binaryData); + } + - BinarySettingManager.getInstance().putRealBinarySettingData( - binarySettings); + BinarySettingProgressManager.getInstance().startProcessStart( + "now loading binaries..."); + BinarySettingProcessor.runLoadingThread(me); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + CommonUtil.tryClose(br); + } + } + }; + + private DACustomButtonClickEventListener debugRootButtonListener = new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { + FileExplorerDialog dialog = new FileExplorerDialog(getShell()); + dialog.getExplorer().setRoot(CommonUtil.getHomeDirectory()); + Object result = dialog.open(); + if (result != null) { + @SuppressWarnings("unchecked") + List files = (List) result; + if (!files.isEmpty()) { + File file = files.get(0); + if (!file.isDirectory()) { + file = file.getParentFile(); + } + rootPath = file.getAbsolutePath(); + } + + if (null != rootPath) { + BinarySettingProgressManager.getInstance() + .startProcessStart("Wait for update debug path"); + BinarySettingProcessor.runUpdateDebugRoot(me); + BinarySettingManager.getInstance().setDebugRoot(rootPath); + } + } + } + }; ++ + private DACustomButtonClickEventListener saveButtonListener = new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { - SaveSettingDialog dialog = new SaveSettingDialog(button.getParent() - .getShell(), inputRowList); ++ SaveSettingDialog dialog = new SaveSettingDialog(button.getParent().getShell(), ++ inputRowList); + dialog.open(); + } + }; + + private DACustomButtonClickEventListener cleanButtonListener = new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { + if (null != button) { + WarningDialog dialog = new WarningDialog(getShell(), SWT.NONE); + dialog.setMessage("Clear binary settings?\nIf you click 'Ok', All settings will be deleted"); + boolean result = dialog.open(); + if (!result) { + return; + } + } - List binaries = BinarySettingManager - .getInstance().getRealBinarySettings(); ++ List binaries = BinarySettingManager.getInstance() ++ .getBinarySettingList(); + if (!binaries.isEmpty()) { - DACommunicator.sendSWAPMessage( - AnalyzerConstants.MSG_SWAP_INST_REMOVE, binaries); ++ DACommunicator.sendSWAPMessage(AnalyzerConstants.MSG_SWAP_INST_REMOVE, binaries); + + for (int i = 0; i < inputRowList.size(); i++) { - BinarySettingManager.getInstance() - .removeRealBinarySettingData( - inputRowList.get(i).getBinaryText()); ++ BinarySettingManager.getInstance().removeBinarySettingData( ++ inputRowList.get(i).getBinaryText()); + inputRowList.get(i).dispose(); + } + inputRowList.clear(); - inputRowHash.clear(); + } + + updateLayout(); + } + }; + + private void clearLayout() { + for (int i = 0; i < inputRowList.size(); i++) { + inputRowList.get(i).dispose(); + } + inputRowList.clear(); - inputRowHash.clear(); + } + + public SettingDialogBinarySettingsPage(Composite parent, int style) { + super(parent, style); + me = this; + setTitle("Binary Settings"); // TODO nl - rootPath = PathManager - .getRootstrapsPath(SettingDataManager.getInstance().getPlatform()); - inputRowHash = BinarySettingManager.getInstance().getInputRowHash(); - inputRowList = BinarySettingManager.getInstance().getInputRowList(); ++ rootPath = PathManager.getRootstrapsPath(SettingDataManager.getInstance().getPlatform()); ++ inputRowList = new ArrayList(); ++ + + String settingPath = PathManager.DA_SETTING_PATH; + File settingFolder = new File(settingPath); + if (!settingFolder.exists() || !settingFolder.isDirectory()) { + if (!settingFolder.mkdirs()) { + Logger.debug("setting directory create failed..."); + } + } + + this.setLayout(new FormLayout()); + this.setBackground(ColorResources.DIALOG_BG_UPPER); + - int libCount = BinarySettingManager.getInstance() - .getRealBinarySettings().size(); ++ int libCount = BinarySettingManager.getInstance().getBinarySettingList().size(); + librariesLabel = new Label(this, SWT.TRANSPARENT); + FormData data = new FormData(); + data.top = new FormAttachment(0, 15); + data.left = new FormAttachment(0, 16); + data.height = 16; + data.width = 100; + librariesLabel.setLayoutData(data); + librariesLabel.setText("Libraies (" + libCount + ")"); + librariesLabel.setBackground(ColorResources.DIALOG_BG_UPPER); + librariesLabel.setFont(FontResources.getDADefaultFont()); + - scrolledComposite = new ScrolledComposite(this, SWT.BORDER - | SWT.V_SCROLL | SWT.H_SCROLL); ++ scrolledComposite = new ScrolledComposite(this, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); + data = new FormData(); + data.top = new FormAttachment(librariesLabel, 4); + data.left = new FormAttachment(0, 6); + data.right = new FormAttachment(100, -6); + data.height = 310; + // data.width = 590; + scrolledComposite.setLayoutData(data); + scrolledComposite.setLayout(new FormLayout()); + scrolledComposite.setExpandHorizontal(true); + scrolledComposite.setExpandVertical(true); - scrolledComposite - .setBackground(ColorResources.BINARY_SETTINGS_INPUT_BOX_COLOR); ++ scrolledComposite.setBackground(ColorResources.BINARY_SETTINGS_INPUT_BOX_COLOR); + + inputComposite = new Composite(scrolledComposite, SWT.NONE); + scrolledComposite.setContent(inputComposite); - scrolledComposite.setMinSize(inputComposite.computeSize(SWT.DEFAULT, - SWT.DEFAULT)); ++ scrolledComposite.setMinSize(inputComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); + scrolledComposite.setShowFocusedControl(true); + data = new FormData(); + data.top = new FormAttachment(0, 5); + data.left = new FormAttachment(0, 0); + data.right = new FormAttachment(100, 0); + data.bottom = new FormAttachment(100, -5); + inputComposite.setLayoutData(data); + inputComposite.setLayout(new FormLayout()); - inputComposite - .setBackground(ColorResources.BINARY_SETTINGS_INPUT_BOX_COLOR); ++ inputComposite.setBackground(ColorResources.BINARY_SETTINGS_INPUT_BOX_COLOR); + + loadButton = new DAButton(this, SWT.NONE); + data = new FormData(); + data.top = new FormAttachment(scrolledComposite, 17); + data.left = new FormAttachment(0, 6); + data.height = 22; + data.width = 78; + loadButton.setLayoutData(data); + loadButton.setText("Load"); + loadButton.addClickListener(loadButtonListener); + + saveButton = new DAButton(this, SWT.NONE); + data = new FormData(); + data.top = new FormAttachment(scrolledComposite, 17); + data.left = new FormAttachment(loadButton, 6); + data.height = 22; + data.width = 78; + saveButton.setLayoutData(data); + saveButton.setText("Save"); + saveButton.addClickListener(saveButtonListener); + + debugRootButton = new DAButton(this, SWT.NONE); + data = new FormData(); + data.top = new FormAttachment(scrolledComposite, 17); + data.left = new FormAttachment(saveButton, 32); + data.height = 22; + data.width = 112; + debugRootButton.setLayoutData(data); + debugRootButton.setText("Set DebugRoot"); + debugRootButton.addClickListener(debugRootButtonListener); + + clearButton = new DAButton(this, SWT.NONE); + data = new FormData(); + data.top = new FormAttachment(scrolledComposite, 17); + data.right = new FormAttachment(100, -6); + data.height = 22; + data.width = 78; + clearButton.setLayoutData(data); + clearButton.setText("Clear"); + clearButton.addClickListener(cleanButtonListener); + + addButton = new DAButton(this, SWT.NONE); + data = new FormData(); + data.top = new FormAttachment(scrolledComposite, 17); + data.right = new FormAttachment(clearButton, -6); + data.height = 22; + data.width = 78; + addButton.setLayoutData(data); + addButton.setText("Add"); + addButton.addClickListener(addButtonListener); + - inputRowList.clear(); - inputRowHash.clear(); - + this.addListener(SWT.Show, new Listener() { + + @Override + public void handleEvent(Event event) { + initInputRows(); + } + }); + + this.addListener(SWT.Dispose, new Listener() { + + @Override + public void handleEvent(Event event) { + } + }); + } + + public void doApply() { + // dirty check and update path + for (InputRow inputRow : inputRowList) { + String binary = inputRow.getBinaryText(); + String debug = inputRow.getDebugText(); + String source = inputRow.getSourceText(); - BinarySettingData binData = BinarySettingManager.getInstance() - .getRealBinarySetting(binary); ++ BinarySettingData binData = BinarySettingManager.getInstance().getBinarySetting(binary); + if (binData != null) { + binData.setDebugRpmPath(debug); - binData.setUserSourcePath(source); ++ binData.setUserSourceDir(source); + } else { + Logger.debug("binary data is null"); + } + } + + Logger.debug("update complete!"); + } + + public void doClose() { - String targetPath = PathManager.DA_BINARY_AUTO_SAVE_FILE; - - File saveFile = new File(targetPath); - FileWriter fileWriter = null; - BufferedWriter bufWriter = null; - - List saveData = BinarySettingManager.getInstance() - .getRealBinarySettings(); - - boolean success = false; - try { - fileWriter = new FileWriter(saveFile); - bufWriter = new BufferedWriter(fileWriter); - for (int i = 0; i < saveData.size(); i++) { - bufWriter.write(saveData.get(i).getSaveData()); - bufWriter.newLine(); - } - success = true; - } catch (IOException e) { - e.printStackTrace(); - } finally { - CommonUtil.tryClose(bufWriter, fileWriter); - } - - if (success) { - // add snapshot model update - Logger.debug("binary settings auto save success!!"); //$NON-NLS-1$ - - } else { - Logger.debug("binary settings auto save fail..."); //$NON-NLS-1$ - } + } + + public void initInputRows() { + List binData = null; - binData = BinarySettingManager.getInstance().getRealBinarySettings(); ++ binData = BinarySettingManager.getInstance().getBinarySettingList(); + clearLayout(); + for (int i = 0; i < binData.size(); i++) { - InputRow inputRow = new InputRow(inputComposite); ++ InputRow inputRow = new InputRow(inputComposite, removeButtonListener); + inputRow.setBinaryText(binData.get(i).getBinaryPath()); + // String debug = binData.get(i).getDebugFilePath(); + String debug = binData.get(i).getDebugRpmPath(); + if (null != debug && !debug.isEmpty()) { + inputRow.setDebugText(debug); + } else { + inputRow.setDebugText(CommonConstants.EMPTY); + } + - String source = binData.get(i).getUserSourcePath(); ++ String source = binData.get(i).getUserSourceDir(); + if (null != source && !source.isEmpty()) { + inputRow.setSourceText(source); + } else { - source = binData.get(i).getDebugSourcePath(); ++ source = binData.get(i).getRpmSourceDir(); + if (null != source && !source.isEmpty()) { + inputRow.setSourceText(source); + } else { + inputRow.setSourceText(CommonConstants.EMPTY); + } + } - inputRowHash.put(binData.get(i).getBinaryPath(), inputRow); + inputRowList.add(inputRow); + } + updateLayout(); + } + ++ private void removeInputRow(String path) { ++ InputRow prev = null; ++ InputRow cur = null; ++ InputRow next = null; ++ ++ for (int i = 0; i < inputRowList.size(); i++) { ++ // define prev, cur, next inputRow ++ if (i != 0) { ++ prev = cur; ++ } ++ cur = inputRowList.get(i); ++ if (i != inputRowList.size() - 1) { ++ next = inputRowList.get(i + 1); ++ } else { ++ next = null; ++ } ++ ++ if (cur.getBinaryText().equals(path)) { ++ // modify layout of next input row ++ if (next != null) { ++ FormData nextData = (FormData) next.getLayoutData(); ++ if (prev != null) { ++ nextData.top = new FormAttachment(prev, 2); ++ } else { ++ nextData.top = new FormAttachment(0, 0); ++ } ++ } ++ ++ // remove from row list ++ inputRowList.remove(i); ++ break; ++ } ++ } ++ } ++ + public void updateLayout() { - int count = BinarySettingManager.getInstance().getRealBinarySettings() - .size(); ++ int count = BinarySettingManager.getInstance().getBinarySettingList().size(); + librariesLabel.setText("Libraries (" + count + ")"); + inputComposite.layout(); - scrolledComposite.setMinSize(inputComposite.computeSize(SWT.DEFAULT, - SWT.DEFAULT)); ++ scrolledComposite.setMinSize(inputComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); + if (count == 0) { + saveButton.setButtonEnabled(false); + clearButton.setButtonEnabled(false); + } else { + saveButton.setButtonEnabled(true); + clearButton.setButtonEnabled(true); + } + } + + public String getDebugRootPath() { + return rootPath; + } +}