Browse Source

148190#35

tags/Root_extensions
aclement 17 years ago
parent
commit
8559a350a4

+ 30
- 0
ajde/src/org/aspectj/ajde/IRuntimeProperties.java View File

@@ -0,0 +1,30 @@
/********************************************************************
* Copyright (c) 2007 Contributors. All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://eclipse.org/legal/epl-v10.html
*
* Contributors: IBM Corporation - initial API and implementation
* Helen Hawkins - initial version (bug 148190)
*******************************************************************/
package org.aspectj.ajde;

/**
* Interface to enable users to specify which class to run
*/
public interface IRuntimeProperties {

/**
* @return class which contains the main method and should
* be used to run the application
*/
public String getClassToExecute();
/**
* @return args which should be used as part of the execution
* of the application
*/
public String getExecutionArgs();
}

+ 27
- 0
ajde/src/org/aspectj/ajde/IUIBuildMessageHandler.java View File

@@ -0,0 +1,27 @@
/********************************************************************
* Copyright (c) 2007 Contributors. All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://eclipse.org/legal/epl-v10.html
*
* Contributors: IBM Corporation - initial API and implementation
* Helen Hawkins - initial version (bug 148190)
*******************************************************************/
package org.aspectj.ajde;

import org.aspectj.ajde.core.IBuildMessageHandler;

/**
* Extension to the IBuildMessageHandler to be used if only one BuildMessageHandler
* is going to be used for all projects/build configuration files. Provides a method
* for resetting the state of the BuildMessageHandler between compiles
*/
public interface IUIBuildMessageHandler extends IBuildMessageHandler {

/**
* Reset the state of the message handler
*/
public void reset();
}

+ 158
- 0
ajde/src/org/aspectj/ajde/IconRegistry.java View File

@@ -0,0 +1,158 @@
/* *******************************************************************
* Copyright (c) 1999-2001 Xerox Corporation,
* 2002 Palo Alto Research Center, Incorporated (PARC).
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Xerox/PARC initial implementation
* ******************************************************************/


package org.aspectj.ajde;

import javax.swing.*;

import org.aspectj.ajde.ui.*;
import org.aspectj.asm.*;
import org.aspectj.asm.IProgramElement;

/**
* Default icons. Override behavior for custom icons.
*
* @author Mik Kersten
*/
public class IconRegistry extends AbstractIconRegistry {

//public static IconRegistry INSTANCE = null;
protected String RESOURCE_PATH = "org/aspectj/ajde/resources/";
private final Icon START_AJDE = makeIcon("actions/startAjde.gif");
private final Icon STOP_AJDE = makeIcon("actions/stopAjde.gif");
private final Icon BUILD = makeIcon("actions/build.gif");
private final Icon DEBUG = makeIcon("actions/debug.gif");
private final Icon EXECUTE = makeIcon("actions/execute.gif");
private final Icon AJBROWSER = makeIcon("structure/advice.gif");
private final Icon AJBROWSER_ENABLED = makeIcon("actions/browserEnabled.gif");
private final Icon AJBROWSER_DISABLED = makeIcon("actions/browserDisabled.gif");
private final Icon STRUCTURE_VIEW = makeIcon("actions/structureView.gif");

private final Icon HIDE_ASSOCIATIONS = makeIcon("actions/hideAssociations.gif");
private final Icon HIDE_NON_AJ = makeIcon("actions/hideNonAJ.gif");
private final Icon GRANULARITY = makeIcon("actions/granularity.gif");
private final Icon AJDE_SMALL = makeIcon("actions/ajdeSmall.gif");

private final Icon ERROR = makeIcon("structure/error.gif");
private final Icon WARNING = makeIcon("structure/warning.gif");
private final Icon INFO = makeIcon("structure/info.gif");

private final Icon POPUP = makeIcon("actions/popup.gif");
private final Icon FILTER = makeIcon("actions/filter.gif");
private final Icon RELATIONS = makeIcon("actions/relations.gif");
private final Icon ORDER = makeIcon("actions/order.gif");
private final Icon ZOOM_STRUCTURE_TO_FILE_MODE = makeIcon("actions/zoomStructureToFileMode.gif");
private final Icon ZOOM_STRUCTURE_TO_GLOBAL_MODE = makeIcon("actions/zoomStructureToGlobalMode.gif");
private final Icon SPLIT_STRUCTURE_VIEW = makeIcon("actions/splitStructureView.gif");
private final Icon MERGE_STRUCTURE_VIEW = makeIcon("actions/mergeStructureView.gif");
private final Icon BACK = makeIcon("actions/back.gif");
private final Icon FORWARD = makeIcon("actions/forward.gif");
private final Icon SEARCH = makeIcon("actions/search.gif");
private final Icon OPEN_CONFIG = makeIcon("actions/openConfig.gif");
private final Icon CLOSE_CONFIG = makeIcon("actions/closeConfig.gif");
private final Icon SAVE = makeIcon("actions/save.gif");
private final Icon SAVE_ALL = makeIcon("actions/saveAll.gif");
private final Icon BROWSER_OPTIONS = makeIcon("actions/browseroptions.gif");
private final Icon ACCESSIBILITY_PUBLIC = makeIcon("structure/accessibility-public.gif");
private final Icon ACCESSIBILITY_PACKAGE = makeIcon("structure/accessibility-package.gif");
private final Icon ACCESSIBILITY_PROTECTED = makeIcon("structure/accessibility-protected.gif");
private final Icon ACCESSIBILITY_PRIVATE = makeIcon("structure/accessibility-private.gif");
private final Icon ACCESSIBILITY_PRIVILEGED = makeIcon("structure/accessibility-privileged.gif");

public Icon getAjdeSmallIcon() { return AJDE_SMALL; }
public Icon getHideAssociationsIcon() { return HIDE_ASSOCIATIONS; }
public Icon getHideNonAJIcon() { return HIDE_NON_AJ; }
public Icon getGranularityIcon() { return GRANULARITY; }
public Icon getErrorIcon() { return ERROR; }
public Icon getWarningIcon() { return WARNING; }
public Icon getInfoIcon() { return INFO; }
public Icon getAJBrowserIcon() { return AJBROWSER; }
public Icon getAJBrowserEnabledIcon() { return AJBROWSER_ENABLED; }
public Icon getAJBrowserDisabledIcon() { return AJBROWSER_DISABLED; }
public Icon getPopupIcon() { return POPUP; }
public Icon getFilterIcon() { return FILTER; }
public Icon getOrderIcon() { return ORDER; }
public Icon getRelationsIcon() { return RELATIONS; }
public Icon getStartAjdeIcon() { return START_AJDE; }
public Icon getStopAjdeIcon() { return STOP_AJDE; }
public Icon getBackIcon() { return BACK; }
public Icon getForwardIcon() { return FORWARD; }
public Icon getSearchIcon() { return SEARCH; }
public Icon getBuildIcon() { return BUILD; }
public Icon getDebugIcon() { return DEBUG; }
public Icon getExecuteIcon() { return EXECUTE; }
public Icon getOpenConfigIcon() { return OPEN_CONFIG; }
public Icon getCloseConfigIcon() { return CLOSE_CONFIG; }
public Icon getOpenIcon() { return OPEN_CONFIG; }
public Icon getSaveIcon() { return SAVE; }
public Icon getSaveAllIcon() { return SAVE_ALL; }
public Icon getBrowserOptionsIcon() { return BROWSER_OPTIONS; }
public Icon getZoomStructureToFileModeIcon() { return ZOOM_STRUCTURE_TO_FILE_MODE; }
public Icon getZoomStructureToGlobalModeIcon() { return ZOOM_STRUCTURE_TO_GLOBAL_MODE; }
public Icon getSplitStructureViewIcon() { return SPLIT_STRUCTURE_VIEW; }
public Icon getMergeStructureViewIcon() { return MERGE_STRUCTURE_VIEW; }
public Icon getStructureViewIcon() { return STRUCTURE_VIEW; }

public Icon getAssociationSwingIcon(IRelationship.Kind relation) {
return convertToSwingIcon(getIcon(relation));
}
public AbstractIcon getStructureIcon(IProgramElement.Kind kind, IProgramElement.Accessibility accessibility) {
return getIcon(kind);
}
public Icon getStructureSwingIcon(IProgramElement.Kind kind, IProgramElement.Accessibility accessibility) {
return convertToSwingIcon(getStructureIcon(kind, accessibility));
}
public Icon getStructureSwingIcon(IProgramElement.Kind kind) {
return convertToSwingIcon(getIcon(kind));
}

public Icon getAccessibilitySwingIcon(IProgramElement.Accessibility accessibility) {
if (accessibility == IProgramElement.Accessibility.PUBLIC) {
return ACCESSIBILITY_PUBLIC;
} else if (accessibility == IProgramElement.Accessibility.PACKAGE) {
return ACCESSIBILITY_PACKAGE;
} else if (accessibility == IProgramElement.Accessibility.PROTECTED) {
return ACCESSIBILITY_PROTECTED;
} else if (accessibility == IProgramElement.Accessibility.PRIVATE) {
return ACCESSIBILITY_PRIVATE;
} else if (accessibility == IProgramElement.Accessibility.PRIVILEGED) {
return ACCESSIBILITY_PRIVILEGED;
} else {
return null;
}
}

public Icon convertToSwingIcon(AbstractIcon iconAdapter) {
if (iconAdapter != null) {
return (Icon)iconAdapter.getIconResource();
} else {
return null;
}
}

protected AbstractIcon createIcon(String path) {
return new AbstractIcon(new ImageIcon(ClassLoader.getSystemResource(path)));
}

protected Icon makeIcon(String iconPath) {
return new ImageIcon(ClassLoader.getSystemResource(RESOURCE_PATH + iconPath));
}
}

+ 23
- 0
ajde/src/org/aspectj/ajde/IdeUIAdapter.java View File

@@ -0,0 +1,23 @@
/* *******************************************************************
* Copyright (c) 1999-2001 Xerox Corporation,
* 2002 Palo Alto Research Center, Incorporated (PARC).
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Xerox/PARC initial implementation
* ******************************************************************/


package org.aspectj.ajde;

/**
* @author Mik Kersten
*/
public interface IdeUIAdapter {

public void displayStatusInformation(String message);
}

+ 37
- 0
ajde/src/org/aspectj/ajde/internal/BuildConfigListener.java View File

@@ -0,0 +1,37 @@
/* *******************************************************************
* Copyright (c) 1999-2001 Xerox Corporation,
* 2002 Palo Alto Research Center, Incorporated (PARC).
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Xerox/PARC initial implementation
* ******************************************************************/



package org.aspectj.ajde.internal;

import java.util.EventListener;
import java.util.List;

/**
* @author Mik Kersten
*/
public interface BuildConfigListener extends EventListener {

/**
* Called when the current configuration has changed.
*
* @param configFilePath the path to the new current configuration file
*/
public void currConfigChanged(String configFilePath);

/**
* Called when items are added to or deleted from the configurations list.
*/
public void configsListUpdated(List configsList);
}

+ 99
- 0
ajde/src/org/aspectj/ajde/internal/BuildConfigManager.java View File

@@ -0,0 +1,99 @@
/* *******************************************************************
* Copyright (c) 1999-2001 Xerox Corporation,
* 2002 Palo Alto Research Center, Incorporated (PARC).
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Xerox/PARC initial implementation
* ******************************************************************/

package org.aspectj.ajde.internal;

import java.util.List;

import org.aspectj.ajde.ui.BuildConfigModel;

/**
* @author Mik Kersten
*/
public interface BuildConfigManager {
public static final String CONFIG_FILE_SUFFIX = ".lst";
public static final String DEFAULT_CONFIG_LABEL = "<all project files>";
/**
* Returns the currently active build configuration file. The current active
* build configuration file that is set in this class is used for building and
* for updating the structure model.
*
* @return full path to the file
*/
public String getActiveConfigFile();
/**
* Sets the currently active build configuration file.
*
* @param full path to the file
*/
public void setActiveConfigFile(String currConfigFilePath);

/**
* Add a listner that will be notified of build configuration change events
*/
public void addListener(BuildConfigListener configurationListener);

/**
* Remove a configuration listener.
*/
public void removeListener(BuildConfigListener configurationListener);
/**
* Build a model for the corresponding configuration file.
*
* @param full path to the file
*/
public BuildConfigModel buildModel(String configFilePath);
/**
* Save the given configuration model to the file that it was generated from.
*/
public void writeModel(BuildConfigModel model);
/**
* Write a list of source files into a configuration file. File paths will be
* written relative to the path of the configuration file.
*/
public void writePaths(String configFilePath, List paths);
/**
* Add files to a configuration.
*
* @param configFilePath full path to the configuration file
* @param files list of full paths to the files to be added
*/
public void addFilesToConfig(String configFilePath, List files);

/**
* Remove files from a configuration.
*
* @param configFilePath full path to the configuration file
* @param files list of full paths to the files to be removed
*/
public void removeFilesFromConfig(String configFilePath, List files);
/**
* @return list (of Strings) of all build configuration files
* found so far
*/
public List /*String*/ getAllBuildConfigFiles();
}



+ 168
- 0
ajde/src/org/aspectj/ajde/ui/javaoptions/JavaBuildOptions.java View File

@@ -0,0 +1,168 @@
/********************************************************************
* Copyright (c) 2007 Contributors. All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://eclipse.org/legal/epl-v10.html
*
* Contributors: IBM Corporation - initial API and implementation
* Helen Hawkins - initial version (bug 148190)
*******************************************************************/
package org.aspectj.ajde.ui.javaoptions;

import java.util.Map;

import org.aspectj.ajde.core.JavaOptions;

/**
* Class which handles the setting of the java options and the
* java options map required by ICompilerConfiguration#getJavaOptionsMap()
*/
public class JavaBuildOptions {

private Map javaBuildOptions;
public JavaBuildOptions() {
javaBuildOptions = JavaOptions.getDefaultJavaOptions();
}
public Map getJavaBuildOptionsMap() {
return javaBuildOptions;
}
public void setOption(String javaOption, String value) {
javaBuildOptions.put(javaOption,value);
}
// ----------------- compliance settings ---------------
// compliance
public void setComplianceLevel(String level) {
if (JavaOptions.isValidJvmVersion(level)) {
javaBuildOptions.put(JavaOptions.COMPLIANCE_LEVEL,level);
}
}
// source
public void setSourceCompatibilityLevel(String level) {
if (JavaOptions.isValidJvmVersion(level)) {
javaBuildOptions.put(JavaOptions.SOURCE_COMPATIBILITY_LEVEL,level);
}
}
// target
public void setTargetLevel(String level) {
if (JavaOptions.isValidJvmVersion(level)) {
javaBuildOptions.put(JavaOptions.TARGET_COMPATIBILITY_LEVEL,level);
}
}
// ---------------- compiler warning options ------------------
// warn method with constructor name
public void setWarnMethodWithConstructorName(String option) {
if (JavaOptions.isIgnoreOrWarning(option)) {
javaBuildOptions.put(
JavaOptions.WARN_METHOD_WITH_CONSTRUCTOR_NAME,option);
}
}
// warn overriding package default method
public void setWarnOverridingPackageDefaultMethod(String option) {
if (JavaOptions.isIgnoreOrWarning(option)) {
javaBuildOptions.put(
JavaOptions.WARN_OVERRIDING_PACKAGE_DEFAULT_METHOD,option);
}
}
// warn deprecation
public void setWarnDeprecation(String option) {
if (JavaOptions.isIgnoreOrWarning(option)) {
javaBuildOptions.put(
JavaOptions.WARN_DEPRECATION,option);
}
}
// warn hidden catch blocks
public void setWarnHiddenCatchBlocks(String option) {
if (JavaOptions.isIgnoreOrWarning(option)) {
javaBuildOptions.put(
JavaOptions.WARN_HIDDEN_CATCH_BLOCKS,option);
}
}
// warn unused locals
public void setWarnUnusedLocals(String option) {
if (JavaOptions.isIgnoreOrWarning(option)) {
javaBuildOptions.put(
JavaOptions.WARN_UNUSED_LOCALS,option);
}
}
// warn unused parameters
public void setWarnUnusedParameters(String option) {
if (JavaOptions.isIgnoreOrWarning(option)) {
javaBuildOptions.put(
JavaOptions.WARN_UNUSED_PARAMETER,option);
}
}
// warn unused imports
public void setWarnUnusedImports(String option) {
if (JavaOptions.isIgnoreOrWarning(option)) {
javaBuildOptions.put(
JavaOptions.WARN_UNUSED_IMPORTS,option);
}
}
// warn synthetic access
public void setWarnSyntheticAccess(String option) {
if (JavaOptions.isIgnoreOrWarning(option)) {
javaBuildOptions.put(
JavaOptions.WARN_SYNTHETIC_ACCESS,option);
}
}
// warn assert identifier
public void setWarnAssertIdentifier(String option) {
if (JavaOptions.isIgnoreOrWarning(option)) {
javaBuildOptions.put(
JavaOptions.WARN_ASSERT_IDENITIFIER,option);
}
}
// warn non nls
public void setWarnNonNLS(String option) {
if (JavaOptions.isIgnoreOrWarning(option)) {
javaBuildOptions.put(
JavaOptions.WARN_NON_NLS,option);
}
}
// --------------- debug options --------------------

// debug source
public void setDebugSource(String option) {
if (JavaOptions.isGenerateOrNot(option)) {
javaBuildOptions.put(
JavaOptions.DEBUG_SOURCE,option);
}
}
// debug lines
public void setDebugLines(String option) {
if (JavaOptions.isGenerateOrNot(option)) {
javaBuildOptions.put(
JavaOptions.DEBUG_LINES,option);
}
}
// debug vars
public void setDebugVariables(String option) {
if (JavaOptions.isGenerateOrNot(option)) {
javaBuildOptions.put(
JavaOptions.DEBUG_VARS,option);
}
}
// preserve all locals
public void setPreserveAllLocals(String value) {
if (JavaOptions.isValidPreserveAllLocalsOption(value)) {
javaBuildOptions.put(JavaOptions.PRESERVE_ALL_LOCALS,value);
}
}
// ----------- other settings
// character encoding
public void setCharacterEncoding(String value) {
javaBuildOptions.put(JavaOptions.CHARACTER_ENCODING, value);
}
}

+ 140
- 0
ajde/src/org/aspectj/ajde/ui/javaoptions/JavaCompilerWarningsOptionsPanel.java View File

@@ -0,0 +1,140 @@
/********************************************************************
* Copyright (c) 2007 Contributors. All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://eclipse.org/legal/epl-v10.html
*
* Contributors: IBM Corporation - initial API and implementation
* Helen Hawkins - initial version (bug 148190)
*******************************************************************/
package org.aspectj.ajde.ui.javaoptions;

import java.awt.BorderLayout;
import java.awt.Color;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;

import org.aspectj.ajde.core.JavaOptions;
import org.aspectj.ajde.ui.swing.OptionsPanel;

/**
* An options panel which displays the java compiler warning options.
* Users should add this to the Ajde.getOptionsFrame()
*/
public class JavaCompilerWarningsOptionsPanel extends OptionsPanel {

private final String[] ignoreOrWarning = new String[] {JavaOptions.IGNORE,JavaOptions.WARNING};
private static final long serialVersionUID = 4491319302490183151L;
private JPanel parentPanel;
private Border warningsEtchedBorder;
private TitledBorder warningsTitleBorder;
private Border warningsCompoundBorder;
private JPanel warningsPanel;
private Box warningsBox = Box.createVerticalBox();
private JavaBuildOptions javaBuildOptions;

private Map/*String --> JComboBox*/ warningComboBoxes = new HashMap();
public JavaCompilerWarningsOptionsPanel(JavaBuildOptions javaBuildOptions) {
this.javaBuildOptions = javaBuildOptions;
try {
jbInit();
this.setName("Java Compiler Warning Options");
} catch (Exception e) {
e.printStackTrace();
}
}

public void loadOptions() throws IOException {
createWarningContents();
}
public void saveOptions() throws IOException {
Set s = warningComboBoxes.entrySet();
for (Iterator iterator = s.iterator(); iterator.hasNext();) {
Map.Entry entry = (Entry) iterator.next();
String javaOption = (String) entry.getKey();
JComboBox combo = (JComboBox)entry.getValue();
String value = (String) combo.getSelectedItem();
javaBuildOptions.setOption(javaOption, value);
}
}

private void jbInit() throws Exception {
this.setLayout(new BorderLayout());
createBorders();
addBordersToPanel();
this.add(parentPanel,BorderLayout.NORTH);
}


private void createWarningContents() {
createWarningsEntry("Method with a constructor name",JavaOptions.WARN_METHOD_WITH_CONSTRUCTOR_NAME);
createWarningsEntry("Method overriden but not package visible",JavaOptions.WARN_OVERRIDING_PACKAGE_DEFAULT_METHOD);
createWarningsEntry("Deprecated API's",JavaOptions.WARN_DEPRECATION);
createWarningsEntry("Hidden catch block",JavaOptions.WARN_HIDDEN_CATCH_BLOCKS);
createWarningsEntry("Unused local or private member",JavaOptions.WARN_UNUSED_LOCALS);
createWarningsEntry("Parameter is never read",JavaOptions.WARN_UNUSED_PARAMETER);
createWarningsEntry("Unused import",JavaOptions.WARN_UNUSED_IMPORTS);
createWarningsEntry("Synthetic access",JavaOptions.WARN_SYNTHETIC_ACCESS);
createWarningsEntry("Assert identifier",JavaOptions.WARN_ASSERT_IDENITIFIER);
createWarningsEntry("Non-externalized strings",JavaOptions.WARN_NON_NLS);
warningsPanel.add(warningsBox,null);
}
private void createWarningsEntry(String labelText, String javaOptionToSet) {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
JLabel label = new JLabel();
label.setFont(new java.awt.Font("Dialog", 0, 11));
label.setText(labelText);
panel.add(label,BorderLayout.WEST);
JComboBox warnings = new JComboBox(ignoreOrWarning);
String value = (String) javaBuildOptions.getJavaBuildOptionsMap().get(javaOptionToSet);
if (value.equals(JavaOptions.IGNORE)) {
warnings.setSelectedIndex(0);
} else {
warnings.setSelectedIndex(1);
}
panel.add(warnings,BorderLayout.EAST);
warningsBox.add(panel,null);
warningComboBoxes.put(javaOptionToSet,warnings);
}
private void createBorders() {
warningsEtchedBorder = BorderFactory.createEtchedBorder(Color.white, new Color(156, 156, 158));
warningsTitleBorder = new TitledBorder(warningsEtchedBorder, "Warning Options");
warningsCompoundBorder = BorderFactory.createCompoundBorder(warningsTitleBorder,
BorderFactory.createEmptyBorder(5, 5, 5, 5));
warningsTitleBorder.setTitleFont(new java.awt.Font("Dialog", 0, 11));
}
private void addBordersToPanel() {
parentPanel = new JPanel();
parentPanel.setLayout(new BorderLayout());
warningsPanel = new JPanel();
warningsPanel.setBorder(warningsCompoundBorder);
parentPanel.add(warningsPanel,BorderLayout.CENTER);
}


}

+ 143
- 0
ajde/src/org/aspectj/ajde/ui/javaoptions/JavaComplianceOptionsPanel.java View File

@@ -0,0 +1,143 @@
/********************************************************************
* Copyright (c) 2007 Contributors. All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://eclipse.org/legal/epl-v10.html
*
* Contributors: IBM Corporation - initial API and implementation
* Helen Hawkins - initial version (bug 148190)
*******************************************************************/
package org.aspectj.ajde.ui.javaoptions;

import java.awt.BorderLayout;
import java.awt.Color;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;

import org.aspectj.ajde.core.JavaOptions;
import org.aspectj.ajde.ui.swing.OptionsPanel;

/**
* An options panel which displays the java compiler compliance options.
* Users should add this to the Ajde.getOptionsFrame()
*/
public class JavaComplianceOptionsPanel extends OptionsPanel {

private final String[] complianceLevels = new String[] {JavaOptions.VERSION_13, JavaOptions.VERSION_14, JavaOptions.VERSION_15, JavaOptions.VERSION_16};
private static final long serialVersionUID = 4491319302490183151L;
private JPanel parentPanel;

private Border complianceEtchedBorder;
private TitledBorder complianceTitleBorder;
private Border complianceCompoundBorder;
private JPanel compliancePanel;
private Box complianceBox = Box.createVerticalBox();
private JavaBuildOptions javaBuildOptions;

private Map/*String --> JComboBox*/ complianceComboBoxes = new HashMap();
public JavaComplianceOptionsPanel(JavaBuildOptions javaBuildOptions) {
this.javaBuildOptions = javaBuildOptions;
try {
jbInit();
this.setName("Java Compliance Options");
} catch (Exception e) {
e.printStackTrace();
}
}

public void loadOptions() throws IOException {
createComplianceContents();
}
public void saveOptions() throws IOException {
Set s = complianceComboBoxes.entrySet();
for (Iterator iterator = s.iterator(); iterator.hasNext();) {
Map.Entry entry = (Entry) iterator.next();
String javaOption = (String) entry.getKey();
JComboBox combo = (JComboBox)entry.getValue();
String value = (String) combo.getSelectedItem();
javaBuildOptions.setOption(javaOption, value);
}
}

private void jbInit() throws Exception {
this.setLayout(new BorderLayout());
createBorders();
addBordersToPanel();
this.add(parentPanel,BorderLayout.NORTH);
}


private void createComplianceContents() {
createComplianceEntry("AjCompiler compliance level: ",JavaOptions.COMPLIANCE_LEVEL);
createComplianceEntry("Source compatibility: ",JavaOptions.SOURCE_COMPATIBILITY_LEVEL);
createComplianceEntry("Generated class file compatibility: ",JavaOptions.TARGET_COMPATIBILITY_LEVEL);
compliancePanel.add(complianceBox);
}

private void createComplianceEntry(String labelText, String javaOptionToSet) {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
JLabel label = new JLabel();
label.setFont(new java.awt.Font("Dialog", 0, 11));
label.setText(labelText);
panel.add(label,BorderLayout.WEST);
JComboBox levels = new JComboBox(complianceLevels);
String value = (String) javaBuildOptions.getJavaBuildOptionsMap().get(javaOptionToSet);
if (value == null) {
// default to 1.5
levels.setSelectedIndex(2);
} else if (value.equals(JavaOptions.VERSION_13)) {
levels.setSelectedIndex(0);
} else if (value.equals(JavaOptions.VERSION_14)){
levels.setSelectedIndex(1);
} else if (value.equals(JavaOptions.VERSION_15)){
levels.setSelectedIndex(2);
} else if (value.equals(JavaOptions.VERSION_16)){
levels.setSelectedIndex(3);
}
panel.add(levels,BorderLayout.EAST);
complianceBox.add(panel,null);
complianceComboBoxes.put(javaOptionToSet,levels);
}

private void createBorders() {
complianceEtchedBorder = BorderFactory.createEtchedBorder(Color.white, new Color(156, 156, 158));
complianceTitleBorder = new TitledBorder(complianceEtchedBorder, "Compliance Options");
complianceCompoundBorder = BorderFactory.createCompoundBorder(complianceTitleBorder,
BorderFactory.createEmptyBorder(5, 5, 5, 5));
complianceTitleBorder.setTitleFont(new java.awt.Font("Dialog", 0, 11));
}
private void addBordersToPanel() {
parentPanel = new JPanel();
parentPanel.setLayout(new BorderLayout());
compliancePanel = new JPanel();
compliancePanel.setBorder(complianceCompoundBorder);

parentPanel.add(compliancePanel,BorderLayout.CENTER);
}


}

+ 148
- 0
ajde/src/org/aspectj/ajde/ui/javaoptions/JavaDebugOptionsPanel.java View File

@@ -0,0 +1,148 @@
/********************************************************************
* Copyright (c) 2007 Contributors. All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://eclipse.org/legal/epl-v10.html
*
* Contributors: IBM Corporation - initial API and implementation
* Helen Hawkins - initial version (bug 148190)
*******************************************************************/
package org.aspectj.ajde.ui.javaoptions;

import java.awt.BorderLayout;
import java.awt.Color;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;

import org.aspectj.ajde.core.JavaOptions;
import org.aspectj.ajde.ui.swing.OptionsPanel;

/**
* An options panel which displays the java compiler debug options.
* Users should add this to the Ajde.getOptionsFrame()
*/
public class JavaDebugOptionsPanel extends OptionsPanel {

private final String[] debugOptions = new String[] {JavaOptions.GENERATE,JavaOptions.DO_NOT_GENERATE};
private final String[] preserveOptions = new String[] {JavaOptions.PRESERVE,JavaOptions.OPTIMIZE};
private static final long serialVersionUID = 4491319302490183151L;
private JPanel parentPanel;

private Border debugEtchedBorder;
private TitledBorder debugTitleBorder;
private Border debugCompoundBorder;
private JPanel debugPanel;
private Box debugBox = Box.createVerticalBox();
private JavaBuildOptions javaBuildOptions;

private Map/*String --> JComboBox*/ debugComboBoxes = new HashMap();
public JavaDebugOptionsPanel(JavaBuildOptions javaBuildOptions) {
this.javaBuildOptions = javaBuildOptions;
try {
jbInit();
this.setName("Java Debug Options");
} catch (Exception e) {
e.printStackTrace();
}
}

public void loadOptions() throws IOException {
createDebugContents();
}
public void saveOptions() throws IOException {
Set s = debugComboBoxes.entrySet();
for (Iterator iterator = s.iterator(); iterator.hasNext();) {
Map.Entry entry = (Entry) iterator.next();
String javaOption = (String) entry.getKey();
JComboBox combo = (JComboBox)entry.getValue();
String value = (String) combo.getSelectedItem();
javaBuildOptions.setOption(javaOption, value);
}
}

private void jbInit() throws Exception {
this.setLayout(new BorderLayout());
createBorders();
addBordersToPanel();
this.add(parentPanel,BorderLayout.NORTH);
}

private void createDebugContents() {
createDebugEntry("Add line number attributes to generated class files",JavaOptions.DEBUG_LINES);
createDebugEntry("Add source file name to generated class file",JavaOptions.DEBUG_SOURCE);
createDebugEntry("Add variable attributes to generated class files",JavaOptions.DEBUG_VARS);
createDebugEntry("Preserve unused (never read) local variables",JavaOptions.PRESERVE_ALL_LOCALS);
debugPanel.add(debugBox);
}

private void createDebugEntry(String labelText, String javaOptionToSet) {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
JLabel label = new JLabel();
label.setFont(new java.awt.Font("Dialog", 0, 11));
label.setText(labelText);
panel.add(label,BorderLayout.WEST);
JComboBox debug = null;
if (javaOptionToSet.equals(JavaOptions.PRESERVE_ALL_LOCALS)) {
debug = new JComboBox(preserveOptions);
String value = (String) javaBuildOptions.getJavaBuildOptionsMap().get(javaOptionToSet);
if (value.equals(JavaOptions.PRESERVE)) {
debug.setSelectedIndex(0);
} else {
debug.setSelectedIndex(1);
}
} else {
debug = new JComboBox(debugOptions);
String value = (String) javaBuildOptions.getJavaBuildOptionsMap().get(javaOptionToSet);
if (value.equals(JavaOptions.GENERATE)) {
debug.setSelectedIndex(0);
} else {
debug.setSelectedIndex(1);
}
}
panel.add(debug,BorderLayout.EAST);
debugBox.add(panel,null);
debugComboBoxes.put(javaOptionToSet,debug);
}

private void createBorders() {
debugEtchedBorder = BorderFactory.createEtchedBorder(Color.white, new Color(156, 156, 158));
debugTitleBorder = new TitledBorder(debugEtchedBorder, "Debug Options");
debugCompoundBorder = BorderFactory.createCompoundBorder(debugTitleBorder,
BorderFactory.createEmptyBorder(5, 5, 5, 5));
debugTitleBorder.setTitleFont(new java.awt.Font("Dialog", 0, 11));
}
private void addBordersToPanel() {
parentPanel = new JPanel();
parentPanel.setLayout(new BorderLayout());
debugPanel = new JPanel();
debugPanel.setBorder(debugCompoundBorder);

parentPanel.add(debugPanel,BorderLayout.CENTER);
}


}

+ 120
- 0
ajde/src/org/aspectj/ajde/ui/javaoptions/JavaOtherOptionsPanel.java View File

@@ -0,0 +1,120 @@
/********************************************************************
* Copyright (c) 2007 Contributors. All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://eclipse.org/legal/epl-v10.html
*
* Contributors: IBM Corporation - initial API and implementation
* Helen Hawkins - initial version (bug 148190)
*******************************************************************/
package org.aspectj.ajde.ui.javaoptions;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.io.IOException;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;

import org.aspectj.ajde.core.JavaOptions;
import org.aspectj.ajde.ui.swing.OptionsPanel;

/**
* An options panel which displays the character encoding java
* compiler option. Users should add this to the Ajde.getOptionsFrame()
*/
public class JavaOtherOptionsPanel extends OptionsPanel {

private static final long serialVersionUID = 4491319302490183151L;
private JPanel parentPanel;

private Border otherEtchedBorder;
private TitledBorder otherTitleBorder;
private Border otherCompoundBorder;
private JPanel otherPanel;
private Box otherBox = Box.createVerticalBox();
private JavaBuildOptions javaBuildOptions;

private JTextField characterEncoding;
public JavaOtherOptionsPanel(JavaBuildOptions javaBuildOptions) {
this.javaBuildOptions = javaBuildOptions;
try {
jbInit();
this.setName("Java Other Build Options");
} catch (Exception e) {
e.printStackTrace();
}
}

public void loadOptions() throws IOException {
createOtherContents();
}
public void saveOptions() throws IOException {
String text = characterEncoding.getText();
if (text != null ) {
javaBuildOptions.setCharacterEncoding(text);
}
}
private void jbInit() throws Exception {
this.setLayout(new BorderLayout());
createBorders();
addBordersToPanel();
this.add(parentPanel,BorderLayout.NORTH);
}

private void createOtherContents() {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());

JLabel label = new JLabel();
label.setFont(new java.awt.Font("Dialog", 0, 11));
label.setText("Character encoding (will default to platform encoding)");
panel.add(label,BorderLayout.WEST);
characterEncoding = new JTextField();
characterEncoding.setFont(new java.awt.Font("SansSerif", 0, 11));
characterEncoding.setMinimumSize(new Dimension(100, 21));
characterEncoding.setPreferredSize(new Dimension(150, 21));
panel.add(characterEncoding,BorderLayout.EAST);
String option = (String) javaBuildOptions.getJavaBuildOptionsMap().get(
JavaOptions.CHARACTER_ENCODING);
if (option != null) {
characterEncoding.setText(option);
}
otherBox.add(panel,null);
otherPanel.add(otherBox);
}
private void createBorders() {
otherEtchedBorder = BorderFactory.createEtchedBorder(Color.white, new Color(156, 156, 158));
otherTitleBorder = new TitledBorder(otherEtchedBorder, "Other Options");
otherCompoundBorder = BorderFactory.createCompoundBorder(otherTitleBorder,
BorderFactory.createEmptyBorder(5, 5, 5, 5));
otherTitleBorder.setTitleFont(new java.awt.Font("Dialog", 0, 11));
}
private void addBordersToPanel() {
parentPanel = new JPanel();
parentPanel.setLayout(new BorderLayout());
otherPanel = new JPanel();
otherPanel.setBorder(otherCompoundBorder);
parentPanel.add(otherPanel,BorderLayout.CENTER);
}


}

+ 76
- 0
ajde/testsrc/org/aspectj/ajde/AjdeCompilerTests.java View File

@@ -0,0 +1,76 @@
/********************************************************************
* Copyright (c) 2007 Contributors. All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://eclipse.org/legal/epl-v10.html
*
* Contributors: IBM Corporation - initial API and implementation
* Helen Hawkins - initial version (bug 148190)
*******************************************************************/
package org.aspectj.ajde;

import org.aspectj.ajde.core.AjCompiler;

/**
* Tests ajde's management of the AjCompiler instances. Expect
* there to be a different one for each .lst file and for ajde
* to only remember the compiler for the last .lst file.
*/
public class AjdeCompilerTests extends AjdeTestCase {
protected void setUp() throws Exception {
super.setUp();
initialiseProject("LstBuildConfigManagerTest");
}
// Expect to get a different compiler instance for each
// different config file
public void testGetSameAjCompilerForSameConfigFiles() {
AjCompiler c1 = getCompilerForConfigFileWithName("bad-injar.lst");
AjCompiler c2 = getCompilerForConfigFileWithName("bad-injar.lst");
assertEquals("expected the same AjCompiler instance to be returned" +
" for the same configFile but found different ones", c1, c2);
}
// Expect to get a different compiler instance for each
// different config file
public void testGetDifferentAjCompilerForDifferentConfigFiles() {
AjCompiler c1 = getCompilerForConfigFileWithName("bad-injar.lst");
AjCompiler c2 = getCompilerForConfigFileWithName("dir-entry.lst");
assertNotSame("expected different AjCompiler instances to be returned" +
" for different configFiles but found the smae", c1, c2);
}
// want to keep the same setting regardless of the configFile
// being built - therefore the same instance should be passed
// from one AjCompiler instance to the next
public void testSameCompilerConfigForDifferentConfigFiles() {
AjCompiler c1 = getCompilerForConfigFileWithName("bad-injar.lst");
AjCompiler c2 = getCompilerForConfigFileWithName("dir-entry.lst");
assertEquals("expected the same compilerConfig instance to be associated" +
" with the different AjCompiler's however found different ones",
c1.getCompilerConfiguration(), c2.getCompilerConfiguration());
}
// want to have a different messageHandler instance for the different
// config files - or we can just reset?!?! Resetting would be easier
public void testSameMessageHandlerForDifferentConfigFiles() {
AjCompiler c1 = getCompilerForConfigFileWithName("bad-injar.lst");
AjCompiler c2 = getCompilerForConfigFileWithName("dir-entry.lst");
assertEquals("expected the same messageHandler instance to be associated" +
" with the different AjCompiler's however found different ones",
c1.getMessageHandler(), c2.getMessageHandler());
}
// can have the same buildProgressMonitor for the different configFiles
// because it holds no state
public void testSameBuildProgressMonitorForDifferentConfigFiles() {
AjCompiler c1 = getCompilerForConfigFileWithName("bad-injar.lst");
AjCompiler c2 = getCompilerForConfigFileWithName("dir-entry.lst");
assertEquals("expected the same buildProgressMonitor instance to be associated" +
" with the different AjCompiler's however found different ones",
c1.getBuildProgressMonitor(), c2.getBuildProgressMonitor());
}
}

+ 8
- 13
ajde/testsrc/org/aspectj/ajde/AjdeTestCase.java View File

@@ -62,9 +62,16 @@ public class AjdeTestCase extends TestCase {
*/
public void initialiseProject(String projectName) {
File projectSrc=new File(testdataSrcDir + File.separatorChar + projectName);
File destination=new File(getWorkingDir(),projectName);
if (!destination.exists()) {destination.mkdir();}
copy(projectSrc,destination);
projectDir = destination.getAbsolutePath();

// need to initialize via AjdeUIManager
Ajde.getDefault().init(
new TestCompilerConfiguration(projectName),
new TestCompilerConfiguration(projectDir),
new TestMessageHandler(),
new TestBuildProgressMonitor(),
new TestEditorAdapter(),
@@ -73,18 +80,6 @@ public class AjdeTestCase extends TestCase {
new JFrame(),
new TestRuntimeProperties(),
true);
File projectSrc=new File(testdataSrcDir + File.separatorChar + projectName);
File destination=new File(getWorkingDir(),projectName);
if (!destination.exists()) {destination.mkdir();}
copy(projectSrc,destination);
projectDir = destination.getAbsolutePath();
// compiler = new AjCompiler(
// projectDir,
// new TestCompilerConfiguration(projectDir),
// new TestBuildProgressMonitor(),
// new TestMessageHandler());
}
/**

+ 96
- 0
ajde/testsrc/org/aspectj/ajde/ui/utils/TestBuildProgressMonitor.java View File

@@ -0,0 +1,96 @@
/********************************************************************
* Copyright (c) 2007 Contributors. All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://eclipse.org/legal/epl-v10.html
*
* Contributors: IBM Corporation - initial API and implementation
* Helen Hawkins - initial version (bug 148190)
*******************************************************************/
package org.aspectj.ajde.ui.utils;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.aspectj.ajde.core.IBuildProgressMonitor;

/**
* Test implementation of IBuildProgressMonitor which prints out
* progress to the console and enables users to cancel the build process
* after a specified string has been printed.
*/
public class TestBuildProgressMonitor implements IBuildProgressMonitor {

private static boolean debugTests = false;
public int numWovenClassMessages = 0;
public int numWovenAspectMessages = 0;
public int numCompiledMessages = 0;
private String programmableString;
private int count;
private List messagesReceived = new ArrayList();
private int currentVal;
private boolean isCancelRequested = false;
public void finish(boolean wasFullBuild) {
System.out.println("build finished. Was full build: " + wasFullBuild);
}

public boolean isCancelRequested() {
return isCancelRequested;
}

public void setProgress(double percentDone) {
System.out.println("progress. Completed " + percentDone + " percent");
}

public void setProgressText(String text) {
System.out.println("progress text: " + text);
String newText = text+" [Percentage="+currentVal+"%]";
messagesReceived.add(newText);
if (text.startsWith("woven aspect ")) numWovenAspectMessages++;
if (text.startsWith("woven class ")) numWovenClassMessages++;
if (text.startsWith("compiled:")) numCompiledMessages++;
if (programmableString != null
&& text.indexOf(programmableString) != -1) {
count--;
if (count==0) {
if (debugTests) System.out.println("Just got message '"+newText+"' - asking build to cancel");
isCancelRequested = true;
programmableString = null;
}
}
}

public void begin() {
System.out.println("build started");
currentVal = 0;
}

// ------------- methods to help with testing -------------
public void cancelOn(String string,int count) {
programmableString = string;
this.count = count;
}
public boolean containsMessage(String prefix,String distinguishingMarks) {
for (Iterator iter = messagesReceived.iterator(); iter.hasNext();) {
String element = (String) iter.next();
if (element.startsWith(prefix) &&
element.indexOf(distinguishingMarks)!=-1) return true;
}
return false;
}
public void dumpMessages() {
System.out.println("ProgressMonitorMessages");
for (Iterator iter = messagesReceived.iterator(); iter.hasNext();) {
String element = (String) iter.next();
System.out.println(element);
}
}

}

+ 163
- 0
ajde/testsrc/org/aspectj/ajde/ui/utils/TestCompilerConfiguration.java View File

@@ -0,0 +1,163 @@
/********************************************************************
* Copyright (c) 2007 Contributors. All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://eclipse.org/legal/epl-v10.html
*
* Contributors: IBM Corporation - initial API and implementation
* Helen Hawkins - initial version (bug 148190)
*******************************************************************/
package org.aspectj.ajde.ui.utils;

import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.aspectj.ajde.core.ICompilerConfiguration;
import org.aspectj.ajde.core.IOutputLocationManager;
import org.aspectj.ajde.core.JavaOptions;
import org.aspectj.tools.ajc.AjcTests;
import org.aspectj.util.FileUtil;

/**
* Test implementation of ICompilerConfiguration. Allows users to configure
* the settings via setter methods. By default returns null for all options
* except getClasspath(), getJavaOptionsMap() (by default returns that it's
* 1.3 compliant), getOutputLocationManager(), getSourcePathResources() (it
* recursively looks for them) and getProjectSourceFiles(). If no source
* files are specified by the user, then getProjectSourceFiles() returns
* an empty list.
*/
public class TestCompilerConfiguration implements ICompilerConfiguration {

private String projectPath;
private Set aspectpath;
private Set inpath;
private String outjar;
private Map javaOptions;
private String nonStandardOptions;
private List projectSourceFiles = new ArrayList();
private Map sourcePathResources;
private String srcDirName = "src";
private IOutputLocationManager outputLoc;
public TestCompilerConfiguration(String projectPath) {
this.projectPath = projectPath;
}
public Set getAspectPath() {
return aspectpath;
}

public String getClasspath() {
return projectPath
+ File.pathSeparator
+ System.getProperty("sun.boot.class.path")
+ File.pathSeparator
+ AjcTests.aspectjrtClasspath();
}

public Set getInpath() {
return inpath;
}

public Map getJavaOptionsMap() {
if (javaOptions == null) {
javaOptions = new Hashtable();
javaOptions.put(JavaOptions.COMPLIANCE_LEVEL,JavaOptions.VERSION_13);
javaOptions.put(JavaOptions.SOURCE_COMPATIBILITY_LEVEL,JavaOptions.VERSION_13);
}
return javaOptions;
}

public String getNonStandardOptions() {
return nonStandardOptions;
}

public String getOutJar() {
return outjar;
}

public IOutputLocationManager getOutputLocationManager() {
if (outputLoc == null) {
outputLoc = new TestOutputLocationManager(projectPath);
}
return outputLoc;
}

public List getProjectSourceFiles() {
return projectSourceFiles;
}

public Map getSourcePathResources() {
if (sourcePathResources == null) {
sourcePathResources = new HashMap();

/* Allow the user to override the testProjectPath by using sourceRoots */
File[] srcBase = new File[] { new File(projectPath + File.separator + srcDirName) };
for (int j = 0; j < srcBase.length; j++) {
File[] fromResources = FileUtil.listFiles(srcBase[j], new FileFilter() {
public boolean accept(File pathname) {
String name = pathname.getName().toLowerCase();
return !name.endsWith(".class")
&& !name.endsWith(".java")
&& !name.endsWith(".aj")
&& !name.endsWith(".lst")
&& !name.endsWith(".jar");
}
});
for (int i = 0; i < fromResources.length; i++) {
String normPath = FileUtil.normalizedPath(fromResources[i] ,srcBase[j]);
sourcePathResources.put(normPath, fromResources[i]);

}
}
}
return sourcePathResources;
}

// -------------------- setter methods useful for testing ---------------
public void setAspectPath(Set aspectPath) {
this.aspectpath = aspectPath;
}

public void setInpath(Set inpath) {
this.inpath = inpath;
}

public void setOutjar(String outjar) {
this.outjar = outjar;
}

public void setJavaOptions(Map javaOptions) {
this.javaOptions = javaOptions;
}
public void setNonStandardOptions(String options) {
this.nonStandardOptions = options;
}

public void setProjectSourceFiles(List projectSourceFiles) {
this.projectSourceFiles = projectSourceFiles;
}

public void setSourcePathResources(Map sourcePathResources) {
this.sourcePathResources = sourcePathResources;
}
public void setSourceDir(String srcDirName) {
this.srcDirName = srcDirName;
}

}

+ 48
- 0
ajde/testsrc/org/aspectj/ajde/ui/utils/TestEditorAdapter.java View File

@@ -0,0 +1,48 @@
/********************************************************************
* Copyright (c) 2007 Contributors. All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://eclipse.org/legal/epl-v10.html
*
* Contributors: IBM Corporation - initial API and implementation
* Helen Hawkins - initial version (bug 148190)
*******************************************************************/
package org.aspectj.ajde.ui.utils;

import java.io.IOException;
import java.util.List;

import org.aspectj.ajde.EditorAdapter;
import org.aspectj.bridge.ISourceLocation;

/**
* EditorAdapter with empty implementation
*/
public class TestEditorAdapter implements EditorAdapter {

public String getCurrFile() {
return null;
}

public void pasteToCaretPos(String text) {
}

public void saveContents() throws IOException {
}

public void showSourceLine(String filePath, int lineNumber,
boolean highlight) {
}

public void showSourceLine(ISourceLocation sourceLocation, boolean highlight) {
}

public void showSourceLine(int lineNumber, boolean highlight) {
}

public void showSourcelineAnnotation(String filePath, int lineNumber,
List items) {
}

}

+ 23
- 0
ajde/testsrc/org/aspectj/ajde/ui/utils/TestIdeUIAdapter.java View File

@@ -0,0 +1,23 @@
/********************************************************************
* Copyright (c) 2007 Contributors. All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://eclipse.org/legal/epl-v10.html
*
* Contributors: IBM Corporation - initial API and implementation
* Helen Hawkins - initial version (bug 148190)
*******************************************************************/
package org.aspectj.ajde.ui.utils;

import org.aspectj.ajde.IdeUIAdapter;

/**
* IdeUIAdapter with empty implementation
*/
public class TestIdeUIAdapter implements IdeUIAdapter {

public void displayStatusInformation(String message) {
}

}

+ 112
- 0
ajde/testsrc/org/aspectj/ajde/ui/utils/TestMessageHandler.java View File

@@ -0,0 +1,112 @@
/********************************************************************
* Copyright (c) 2007 Contributors. All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://eclipse.org/legal/epl-v10.html
*
* Contributors: IBM Corporation - initial API and implementation
* Helen Hawkins - initial version (bug 148190)
*******************************************************************/
package org.aspectj.ajde.ui.utils;

import java.util.ArrayList;
import java.util.List;

import org.aspectj.ajde.IUIBuildMessageHandler;
import org.aspectj.bridge.AbortException;
import org.aspectj.bridge.IMessage;
import org.aspectj.bridge.IMessage.Kind;

/**
* Test implementation of IBuildMessageHandler. By default it
* ignores INFO and WEAVEINFO messages. Stores all messages it's
* not ignoring in an ArrayList and ERRORS and ABORTS also in
* a separate ArrayList enabling users to query whether anything
* went wrong with the build.
*/
public class TestMessageHandler implements IUIBuildMessageHandler {

private List ignoring;
private List messages;
private List errors;
public TestMessageHandler() {
ignoring = new ArrayList();
messages = new ArrayList();
errors = new ArrayList();
ignore(IMessage.INFO);
ignore(IMessage.WEAVEINFO);
}

public boolean handleMessage(IMessage message) throws AbortException {
IMessage.Kind kind = message.getKind();
if (isIgnoring(kind)) {
return true;
}
TestMessage t = new TestMessage(message);
messages.add(t);
if (kind.equals(IMessage.ABORT) || message.getThrown() != null) {
System.err.println("> AjCompiler error: "+message.getMessage()); //$NON-NLS-1$
message.getThrown().printStackTrace();
errors.add(t);
} else if (kind.equals(IMessage.ERROR)) {
errors.add(t);
}
System.out.println("> "+message); //$NON-NLS-1$
return true;
}

public void dontIgnore(Kind kind) {
if (null != kind) {
ignoring.remove(kind);
}
}

public boolean isIgnoring(Kind kind) {
return ((null != kind) && (ignoring.contains(kind)));
}
public void ignore(Kind kind) {
if ((null != kind) && (!ignoring.contains(kind))) {
ignoring.add(kind);
}
}

public List getMessages() {
return messages;
}
public List getErrors() {
return errors;
}
public static class TestMessage {
IMessage message;
public TestMessage(IMessage m) {
message = m;
}
public IMessage getContainedMessage() {
return message;
}
public String toString() {
String loc = "<no location>";
if (null != message.getSourceLocation()) {
loc = message.getSourceLocation().getSourceFile() + ":" + message.getSourceLocation().getLine();
}
return "TestMessage [" + message.getMessage()
+ ", " + loc
+ ", " + message.getKind()
+ "]";
}
}

public void reset() {
messages.clear();
errors.clear();
}

}

+ 86
- 0
ajde/testsrc/org/aspectj/ajde/ui/utils/TestOutputLocationManager.java View File

@@ -0,0 +1,86 @@
/********************************************************************
* Copyright (c) 2007 Contributors. All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://eclipse.org/legal/epl-v10.html
*
* Contributors: IBM Corporation - initial API and implementation
* Helen Hawkins - initial version (bug 148190)
*******************************************************************/
package org.aspectj.ajde.ui.utils;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.aspectj.ajde.core.IOutputLocationManager;

/**
* Test implementation of IOutputLocationManager. By default returns the
* same location for both resources and classes, however, setter methods
* enable the user to specify different location for these. Note that the
* user is unable to specify different output location for different class
* files.
*/
public class TestOutputLocationManager implements IOutputLocationManager {

private String testProjectOutputPath;
private File classOutputLoc;
private File resourceOutputLoc;
private List allOutputLocations;
public TestOutputLocationManager(String testProjectPath) {
this.testProjectOutputPath = testProjectPath + File.separator + "bin";
}
public String getUniqueIdentifier() {
return testProjectOutputPath;
}

public File getOutputLocationForClass(File compilationUnit) {
initLocations();
return classOutputLoc;
}

public File getOutputLocationForResource(File resource) {
initLocations();
return resourceOutputLoc;
}
// -------------- setter methods useful for testing -------------
public void setOutputLocForClass(File f) {
classOutputLoc = f;
}
public void setOutputLocForResource(File f) {
resourceOutputLoc = f;
}

public List getAllOutputLocations() {
if(allOutputLocations == null) {
allOutputLocations = new ArrayList();
initLocations();
allOutputLocations.add(classOutputLoc);
if (!classOutputLoc.equals(resourceOutputLoc)) {
allOutputLocations.add(resourceOutputLoc);
}
}
return allOutputLocations;
}

public File getDefaultOutputLocation() {
return classOutputLoc;
}
private void initLocations() {
if (classOutputLoc == null) {
classOutputLoc = new File(testProjectOutputPath);
}
if (resourceOutputLoc == null) {
resourceOutputLoc = new File(testProjectOutputPath);
}
}

}

+ 28
- 0
ajde/testsrc/org/aspectj/ajde/ui/utils/TestRuntimeProperties.java View File

@@ -0,0 +1,28 @@
/********************************************************************
* Copyright (c) 2007 Contributors. All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://eclipse.org/legal/epl-v10.html
*
* Contributors: IBM Corporation - initial API and implementation
* Helen Hawkins - initial version (bug 148190)
*******************************************************************/
package org.aspectj.ajde.ui.utils;

import org.aspectj.ajde.IRuntimeProperties;

/**
* IRuntimeProperties with empty implementation
*/
public class TestRuntimeProperties implements IRuntimeProperties {

public String getClassToExecute() {
return null;
}

public String getExecutionArgs() {
return null;
}

}

Loading…
Cancel
Save