# HG changeset patch # User haismail # Date 1266474036 -7200 # Node ID d5efbe6c22e8437ed34f1d13b03842b3a60aa5c2 # Parent 77337b2717f2e8edc67217971c38ee7dc630e6f8 Ticket #1245: Update target selection required to avoid yellow warnings on content tab Ticket #1135: As a iMaker plugin user i want to reload available configurations (reload the current configuration) diff -r 77337b2717f2 -r d5efbe6c22e8 imakerplugin/com.nokia.s60tools.imaker/doc/change_log_3_0_0.txt --- a/imakerplugin/com.nokia.s60tools.imaker/doc/change_log_3_0_0.txt Thu Feb 11 10:40:36 2010 +0200 +++ b/imakerplugin/com.nokia.s60tools.imaker/doc/change_log_3_0_0.txt Thu Feb 18 08:20:36 2010 +0200 @@ -15,6 +15,8 @@ Ticket #1188: As a Carbide.c++ user I want to modify my .IMP file using iMaker plugin Ticket #1137: Rename debug tab in iMaker plugin to something else Ticket #1055: As a SW developer I don't want to have temporary files in my Carbide.c++ workspace +Ticket #1245: Update target selection required to avoid yellow warnings on content tab +Ticket #1135: As a iMaker plugin user i want to reload available configurations (reload the current configuration) Enhancements License changed from SFL to EPL diff -r 77337b2717f2 -r d5efbe6c22e8 imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/IIMakerWrapper.java --- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/IIMakerWrapper.java Thu Feb 11 10:40:36 2010 +0200 +++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/IIMakerWrapper.java Thu Feb 18 08:20:36 2010 +0200 @@ -134,5 +134,5 @@ * @param monitor, monitor object * @return */ - public abstract String getTargetSteps(String target,String makefile, IProgressMonitor monitor); + public abstract String getTargetSteps(String target,String makefile, IProgressMonitor monitor) throws IMakerCoreExecutionException; } \ No newline at end of file diff -r 77337b2717f2 -r d5efbe6c22e8 imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/UIConfiguration.java --- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/UIConfiguration.java Thu Feb 11 10:40:36 2010 +0200 +++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/UIConfiguration.java Thu Feb 18 08:20:36 2010 +0200 @@ -321,6 +321,11 @@ return null; } + public void reload() throws Throwable { + loaded = false; + load(); + } + public void load() throws Throwable { if(loaded ) { return; diff -r 77337b2717f2 -r d5efbe6c22e8 imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/Environment.java --- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/Environment.java Thu Feb 11 10:40:36 2010 +0200 +++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/Environment.java Thu Feb 18 08:20:36 2010 +0200 @@ -189,7 +189,11 @@ // @Override public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { - targetSteps = wrapper.getTargetSteps(target, getCurrentProduct().getFilePath(), monitor); + try { + targetSteps = wrapper.getTargetSteps(target, getCurrentProduct().getFilePath(), monitor); + } catch (IMakerCoreExecutionException e) { + throw new InvocationTargetException(e); + } } }); } catch (InvocationTargetException e) { diff -r 77337b2717f2 -r d5efbe6c22e8 imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/DebugTab.java --- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/DebugTab.java Thu Feb 11 10:40:36 2010 +0200 +++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/DebugTab.java Thu Feb 18 08:20:36 2010 +0200 @@ -18,6 +18,7 @@ package com.nokia.s60tools.imaker.internal.viewers; import java.io.File; +import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; @@ -335,9 +336,8 @@ } } } - String message = Messages.getString("DebugTab.0"); - entry.setStatusMessage(message.replace("xxx", location.substring(1))); - return true; + mainTab.addTarget(entry.getLocation().getName()); + return false; } private boolean isError(Object element) { @@ -463,7 +463,9 @@ */ public void addToProperties(ImakerProperties prop) { ImageContent input = getInput(); - prop.put(IMakerKeyConstants.DEBUGFILES, input.getEntries()); + List ls = new ArrayList(); + ls.addAll(input.getEntries()); + prop.put(IMakerKeyConstants.DEBUGFILES, ls); } diff -r 77337b2717f2 -r d5efbe6c22e8 imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/IMakerTabsViewer.java --- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/IMakerTabsViewer.java Thu Feb 11 10:40:36 2010 +0200 +++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/IMakerTabsViewer.java Thu Feb 18 08:20:36 2010 +0200 @@ -76,6 +76,7 @@ private IEnvironmentManager environmentManager; private PreferencesTab tabPreferences; private Button fRestoreButton; + private Button fReloadButton; private SettingsTab tabSettings; private Combo fConfigWidget; private Button deleteButton; @@ -257,6 +258,7 @@ Composite buttonComp = new Composite(mainComp, SWT.NONE); GridLayout buttonCompLayout = new GridLayout(); buttonCompLayout.numColumns = 2; + buttonCompLayout.makeColumnsEqualWidth = false; buttonComp.setLayout(buttonCompLayout); gd = new GridData(GridData.FILL_HORIZONTAL); buttonComp.setLayoutData(gd); @@ -273,6 +275,18 @@ } }); + fReloadButton = new Button(buttonComp, SWT.PUSH); + fReloadButton.setText(Messages.getString("IMakerTabsViewer.12")); //$NON-NLS-1$ + fReloadButton.setToolTipText(Messages.getString("IMakerTabsViewer.13")); //$NON-NLS-1$ + gd = new GridData(GridData.HORIZONTAL_ALIGN_END); + fReloadButton.setLayoutData(gd); + SWTFactory.setButtonWidthHint(fReloadButton); + fReloadButton.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent evt) { + handleReloadPressed(); + } + }); + Dialog.applyDialogFont(parent); } @@ -287,12 +301,14 @@ tabPreferences.restore(); } + private void handleReloadPressed() { + tabPreferences.reload(getSelectedItem()); + } + protected void handleRevertPressed() { if(fTabFolder.getSelection() == tabSettings) { tabPreferences.refreshSettingsTab(null); - } else { -// tabPreferences.revert(); - } + } else {} } /** diff -r 77337b2717f2 -r d5efbe6c22e8 imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/PreferencesTab.java --- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/PreferencesTab.java Thu Feb 11 10:40:36 2010 +0200 +++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/viewers/PreferencesTab.java Thu Feb 18 08:20:36 2010 +0200 @@ -393,9 +393,12 @@ // @Override public void widgetSelected(SelectionEvent se) { - String item = listTarget.getItem(listTarget.getSelectionIndex()); - UIConfiguration p = activeEnvironment.getCurrentProduct(); - listTarget.setToolTipText(p.getTarget(item).getDescription()); + int index = listTarget.getSelectionIndex(); + if(index!=-1) { + String item = listTarget.getItem(index); + UIConfiguration p = activeEnvironment.getCurrentProduct(); + listTarget.setToolTipText(p.getTarget(item).getDescription()); + } } // @Override @@ -493,7 +496,7 @@ UITarget tr = pr.getTarget(target); if(tr.getSteps()==null) { String targetSteps = activeEnvironment.getTargetSteps(target); - tr.setSteps(targetSteps); + tr.setSteps(targetSteps); } } } @@ -543,7 +546,7 @@ List configs; try { configs = activeEnvironment.getConfigurations(); - UIConfiguration ret = null; + UIConfiguration ret = getSelectedProduct(); for (UIConfiguration config : configs) { if(config.isDefaultConfig()) { ret = config; @@ -640,7 +643,7 @@ } } - private Properties getUIValues() { + private ImakerProperties getUIValues() { ImakerProperties prop = new ImakerProperties(); try { UIConfiguration config = (UIConfiguration) textProduct.getData(); @@ -1001,4 +1004,28 @@ public UIConfiguration getSelectedProduct() { return activeEnvironment.getCurrentProduct(); } + + + /** + * Add the given target to the list of selected targets if + * it is not already there + * @param name + */ + public void addTarget(String newTarget) { + addToListTarget(new String[]{newTarget.toLowerCase()}); + } + + + public void reload(String selection) { + if(ProjectManager.NEW_ITEM.equals(selection)) { + try { + ImakerProperties ui = getUIValues(); + getSelectedProduct().reload(); + fillUIForm(ui); + } catch (Throwable e) { + StatusHandler.handle(IStatus.ERROR,"An error has occurred while executing iMaker Core.",e); + return; + } + } + } } diff -r 77337b2717f2 -r d5efbe6c22e8 imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/wrapper/IMakerWrapper.java --- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/wrapper/IMakerWrapper.java Thu Feb 11 10:40:36 2010 +0200 +++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/wrapper/IMakerWrapper.java Thu Feb 18 08:20:36 2010 +0200 @@ -816,10 +816,21 @@ return this.tool; } - public String getTargetSteps(String target, String makefile, IProgressMonitor monitor) { + public String getTargetSteps(String target, String makefile, IProgressMonitor monitor) throws IMakerCoreExecutionException { if (monitor != null) { - monitor.beginTask(Messages.getString("IMakerWrapper.24"),2); - monitor.subTask(Messages.getString("IMakerWrapper.25")); + monitor.beginTask(Messages.getString("IMakerWrapper.29"),10); + } + String ret = getTargetSteps2(target, makefile, monitor,false); + if(monitor!=null) { + monitor.done(); + } + return ret; + } + + private String getTargetSteps2(String target, String makefile, + IProgressMonitor monitor, boolean isRestart) throws IMakerCoreExecutionException { + if(monitor!=null) { + monitor.subTask(Messages.getString("IMakerWrapper.30")+ target); } Pattern pattern = Pattern.compile(".*\\s*=\\s*.(.*)."); List cmd = new ArrayList(); @@ -827,37 +838,54 @@ cmd.add(makefile); cmd.add(target); cmd.add(IMakerWrapperPreferences.TARGET_STEPS); - try { - if(monitor!=null) { - monitor.worked(1); - monitor.subTask(Messages.getString("IMakerWrapper.26")); + if(isRestart) { + cmd.add(IMakerWrapperPreferences.TARGET_STEPS_RESTARTS); + } + StringBuilder sb = new StringBuilder(); + List ret = executeCommand(cmd,null); + for (String str : ret) { + Matcher matcher = pattern.matcher(str); + if(matcher.find()) { + int end = matcher.end(1); + int start = matcher.start(1); + String retValue = str.substring(start,end); + if(retValue.contains(" RESTART")) { + String subRet = getTargetSteps2(target,makefile,monitor,true); + if(subRet!=null) sb.append(subRet); + } else { + String[] parts = retValue.split(" "); + + for (int i = 0; i < parts.length; i++) { + String p = parts[i]; + if(isTarget(p)) { + String subRet = getTargetSteps2(p,makefile,monitor, false); + if(subRet!=null) sb.append(subRet); + } else { + sb.append(p); + sb.append(" "); + } + } + } + break; } - StringBuilder sb = new StringBuilder(); - List ret = executeCommand(cmd,null); - for (String str : ret) { - Matcher matcher = pattern.matcher(str); - if(matcher.find()) { - int end = matcher.end(1); - int start = matcher.start(1); - String retValue = str.substring(start,end); - if(monitor!=null) { - monitor.worked(1); - monitor.done(); - } - sb.append(retValue); - sb.append(" "); - } - } - String str = sb.toString(); - if(str.equals("")) { - return null; - } else { - return str; - } - } catch (IMakerCoreExecutionException e) { - e.printStackTrace(); + } + String str = sb.toString(); + if(monitor!=null) { + monitor.worked(1); } - return null; + if(str.equals("")) { + return null; + } else { + return str; + } + } + + private boolean isTarget(String p) { + if(p!=null) { + String pl = p.toLowerCase(); + return pl.equals(p); + } + return false; } public boolean buildImage(File impFile, OutputStream out) diff -r 77337b2717f2 -r d5efbe6c22e8 imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/wrapper/IMakerWrapperPreferences.java --- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/wrapper/IMakerWrapperPreferences.java Thu Feb 11 10:40:36 2010 +0200 +++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/wrapper/IMakerWrapperPreferences.java Thu Feb 18 08:20:36 2010 +0200 @@ -62,4 +62,5 @@ public static final String PLATSIM_STEP = "step-PLATBLD"; public static final String USE_PLATSIM = "USE_PLATSIM"; public static final String TARGET_STEPS = "print-IMAKER_STEPS"; + public static final String TARGET_STEPS_RESTARTS = "IMAKER_MKRESTARTS=1"; } diff -r 77337b2717f2 -r d5efbe6c22e8 imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/messages.properties --- a/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/messages.properties Thu Feb 11 10:40:36 2010 +0200 +++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/messages.properties Thu Feb 18 08:20:36 2010 +0200 @@ -36,6 +36,8 @@ IMakerTabsViewer.9=PlatSim IMakerTabsViewer.10=Configure PlatSim instance settings IMakerTabsViewer.11=Restore default configuration +IMakerTabsViewer.12=Reload +IMakerTabsViewer.13=Reload selected configuration Flashmenu.0=iMaker plugin preferences doesn't contain valid information. Please verify the preferences you provided. Flashmenu.1=Build preferences are not set. Set build preferences by selecting 'Preferences...' from iMaker Plugin's menu. Flashmenu.4=TYPE=prd @@ -82,6 +84,8 @@ IMakerWrapper.26=Getting target information from iMaker...please wait. IMakerWrapper.27=Make sure that iMaker cmd (xxx) exists. IMakerWrapper.28=command: +IMakerWrapper.29=Fetching target steps please wait... +IMakerWrapper.30=Processing... SettingsTable.header0=Parameter SettingsTable.header1=Value SettingsTable.header2=Value format