From 7fca7b8c8a1067c63c77c90b49f84c0d9c594ed4 Mon Sep 17 00:00:00 2001 From: dpalic Date: Fri, 19 Sep 2014 18:59:38 +0200 Subject: [PATCH 01/34] added launch --- SimpleDirectoryContainer.launch | 804 ++++++++++++++++++++++++++++++++ 1 file changed, 804 insertions(+) create mode 100644 SimpleDirectoryContainer.launch diff --git a/SimpleDirectoryContainer.launch b/SimpleDirectoryContainer.launch new file mode 100644 index 0000000..2a67f2c --- /dev/null +++ b/SimpleDirectoryContainer.launch @@ -0,0 +1,804 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 1d87747a8d7e7ad853a7dcbdb1496806fafb69b7 Mon Sep 17 00:00:00 2001 From: dpalic Date: Sat, 20 Sep 2014 12:12:54 +0200 Subject: [PATCH 02/34] enhanced UI --- .classpath | 4 +- .gitignore | 2 + META-INF/MANIFEST.MF | 7 +- SimpleDirectoryContainer.launch | 521 +----------------- .../directory/SimpleDirContainerPage.java | 65 +-- 5 files changed, 42 insertions(+), 557 deletions(-) diff --git a/.classpath b/.classpath index 751c8f2..098194c 100755 --- a/.classpath +++ b/.classpath @@ -1,7 +1,7 @@ - - + + diff --git a/.gitignore b/.gitignore index 9c58ac0..4ee5adb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ bin/* build/* +/bin +/target diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF index f9e3507..15f726c 100755 --- a/META-INF/MANIFEST.MF +++ b/META-INF/MANIFEST.MF @@ -2,11 +2,14 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Directory Container Bundle-SymbolicName: DirectoryClasspathContainer;singleton:=true -Bundle-Version: 1.0.0 +Bundle-Version: 1.0.1 Bundle-Localization: plugin Require-Bundle: org.eclipse.core.resources, org.eclipse.core.runtime, org.eclipse.jdt.core, org.eclipse.jdt.ui, - org.eclipse.jface + org.eclipse.jface, + org.eclipse.ui +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Export-Package: org.container.directory diff --git a/SimpleDirectoryContainer.launch b/SimpleDirectoryContainer.launch index 2a67f2c..7628611 100644 --- a/SimpleDirectoryContainer.launch +++ b/SimpleDirectoryContainer.launch @@ -11,7 +11,7 @@ - + @@ -19,53 +19,11 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -132,295 +90,45 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -431,7 +139,6 @@ - @@ -451,51 +158,14 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -515,112 +185,41 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -630,22 +229,10 @@ - - - - - - - - - - - - @@ -655,62 +242,18 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -731,72 +274,14 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/src/org/container/directory/SimpleDirContainerPage.java b/src/org/container/directory/SimpleDirContainerPage.java index a3928c6..df7f079 100755 --- a/src/org/container/directory/SimpleDirContainerPage.java +++ b/src/org/container/directory/SimpleDirContainerPage.java @@ -37,6 +37,7 @@ public class SimpleDirContainerPage extends WizardPage private Button _dirBrowseButton; private Text _extText; private IPath _initPath = null; + private Composite composite; /** * Default Constructor - sets title, page name, description @@ -59,8 +60,10 @@ public void initialize(IJavaProject project, IClasspathEntry[] currentEntries) { * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) */ public void createControl(Composite parent) { - Composite composite = new Composite(parent, SWT.NULL); - composite.setLayout(new GridLayout()); + composite = new Composite(parent, SWT.NULL); + GridLayout gl_composite = new GridLayout(); + gl_composite.numColumns = 3; + composite.setLayout(gl_composite); composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL)); composite.setFont(parent.getFont()); @@ -69,7 +72,31 @@ public void createControl(Composite parent) { createExtGroup(composite); - setControl(composite); + setControl(composite); + + Label label = new Label(composite, SWT.NONE); + label.setText(Messages.DirLabel); + + _dirCombo = new Combo(composite, SWT.SINGLE | SWT.BORDER); + _dirCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); + _dirCombo.setText( getInitDir() ); + + _dirBrowseButton= new Button(composite, SWT.PUSH); + _dirBrowseButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); + _dirBrowseButton.setText( Messages.Browse ); + _dirBrowseButton.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + handleDirBrowseButtonPressed(); + } + }); + + Label label_1 = new Label(composite, SWT.NONE); + label_1.setText(Messages.ExtLabel); + + _extText = new Text(composite,SWT.BORDER); + _extText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); + _extText.setText(getInitExts()); + new Label(composite, SWT.NONE); } /** @@ -78,26 +105,6 @@ public void createControl(Composite parent) { * @param parent the parent widget */ private void createDirGroup(Composite parent) { - Composite dirSelectionGroup = new Composite(parent, SWT.NONE); - GridLayout layout= new GridLayout(); - layout.numColumns = 3; - dirSelectionGroup.setLayout(layout); - dirSelectionGroup.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL| GridData.VERTICAL_ALIGN_FILL)); - - new Label(dirSelectionGroup, SWT.NONE).setText(Messages.DirLabel); - - _dirCombo = new Combo(dirSelectionGroup, SWT.SINGLE | SWT.BORDER); - _dirCombo.setText( getInitDir() ); - - _dirBrowseButton= new Button(dirSelectionGroup, SWT.PUSH); - _dirBrowseButton.setText( Messages.Browse ); - _dirBrowseButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - _dirBrowseButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - handleDirBrowseButtonPressed(); - } - }); - setControl(dirSelectionGroup); } /** @@ -106,18 +113,6 @@ public void widgetSelected(SelectionEvent e) { * @param parent parent widget */ private void createExtGroup(Composite parent) { - Composite extSelectionGroup = new Composite(parent, SWT.NONE); - GridLayout layout= new GridLayout(); - layout.numColumns = 2; - extSelectionGroup.setLayout(layout); - extSelectionGroup.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL| GridData.VERTICAL_ALIGN_FILL)); - - new Label(extSelectionGroup, SWT.NONE).setText(Messages.ExtLabel); - - _extText = new Text(extSelectionGroup,SWT.BORDER); - _extText.setText(getInitExts()+" "); - - setControl(extSelectionGroup); } /** From 160b48348c1165a9f40b9c29fb67bbc9c3427036 Mon Sep 17 00:00:00 2001 From: dpalic Date: Sat, 20 Sep 2014 12:13:38 +0200 Subject: [PATCH 03/34] enhanced to be quickly startable for new users --- .settings/org.eclipse.jdt.core.prefs | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .settings/org.eclipse.jdt.core.prefs diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..f42de36 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.7 From 463616c54bdb7c765363c91625a39bc9994e029a Mon Sep 17 00:00:00 2001 From: dpalic Date: Sun, 21 Sep 2014 09:50:32 +0200 Subject: [PATCH 04/34] added activator to ensure a proper init of the plugin (e.g. a logger) --- META-INF/MANIFEST.MF | 2 + src/org/container/directory/Activator.java | 61 ++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 src/org/container/directory/Activator.java diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF index 15f726c..82b6618 100755 --- a/META-INF/MANIFEST.MF +++ b/META-INF/MANIFEST.MF @@ -12,4 +12,6 @@ Require-Bundle: org.eclipse.core.resources, org.eclipse.ui Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Export-Package: org.container.directory +Bundle-Activator: org.container.directory.Activator +Bundle-ActivationPolicy: lazy diff --git a/src/org/container/directory/Activator.java b/src/org/container/directory/Activator.java new file mode 100644 index 0000000..047a620 --- /dev/null +++ b/src/org/container/directory/Activator.java @@ -0,0 +1,61 @@ +package org.container.directory; + +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.osgi.framework.BundleContext; + +/** + * The activator class controls the plug-in life cycle + */ +public class Activator extends AbstractUIPlugin { + + // The plug-in ID + public static final String PLUGIN_ID = "DirectoryClasspathContainer"; //$NON-NLS-1$ + + // The shared instance + private static Activator plugin; + + /** + * The constructor + */ + public Activator() { + } + + /* + * (non-Javadoc) + * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) + */ + public void start(BundleContext context) throws Exception { + super.start(context); + plugin = this; + } + + /* + * (non-Javadoc) + * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) + */ + public void stop(BundleContext context) throws Exception { + plugin = null; + super.stop(context); + } + + /** + * Returns the shared instance + * + * @return the shared instance + */ + public static Activator getDefault() { + return plugin; + } + + /** + * Returns an image descriptor for the image file at the given + * plug-in relative path + * + * @param path the path + * @return the image descriptor + */ + public static ImageDescriptor getImageDescriptor(String path) { + return imageDescriptorFromPlugin(PLUGIN_ID, path); + } +} From f8a6a5f5fcfdc2b1d60081b21b0cbff177c8986a Mon Sep 17 00:00:00 2001 From: dpalic Date: Sun, 21 Sep 2014 09:53:02 +0200 Subject: [PATCH 05/34] fixed bug, that at startup the logger was not initialized. Not the plugin gets the logger from the Plugin Activator, which is started up by eclipse before accessing any other class in the plugin. --- src/org/container/directory/Logger.java | 73 +++++++++++++------------ 1 file changed, 39 insertions(+), 34 deletions(-) diff --git a/src/org/container/directory/Logger.java b/src/org/container/directory/Logger.java index 16816b3..d8782b9 100755 --- a/src/org/container/directory/Logger.java +++ b/src/org/container/directory/Logger.java @@ -2,46 +2,51 @@ import org.eclipse.core.runtime.ILog; import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Status; /** - * This is a simple logger that logs messages and stack traces to the Eclipse error log. + * This is a simple logger that logs messages and stack traces to the Eclipse + * error log. * * @author Aaron J Tarter */ public class Logger { - public final static String PLUGIN_ID = "org.container.directory"; - // logging severities - public static final int OK = IStatus.OK; - public static final int ERROR = IStatus.ERROR; - public static final int CANCEL = IStatus.CANCEL; - public static final int INFO = IStatus.INFO; - public static final int WARNING = IStatus.WARNING; - // reference to the Eclipse error log - private static ILog log; - - /* - * Get a reference to the Eclipse error log - */ - static { - log = Platform.getLog(Platform.getBundle(PLUGIN_ID)); - } - - /* - * Prints stack trace to Eclipse error log - */ - public static void log(int severity, Throwable e) { - Status s = new Status(severity, PLUGIN_ID, IStatus.OK, e.getMessage(), e); - log.log(s); - } - - /* - * Prints a message to the Eclipse error log - */ - public static void log(int severity, String msg) { - Status s = new Status(severity, PLUGIN_ID, IStatus.OK, msg, null); - log.log(s); - } + public final static String PLUGIN_ID = "org.container.directory"; + // logging severities + public static final int OK = IStatus.OK; + public static final int ERROR = IStatus.ERROR; + public static final int CANCEL = IStatus.CANCEL; + public static final int INFO = IStatus.INFO; + public static final int WARNING = IStatus.WARNING; + + // reference to the Eclipse error log + private static ILog log; + + /** + * Use the Activator, to get the logger. + * This ensures, that the logger will never be null. + */ + private static ILog getLog() { + if (log == null) { + log = Activator.getDefault().getLog(); + } + return log; + } + + /* + * Prints stack trace to Eclipse error log + */ + public static void log(int severity, Throwable e) { + Status s = new Status(severity, PLUGIN_ID, IStatus.OK, e.getMessage(), e); + getLog().log(s); + } + + /* + * Prints a message to the Eclipse error log + */ + public static void log(int severity, String msg) { + Status s = new Status(severity, PLUGIN_ID, IStatus.OK, msg, null); + getLog().log(s); + } } From d08805293e0be3ef9d53e772c8f7ceac6267fc7f Mon Sep 17 00:00:00 2001 From: dpalic Date: Sun, 21 Sep 2014 10:28:13 +0200 Subject: [PATCH 06/34] fixed toLowerCase since it is not working on linux/mac renamed methods to be easier to understand --- .../directory/SimpleDirContainerPage.java | 461 ++++++++++-------- 1 file changed, 245 insertions(+), 216 deletions(-) diff --git a/src/org/container/directory/SimpleDirContainerPage.java b/src/org/container/directory/SimpleDirContainerPage.java index df7f079..4c51939 100755 --- a/src/org/container/directory/SimpleDirContainerPage.java +++ b/src/org/container/directory/SimpleDirContainerPage.java @@ -22,223 +22,252 @@ import org.eclipse.swt.widgets.Text; /** - * This classpath container page colects the directory and the file extensions for a new - * or existing SimpleDirContainer. + * This classpath container page colects the directory and the file extensions + * for a new or existing SimpleDirContainer. * * @author Aaron J Tarter */ -public class SimpleDirContainerPage extends WizardPage - implements IClasspathContainerPage, IClasspathContainerPageExtension { - - private final static String DEFAULT_EXTS = "jar,zip"; - - private IJavaProject _proj; - private Combo _dirCombo; - private Button _dirBrowseButton; - private Text _extText; - private IPath _initPath = null; - private Composite composite; - - /** - * Default Constructor - sets title, page name, description - */ - public SimpleDirContainerPage() { - super(Messages.PageName, Messages.PageTitle, null); - setDescription(Messages.PageDesc); - setPageComplete(true); - } - - - /* (non-Javadoc) - * @see org.eclipse.jdt.ui.wizards.IClasspathContainerPageExtension#initialize(org.eclipse.jdt.core.IJavaProject, org.eclipse.jdt.core.IClasspathEntry[]) - */ - public void initialize(IJavaProject project, IClasspathEntry[] currentEntries) { - _proj = project; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) - */ - public void createControl(Composite parent) { - composite = new Composite(parent, SWT.NULL); - GridLayout gl_composite = new GridLayout(); - gl_composite.numColumns = 3; - composite.setLayout(gl_composite); - composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL - | GridData.HORIZONTAL_ALIGN_FILL)); - composite.setFont(parent.getFont()); - - createDirGroup(composite); - - createExtGroup(composite); - - setControl(composite); - - Label label = new Label(composite, SWT.NONE); - label.setText(Messages.DirLabel); - - _dirCombo = new Combo(composite, SWT.SINGLE | SWT.BORDER); - _dirCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); - _dirCombo.setText( getInitDir() ); - - _dirBrowseButton= new Button(composite, SWT.PUSH); - _dirBrowseButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); - _dirBrowseButton.setText( Messages.Browse ); - _dirBrowseButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - handleDirBrowseButtonPressed(); - } - }); - - Label label_1 = new Label(composite, SWT.NONE); - label_1.setText(Messages.ExtLabel); - - _extText = new Text(composite,SWT.BORDER); - _extText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); - _extText.setText(getInitExts()); - new Label(composite, SWT.NONE); - } - - /** - * Creates the directory label, combo, and browse button - * - * @param parent the parent widget - */ - private void createDirGroup(Composite parent) { - } - - /** - * Creates the extensions label and text box - * - * @param parent parent widget - */ - private void createExtGroup(Composite parent) { - } - - /** - * Creates a directory dialog - */ - protected void handleDirBrowseButtonPressed() { - DirectoryDialog dialog = new DirectoryDialog(getContainer().getShell(), SWT.SAVE); - dialog.setMessage(Messages.DirSelect); - dialog.setFilterPath(getDirValue()); - String dir = dialog.open(); - if (dir != null) { - _dirCombo.setText(dir); - } - } - - /** - * Extracts the initial directory value from a path passed in setSelection() - * - * @return the inital directory value - */ - private String getInitDir() { - String projDir = _proj.getProject().getLocation().toString(); - if(_initPath != null && _initPath.segmentCount() > 1 ) { - return projDir + IPath.SEPARATOR + _initPath.segment(1); - } - // else - return projDir; - - } - - /** - * Extracts the initial extensions list from a path passed in setSelection() - * - * @return the intial comma separated list of extensions - */ - private String getInitExts() { - if(_initPath != null && _initPath.segmentCount() > 2 ) { - return _initPath.segment(2); - } - // else - return DEFAULT_EXTS; - } - - /** - * @return the current extension list - */ - protected String getExtValue() { - return _extText.getText().trim().toLowerCase(); - } - - /** - * @return the current directory - */ - protected String getDirValue() { - return _dirCombo.getText(); - } - - /** - * @return directory relative to the parent project - */ - protected String getRelativeDirValue() { - int projDirLen = _proj.getProject().getLocation().toString().length(); - return getDirValue().substring( projDirLen ); - } - - /** - * Checks that the directory is a subdirectory of the project being configured - * - * @param dir a directory to validate - * @return true if the directory is valid - */ - private boolean isDirValid(String dir) { - Path dirPath = new Path(dir); - return _proj.getProject().getLocation().makeAbsolute().isPrefixOf(dirPath); - } - - /** - * Checks that the list of comma separated extensions are valid. Must meet the - * following: - * - non-null and non-empty - * - match the regex [a-z_][a-z_,]* - * - * @param exts comma separated list of extensions - * @return true if the extension list is valid - */ - private boolean areExtsValid(String exts) { - if(exts==null || exts.equals("")) { - return false; - } - //else - return exts.matches("[a-z_][a-z_,]*"); - } - - /* (non-Javadoc) - * @see org.eclipse.jdt.ui.wizards.IClasspathContainerPage#finish() - */ - public boolean finish() { - if(!areExtsValid(getExtValue())) { - setErrorMessage(Messages.ExtErr); - return false; - } else if(!isDirValid(getDirValue())) { - setErrorMessage( NLS.bind(Messages.DirErr, _proj.getProject().getName())); - return false; - } - return true; - } - - /* (non-Javadoc) - * @see org.eclipse.jdt.ui.wizards.IClasspathContainerPage#getSelection() - */ - public IClasspathEntry getSelection() { - String dir = getRelativeDirValue(); - if(dir.equals("")) { - dir = SimpleDirContainer.ROOT_DIR; - } - IPath containerPath = SimpleDirContainer.ID.append( "/" + dir + "/" + - getExtValue()); - return JavaCore.newContainerEntry(containerPath); - } - - /* (non-Javadoc) - * @see org.eclipse.jdt.ui.wizards.IClasspathContainerPage#setSelection(org.eclipse.jdt.core.IClasspathEntry) - */ - public void setSelection(IClasspathEntry containerEntry) { - if(containerEntry != null) { - _initPath = containerEntry.getPath(); - } - } +public class SimpleDirContainerPage extends WizardPage implements + IClasspathContainerPage, IClasspathContainerPageExtension { + + private final static String DEFAULT_EXTS = "jar,zip"; + + private IJavaProject _proj; + private Combo _dirCombo; + private Button _dirBrowseButton; + private Text _extText; + private IPath _initPath = null; + private Composite composite; + + /** + * Default Constructor - sets title, page name, description + */ + public SimpleDirContainerPage() { + super(Messages.PageName, Messages.PageTitle, null); + setDescription(Messages.PageDesc); + setPageComplete(true); + } + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jdt.ui.wizards.IClasspathContainerPageExtension#initialize + * (org.eclipse.jdt.core.IJavaProject, + * org.eclipse.jdt.core.IClasspathEntry[]) + */ + public void initialize(IJavaProject project, + IClasspathEntry[] currentEntries) { + _proj = project; + } + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets + * .Composite) + */ + public void createControl(Composite parent) { + composite = new Composite(parent, SWT.NULL); + GridLayout gl_composite = new GridLayout(); + gl_composite.numColumns = 4; + composite.setLayout(gl_composite); + composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL + | GridData.HORIZONTAL_ALIGN_FILL)); + composite.setFont(parent.getFont()); + + createDirGroup(composite); + + createExtGroup(composite); + + setControl(composite); + + Label label = new Label(composite, SWT.NONE); + label.setText(Messages.DirLabel); + + _dirCombo = new Combo(composite, SWT.SINGLE | SWT.BORDER); + GridData gd__dirCombo = new GridData(SWT.FILL, SWT.CENTER, true, false, + 2, 1); + gd__dirCombo.widthHint = 307; + _dirCombo.setLayoutData(gd__dirCombo); + _dirCombo.setText(getInitDir()); + + _dirBrowseButton = new Button(composite, SWT.PUSH); + _dirBrowseButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, + false, false, 1, 1)); + _dirBrowseButton.setText(Messages.Browse); + _dirBrowseButton.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + handleDirBrowseButtonPressed(); + } + }); + + Label label_1 = new Label(composite, SWT.NONE); + label_1.setText(Messages.ExtLabel); + + _extText = new Text(composite, SWT.BORDER); + _extText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, + 2, 1)); + _extText.setText(getInitExts()); + new Label(composite, SWT.NONE); + new Label(composite, SWT.NONE); + } + + /** + * Creates the directory label, combo, and browse button + * + * @param parent + * the parent widget + */ + private void createDirGroup(Composite parent) { + } + + /** + * Creates the extensions label and text box + * + * @param parent + * parent widget + */ + private void createExtGroup(Composite parent) { + } + + /** + * Creates a directory dialog + */ + protected void handleDirBrowseButtonPressed() { + DirectoryDialog dialog = new DirectoryDialog(getContainer().getShell(), + SWT.SAVE); + dialog.setMessage(Messages.DirSelect); + dialog.setFilterPath(getLibDirectoryValue()); + String dir = dialog.open(); + if (dir != null) { + _dirCombo.setText(dir); + } + } + + /** + * Extracts the initial directory value from a path passed in setSelection() + * + * @return the inital directory value + */ + private String getInitDir() { + String projDir = _proj.getProject().getLocation().toString(); + if (_initPath != null && _initPath.segmentCount() > 1) { + return projDir + IPath.SEPARATOR + _initPath.segment(1); + } + // else + return projDir; + + } + + /** + * Extracts the initial extensions list from a path passed in setSelection() + * + * @return the intial comma separated list of extensions + */ + private String getInitExts() { + if (_initPath != null && _initPath.segmentCount() > 2) { + return _initPath.segment(2); + } + // else + return DEFAULT_EXTS; + } + + /** + * @return the current extension list + */ + protected String getExtensionValue() { + return _extText.getText().trim(); + } + + /** + * @return the current directory + */ + protected String getLibDirectoryValue() { + return _dirCombo.getText(); + } + + /** + * @return directory relative to the parent project + */ + protected String getRelativeDirValue() { + int projDirLen = _proj.getProject().getLocation().toString().length(); + return getLibDirectoryValue().substring(projDirLen); + } + + /** + * Checks that the directory is a subdirectory of the project being + * configured + * + * @param dir + * a directory to validate + * @return true if the directory is valid + */ + private boolean isDirValid(String dir) { + Path dirPath = new Path(dir); + return _proj.getProject().getLocation().makeAbsolute() + .isPrefixOf(dirPath); + } + + /** + * Checks that the list of comma separated extensions are valid. Must meet + * the following: - non-null and non-empty - match the regex [a-z_][a-z_,]* + * + * @param exts + * comma separated list of extensions + * @return true if the extension list is valid + */ + private boolean areExtsValid(String exts) { + if (exts == null || exts.equals("")) { + return false; + } + // else + return exts.matches("[a-z_][a-z_,]*"); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jdt.ui.wizards.IClasspathContainerPage#finish() + */ + public boolean finish() { + if (!areExtsValid(getExtensionValue())) { + setErrorMessage(Messages.ExtErr); + return false; + } else if (!isDirValid(getLibDirectoryValue())) { + setErrorMessage(NLS.bind(Messages.DirErr, _proj.getProject() + .getName())); + return false; + } + return true; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jdt.ui.wizards.IClasspathContainerPage#getSelection() + */ + public IClasspathEntry getSelection() { + String dir = getRelativeDirValue(); + if (dir.equals("")) { + dir = SimpleDirContainer.ROOT_DIR; + } + IPath containerPath = SimpleDirContainer.ID.append("/" + dir + "/" + + getExtensionValue()); + return JavaCore.newContainerEntry(containerPath); + } + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jdt.ui.wizards.IClasspathContainerPage#setSelection(org.eclipse + * .jdt.core.IClasspathEntry) + */ + public void setSelection(IClasspathEntry containerEntry) { + if (containerEntry != null) { + _initPath = containerEntry.getPath(); + } + } } From cf5d9ce20382acf24b706f0bd48577ba076f6780 Mon Sep 17 00:00:00 2001 From: dpalic Date: Sun, 21 Sep 2014 10:32:40 +0200 Subject: [PATCH 07/34] fixed two bugs --- .../directory/SimpleDirContainer.java | 397 +++++++++--------- 1 file changed, 204 insertions(+), 193 deletions(-) diff --git a/src/org/container/directory/SimpleDirContainer.java b/src/org/container/directory/SimpleDirContainer.java index 7293561..f68304a 100755 --- a/src/org/container/directory/SimpleDirContainer.java +++ b/src/org/container/directory/SimpleDirContainer.java @@ -18,207 +18,218 @@ * archives as source attachments. * * @author Aaron J Tarter - * @author benjchristensen (modified handling of filenames with multiple .'s in them) + * @author benjchristensen (modified handling of filenames with multiple .'s in + * them) */ public class SimpleDirContainer implements IClasspathContainer { - public final static Path ID = new Path( - "org.container.directory.SIMPLE_DIR_CONTAINER"); - // use this string to represent the root project directory - public final static String ROOT_DIR = "-"; - - // user-fiendly name for the container that shows on the UI - private String _desc; - // path string that uniquiely identifies this container instance - private IPath _path; - // directory that will hold files for inclusion in this container - private File _dir; - // Filename extensions to include in container - private HashSet _exts; - - /** - * This filename filter will be used to determine which files will be - * included in the container - */ - private FilenameFilter _dirFilter = new FilenameFilter() { - - /** - * This File filter is used to filter files that are not in the - * configured extension set. Also, filters out files that have the - * correct extension but end in -src, since filenames with this pattern - * will be attached as source. - * - * @see java.io.FilenameFilter#accept(java.io.File, java.lang.String) - */ - public boolean accept(File dir, String name) { - // if there is no dot then we don't have an extension and we'll skip this - if (name.lastIndexOf('.') == -1) { - return false; - } + public final static Path ID = new Path("org.container.directory.SIMPLE_DIR_CONTAINER"); + // use this string to represent the root project directory + public final static String ROOT_DIR = "-"; + + // user-fiendly name for the container that shows on the UI + private String _desc; + // path string that uniquiely identifies this container instance + private IPath _path; + // directory that will hold files for inclusion in this container + private File _dir; + // Filename extensions to include in container + private HashSet _exts; + + /** + * This filename filter will be used to determine which files will be + * included in the container + */ + private FilenameFilter _dirFilter = new FilenameFilter() { + + /** + * This File filter is used to filter files that are not in the configured + * extension set. Also, filters out files that have the correct extension + * but end in -src, since filenames with this pattern will be attached as + * source. + * + * @see java.io.FilenameFilter#accept(java.io.File, java.lang.String) + */ + public boolean accept(File dir, String name) { + // if there is no dot then we don't have an extension and we'll skip + // this + if (name.lastIndexOf('.') == -1) { + return false; + } - String ext = name.substring(name.lastIndexOf('.') + 1, name.length()).toLowerCase(); - String prefix = name.substring(0, name.lastIndexOf('.')); - - // lets avoid including filnames that end with -src since - // we will use this as the convention for attaching source - if (prefix.endsWith("-src")) { - return false; - } - if (_exts.contains(ext)) { - return true; - } + String ext = name.substring(name.lastIndexOf('.') + 1, name.length()).toLowerCase(); + String prefix = name.substring(0, name.lastIndexOf('.')); + // lets avoid including filnames that end with -src since + // we will use this as the convention for attaching source + if (prefix.endsWith("-src")) { return false; - } - }; - - /** - * This constructor uses the provided IPath and IJavaProject arguments to - * assign the instance variables that are used for determining the classpath - * entries included in this container. The provided IPath comes from the - * classpath entry element in project's .classpath file. It is a three - * segment path with the following segments: [0] - Unique container ID [1] - - * project relative directory that this container will collect files from - * [2] - comma separated list of extensions to include in this container - * (extensions do not include the preceding ".") - * - * @param path - * unique path for this container instance, including directory - * and extensions a segments - * @param project - * the Java project that is referencing this container - */ - public SimpleDirContainer(IPath path, IJavaProject project) { - _path = path; - - // extract the extension types for this container from the path - String extString = path.lastSegment(); - _exts = new HashSet(); - String[] extArray = extString.split(","); - for (String ext : extArray) { - _exts.add(ext.toLowerCase()); - } - // extract the directory string from the PATH and create the directory - // relative - // to the project - path = path.removeLastSegments(1).removeFirstSegments(1); - File rootProj = project.getProject().getLocation().makeAbsolute().toFile(); - if (path.segmentCount() == 1 && path.segment(0).equals(ROOT_DIR)) { - _dir = rootProj; - path = path.removeFirstSegments(1); - } else { - _dir = new File(rootProj, path.toString()); - } - - // Create UI String for this container that reflects the directory being used - _desc = "Directory Classpath: /" + path; - - } - - /** - * This method is used to determine if the directory specified in the - * container path is valid, i.e. it exists relative to the project and it is - * a directory. - * - * @return true if the configured directory is valid - */ - public boolean isValid() { - if (_dir.exists() && _dir.isDirectory()) { + } + if (_exts.contains(ext)) { return true; - } - return false; - } - - /** - * Returns a set of CPE_LIBRARY entries from the configured project - * directory that conform to the configured set of file extensions and - * attaches a source archive to the libraries entries if a file with same - * name ending with -src is found in the directory. - * - * @see org.eclipse.jdt.core.IClasspathContainer#getClasspathEntries() - */ - public IClasspathEntry[] getClasspathEntries() { - ArrayList entryList = new ArrayList(); - // fetch the names of all files that match our filter - File[] libs = _dir.listFiles(_dirFilter); - - try { + } + + return false; + } + }; + + /** + * This constructor uses the provided IPath and IJavaProject arguments to + * assign the instance variables that are used for determining the classpath + * entries included in this container. The provided IPath comes from the + * classpath entry element in project's .classpath file. It is a three + * segment path with the following segments: [0] - Unique container ID [1] - + * project relative directory that this container will collect files from [2] + * - comma separated list of extensions to include in this container + * (extensions do not include the preceding ".") + * + * @param path + * unique path for this container instance, including directory and + * extensions a segments + * @param project + * the Java project that is referencing this container + */ + public SimpleDirContainer(IPath path, IJavaProject project) { + _path = path; + + // extract the extension types for this container from the path + String extString = path.lastSegment(); + _exts = new HashSet(); + String[] extArray = extString.split(","); + for (String ext : extArray) { + _exts.add(ext.toLowerCase()); + } + // extract the directory string from the PATH and create the directory + // relative + // to the project + path = path.removeLastSegments(1).removeFirstSegments(1); + File rootProj = project.getProject().getLocation().makeAbsolute().toFile(); + if (path.segmentCount() == 1 && path.segment(0).equals(ROOT_DIR)) { + _dir = rootProj; + path = path.removeFirstSegments(1); + } else { + File classPathFolder = new File(rootProj, path.toString()); + if (!classPathFolder.exists()) { + Logger.log(Logger.WARNING, + "Folder of Directory Container missing: " + path.toString() + " of project " + project.getElementName() + + " creating it now to avoid errors in eclipse"); + + classPathFolder.mkdirs(); + } + _dir = classPathFolder; + + } + + // Create UI String for this container that reflects the directory being + // used + _desc = "Directory Classpath: /" + path; + + } + + /** + * This method is used to determine if the directory specified in the + * container path is valid, i.e. it exists relative to the project and it is + * a directory. + * + * @return true if the configured directory is valid + */ + public boolean isValid() { + if (_dir.exists() && _dir.isDirectory()) { + return true; + } + return false; + } + + /** + * Returns a set of CPE_LIBRARY entries from the configured project directory + * that conform to the configured set of file extensions and attaches a + * source archive to the libraries entries if a file with same name ending + * with -src is found in the directory. + * + * @see org.eclipse.jdt.core.IClasspathContainer#getClasspathEntries() + */ + public IClasspathEntry[] getClasspathEntries() { + ArrayList entryList = new ArrayList(); + // fetch the names of all files that match our filter + + if (_dir.isDirectory()) { + + File[] libs = _dir.listFiles(_dirFilter); + + try { for (File lib : libs) { - // strip off the file extension - String ext = lib.getName().split("[.]")[1]; - - // now see if this archive has an associated src jar - File srcArc = new File(lib.getAbsolutePath().replace("." + ext, "-src." + ext)); - Path srcPath = null; - // if the source archive exists then get the path to attach it - if (srcArc.exists()) { - srcPath = new Path(srcArc.getAbsolutePath()); - } - // create a new CPE_LIBRARY type of cp entry with an attached - // source - // archive if it exists - - entryList - .add(JavaCore.newLibraryEntry( - new Path(lib.getAbsolutePath()), srcPath, - new Path("/"))); + // strip off the file extension + String ext = lib.getName().split("[.]")[1]; + + // now see if this archive has an associated src jar + File srcArc = new File(lib.getAbsolutePath().replace("." + ext, "-src." + ext)); + Path srcPath = null; + // if the source archive exists then get the path to attach it + if (srcArc.exists()) { + srcPath = new Path(srcArc.getAbsolutePath()); + } + // create a new CPE_LIBRARY type of cp entry with an attached + // source + // archive if it exists + + entryList.add(JavaCore.newLibraryEntry(new Path(lib.getAbsolutePath()), srcPath, new Path("/"))); } - } catch (Exception e) { + } catch (Exception e) { e.printStackTrace(); Logger.log(Logger.ERROR, "getClasspathEntries - ERROR: " + e.getMessage()); - } - // convert the list to an array and return it - IClasspathEntry[] entryArray = new IClasspathEntry[entryList.size()]; - - return (IClasspathEntry[]) entryList.toArray(entryArray); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.core.IClasspathContainer#getDescription() - */ - public String getDescription() { - return _desc; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.core.IClasspathContainer#getKind() - */ - public int getKind() { - return IClasspathContainer.K_APPLICATION; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.core.IClasspathContainer#getPath() - */ - public IPath getPath() { - return _path; - } - - /* - * @return configured directory for this container - */ - public File getDir() { - return _dir; - } - - /* - * @return whether or not this container would include the file - */ - public boolean isContained(File file) { - if (file.getParentFile().equals(_dir)) { - // peel off file extension - String fExt = file.toString().substring( - file.toString().lastIndexOf('.') + 1); - // check is it is in the set of cofigured extensions - if (_exts.contains(fExt.toLowerCase())) { - return true; - } - } - return false; - } + } + } + // convert the list to an array and return it + IClasspathEntry[] entryArray = new IClasspathEntry[entryList.size()]; + + return (IClasspathEntry[]) entryList.toArray(entryArray); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jdt.core.IClasspathContainer#getDescription() + */ + public String getDescription() { + return _desc; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jdt.core.IClasspathContainer#getKind() + */ + public int getKind() { + return IClasspathContainer.K_APPLICATION; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jdt.core.IClasspathContainer#getPath() + */ + public IPath getPath() { + return _path; + } + + /* + * @return configured directory for this container + */ + public File getDir() { + return _dir; + } + + /* + * @return whether or not this container would include the file + */ + public boolean isContained(File file) { + if (file.getParentFile().equals(_dir)) { + // peel off file extension + String fExt = file.toString().substring(file.toString().lastIndexOf('.') + 1); + // check is it is in the set of cofigured extensions + if (_exts.contains(fExt.toLowerCase())) { + return true; + } + } + return false; + } } From df36fb9fd04510bd184733cd5d101896e616b16e Mon Sep 17 00:00:00 2001 From: dpalic Date: Sun, 21 Sep 2014 10:35:11 +0200 Subject: [PATCH 08/34] added eclipse settings to have all developers same coding style let eclipse cleanup the messages --- .settings/org.eclipse.jdt.core.prefs | 294 ++++++++++++++++++ .settings/org.eclipse.jdt.ui.prefs | 7 + .../container/directory/messages.properties | 24 +- 3 files changed, 314 insertions(+), 11 deletions(-) create mode 100644 .settings/org.eclipse.jdt.ui.prefs diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index f42de36..b98a5bb 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,7 +1,301 @@ eclipse.preferences.version=1 +org.eclipse.jdt.core.codeComplete.argumentPrefixes= +org.eclipse.jdt.core.codeComplete.argumentSuffixes= +org.eclipse.jdt.core.codeComplete.fieldPrefixes= +org.eclipse.jdt.core.codeComplete.fieldSuffixes= +org.eclipse.jdt.core.codeComplete.localPrefixes= +org.eclipse.jdt.core.codeComplete.localSuffixes= +org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= +org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes= org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 org.eclipse.jdt.core.compiler.compliance=1.7 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.source=1.7 +org.eclipse.jdt.core.formatter.align_type_members_on_columns=false +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_assignment=0 +org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 +org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=0 +org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 +org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 +org.eclipse.jdt.core.formatter.blank_lines_before_method=1 +org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 +org.eclipse.jdt.core.formatter.blank_lines_before_package=0 +org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 +org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 +org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false +org.eclipse.jdt.core.formatter.comment.format_block_comments=true +org.eclipse.jdt.core.formatter.comment.format_header=false +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true +org.eclipse.jdt.core.formatter.comment.indent_root_tags=true +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert +org.eclipse.jdt.core.formatter.comment.line_length=80 +org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true +org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true +org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=2 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off +org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indentation.size=3 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert +org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert +org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert +org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.join_lines_in_comments=true +org.eclipse.jdt.core.formatter.join_wrapped_lines=true +org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false +org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.jdt.core.formatter.lineSplit=140 +org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false +org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false +org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 +org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 +org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true +org.eclipse.jdt.core.formatter.tabulation.char=space +org.eclipse.jdt.core.formatter.tabulation.size=3 +org.eclipse.jdt.core.formatter.use_on_off_tags=false +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true +org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true +org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true diff --git a/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 0000000..3d10491 --- /dev/null +++ b/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +formatter_profile=_SimpleDirectoryContainer +formatter_settings_version=12 +org.eclipse.jdt.ui.exception.name=e +org.eclipse.jdt.ui.gettersetter.use.is=true +org.eclipse.jdt.ui.keywordthis=false +org.eclipse.jdt.ui.overrideannotation=true diff --git a/src/org/container/directory/messages.properties b/src/org/container/directory/messages.properties index 48d5e95..c04d73c 100755 --- a/src/org/container/directory/messages.properties +++ b/src/org/container/directory/messages.properties @@ -1,11 +1,13 @@ -Browse=Browse... -DirErr=The directory must be a subdirectory of the project {0} -DirLabel=Directory: -DirSelect=Select the directory for the Directory Container -ExtErr=Extensions are not valid. Verify that the extensions are comma separated and do not include the preceding '.' -ExtLabel=Extensions (comma separated, not including .): -InvalidContainer=Invalid container: -PageDesc=A classpath container that collects files with configured extensions from a configured directory -PageName=Directory Container Wizard -PageTitle=Directory Container -ContainerName = Directory Container +#Eclipse modern messages class +#Sat Sep 20 12:25:24 CEST 2014 +Browse=Browse... +ContainerName=Directory Container +DirErr=The directory must be a subdirectory of the project {0} +DirLabel=Directory\: +DirSelect=Select the directory for the Directory Container +ExtErr=Extensions are not valid. Verify that the extensions are comma separated and do not include the preceding '.' +ExtLabel=Extensions (comma separated, not including .)\: +InvalidContainer=Invalid container\: +PageDesc=A classpath container that collects files with configured extensions from a configured directory +PageName=Directory Container Wizard +PageTitle=Directory Container From 7c1e43f73c13094e76b9f5d7d756d7ae21136b65 Mon Sep 17 00:00:00 2001 From: dpalic Date: Mon, 29 Sep 2014 08:44:22 +0200 Subject: [PATCH 09/34] format code --- .../directory/ContainerDirFilter.java | 79 +++++++++---------- 1 file changed, 39 insertions(+), 40 deletions(-) diff --git a/src/org/container/directory/ContainerDirFilter.java b/src/org/container/directory/ContainerDirFilter.java index dff6fa2..54f3fb8 100755 --- a/src/org/container/directory/ContainerDirFilter.java +++ b/src/org/container/directory/ContainerDirFilter.java @@ -9,50 +9,49 @@ import org.eclipse.jface.viewers.ViewerFilter; /** - * This element filter filters files from the Java Package View if they are included in a - * SimpleDirContainer that is on the parent Java project's classpath. This will prevent - * the user from right-clicking hte file and adding it to the build path as a CPE_LIBRARY - * classpath entry and thus prevent duplication on the classpath. - * + * This element filter filters files from the Java Package View if they are + * included in a SimpleDirContainer that is on the parent Java project's + * classpath. This will prevent the user from right-clicking hte file and adding + * it to the build path as a CPE_LIBRARY classpath entry and thus prevent + * duplication on the classpath. + * * @author Aaron J Tarter */ public class ContainerDirFilter extends ViewerFilter { - /* - * @ return false if the Java element is a file that is contained in a - * SimpleDirContainer that is in the classpath of the owning Java project - * (non-Javadoc) - * @see org.eclipse.jface.viewers.ViewerFilter#select( - * org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) - */ - @Override - public boolean select(Viewer viewer, Object parentElement, Object element) { - if(element instanceof IFile) { - IFile f = (IFile)element; - IJavaProject jp = JavaCore.create(f.getProject()); - try { - // lets see if this file is included in a SimpleDirContainer - IClasspathEntry[] entries = jp.getRawClasspath(); - for(IClasspathEntry entry: entries) { - if(entry.getEntryKind()==IClasspathEntry.CPE_CONTAINER) { - if(SimpleDirContainer.ID.isPrefixOf(entry.getPath())) { - // we know this is a SimpleDirContainer so lets get the - // instance - SimpleDirContainer con = (SimpleDirContainer)JavaCore. - getClasspathContainer(entry.getPath(), jp); - if(con.isContained(f.getLocation().toFile())){ - // this file will is included in the container, so dont - // show it - return false; - } - } - } - } - } catch(JavaModelException e) { - Logger.log(Logger.ERROR, e); + /* + * @ return false if the Java element is a file that is contained in a + * SimpleDirContainer that is in the classpath of the owning Java project + * (non-Javadoc) + * + * @see org.eclipse.jface.viewers.ViewerFilter#select( + * org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) + */ + @Override + public boolean select(Viewer viewer, Object parentElement, Object element) { + if (element instanceof IFile) { + IFile f = (IFile) element; + IJavaProject jp = JavaCore.create(f.getProject()); + try { + // lets see if this file is included in a SimpleDirContainer + IClasspathEntry[] entries = jp.getRawClasspath(); + for (IClasspathEntry entry : entries) { + if (entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER) { + if (SimpleDirContainer.ID.isPrefixOf(entry.getPath())) { + // we know this is a SimpleDirContainer so lets get the instance + SimpleDirContainer con = (SimpleDirContainer) JavaCore.getClasspathContainer(entry.getPath(), jp); + if (con.isContained(f.getLocation().toFile())) { + // this file will is included in the container, so dont show it + return false; + } + } + } } - } - return true; - } + } catch (JavaModelException e) { + Logger.log(Logger.ERROR, e); + } + } + return true; + } } From e811a02c763608fcec134e897c6afc4c5a448bdc Mon Sep 17 00:00:00 2001 From: dpalic Date: Mon, 29 Sep 2014 08:45:24 +0200 Subject: [PATCH 10/34] added for type safe access to the attributes of the classpaths --- .../directory/ClasspathExtraAttribute.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/org/container/directory/ClasspathExtraAttribute.java diff --git a/src/org/container/directory/ClasspathExtraAttribute.java b/src/org/container/directory/ClasspathExtraAttribute.java new file mode 100644 index 0000000..32d7e42 --- /dev/null +++ b/src/org/container/directory/ClasspathExtraAttribute.java @@ -0,0 +1,18 @@ +package org.container.directory; + +/** + * Enums for the additional attributes. + * @author Darko Palic + */ +public enum ClasspathExtraAttribute { + FILE_EXTENSTIONS("extensions"); + + private String value; + private ClasspathExtraAttribute(String pValue) { + value = pValue; + } + + public String getValue() { + return value; + } +} From bc750357ad07cf1abb77d09489f24c92953d569c Mon Sep 17 00:00:00 2001 From: dpalic Date: Mon, 29 Sep 2014 10:35:22 +0200 Subject: [PATCH 11/34] tried to add stored container handling added overridden methods for debugging --- .../SimpleDirContainerInitializer.java | 128 ++++++++++++------ 1 file changed, 90 insertions(+), 38 deletions(-) diff --git a/src/org/container/directory/SimpleDirContainerInitializer.java b/src/org/container/directory/SimpleDirContainerInitializer.java index f3f4bc6..2cbe4da 100755 --- a/src/org/container/directory/SimpleDirContainerInitializer.java +++ b/src/org/container/directory/SimpleDirContainerInitializer.java @@ -2,57 +2,109 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IStatus; import org.eclipse.jdt.core.ClasspathContainerInitializer; import org.eclipse.jdt.core.IClasspathContainer; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.JavaCore; /** - * This classpath container initializer constructs a SimpleDirContainer with the give - * container path and Java project. It then validates the container before setting - * it in the classpath. If the container is invalid, it fails silently and logs an - * error to the Eclipse error log. + * This classpath container initializer constructs a SimpleDirContainer with the + * give container path and Java project. It then validates the container before + * setting it in the classpath. If the container is invalid, it fails silently + * and logs an error to the Eclipse error log. * * @author Aaron J Tarter */ -public class SimpleDirContainerInitializer extends - ClasspathContainerInitializer { +public class SimpleDirContainerInitializer extends ClasspathContainerInitializer { - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.core.ClasspathContainerInitializer#initialize(org.eclipse.core.runtime.IPath, org.eclipse.jdt.core.IJavaProject) - */ - @Override - public void initialize(IPath containerPath, IJavaProject project) - throws CoreException { - SimpleDirContainer container = new SimpleDirContainer(containerPath, project); - if (container.isValid()) { + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jdt.core.ClasspathContainerInitializer#initialize(org.eclipse + * .core.runtime.IPath, org.eclipse.jdt.core.IJavaProject) + */ + @Override + public void initialize(IPath containerPath, IJavaProject project) throws CoreException { + SimpleDirContainer container = null; + // Darko TODO: unsure about this code to read from storage, since the lifecycle of the containers is not clear defined. +// if (project.isOpen()) { +// container = SimpleDirContainer.lookupExistingContainer(containerPath, project); +// } + + if (container == null) { + container = new SimpleDirContainer(containerPath, project); + if (container.isValid()) { JavaCore.setClasspathContainer(containerPath, new IJavaProject[] { project }, new IClasspathContainer[] { container }, null); - } else { + } else { Logger.log(Logger.WARNING, Messages.InvalidContainer + containerPath); - } - } + } + } - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.core.ClasspathContainerInitializer#canUpdateClasspathContainer(org.eclipse.core.runtime.IPath, org.eclipse.jdt.core.IJavaProject) - */ - @Override - public boolean canUpdateClasspathContainer(IPath containerPath, - IJavaProject project) { - return true; - } + } - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.core.ClasspathContainerInitializer#requestClasspathContainerUpdate(org.eclipse.core.runtime.IPath, org.eclipse.jdt.core.IJavaProject, org.eclipse.jdt.core.IClasspathContainer) - */ - @Override - public void requestClasspathContainerUpdate(IPath containerPath, IJavaProject project, IClasspathContainer containerSuggestion) throws CoreException { - JavaCore.setClasspathContainer(containerPath, new IJavaProject[] { project }, new IClasspathContainer[] { containerSuggestion }, null); - } + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jdt.core.ClasspathContainerInitializer#canUpdateClasspathContainer + * (org.eclipse.core.runtime.IPath, org.eclipse.jdt.core.IJavaProject) + */ + @Override + public boolean canUpdateClasspathContainer(IPath containerPath, IJavaProject project) { + return true; + } + /* + * (non-Javadoc) + * + * @see org.eclipse.jdt.core.ClasspathContainerInitializer# + * requestClasspathContainerUpdate(org.eclipse.core.runtime.IPath, + * org.eclipse.jdt.core.IJavaProject, + * org.eclipse.jdt.core.IClasspathContainer) + */ + @Override + public void requestClasspathContainerUpdate(IPath containerPath, IJavaProject project, IClasspathContainer containerSuggestion) + throws CoreException { + JavaCore + .setClasspathContainer(containerPath, new IJavaProject[] { project }, new IClasspathContainer[] { containerSuggestion }, null); + } + + @Override + public Object getComparisonID(IPath containerPath, IJavaProject project) { + IPath result = containerPath; + // result = project.getElementName() + "/" + containerPath.toString(); + return result; + } + + @Override + public IStatus getAccessRulesStatus(IPath containerPath, IJavaProject project) { + // TODO Auto-generated method stub + return super.getAccessRulesStatus(containerPath, project); + } + + @Override + public String getDescription(IPath containerPath, IJavaProject project) { + return SimpleDirContainer.createDescription(containerPath, project); + } + + @Override + public IStatus getAttributeStatus(IPath containerPath, IJavaProject project, String attributeKey) { + // TODO Auto-generated method stub + return super.getAttributeStatus(containerPath, project, attributeKey); + } + + @Override + public IStatus getSourceAttachmentStatus(IPath containerPath, IJavaProject project) { + // TODO Auto-generated method stub + return super.getSourceAttachmentStatus(containerPath, project); + } + + @Override + public IClasspathContainer getFailureContainer(IPath containerPath, IJavaProject project) { + // TODO Auto-generated method stub + return super.getFailureContainer(containerPath, project); + } + } From a25bd4b5b579a06bc1548b1c5c993de026c6ce77 Mon Sep 17 00:00:00 2001 From: dpalic Date: Mon, 29 Sep 2014 10:36:01 +0200 Subject: [PATCH 12/34] moved dirContainer code to dirContainer --- .../directory/SimpleDirContainerPage.java | 441 +++++++++--------- 1 file changed, 224 insertions(+), 217 deletions(-) diff --git a/src/org/container/directory/SimpleDirContainerPage.java b/src/org/container/directory/SimpleDirContainerPage.java index 4c51939..a544e7e 100755 --- a/src/org/container/directory/SimpleDirContainerPage.java +++ b/src/org/container/directory/SimpleDirContainerPage.java @@ -4,7 +4,6 @@ import org.eclipse.core.runtime.Path; import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.ui.wizards.IClasspathContainerPage; import org.eclipse.jdt.ui.wizards.IClasspathContainerPageExtension; import org.eclipse.jface.wizard.WizardPage; @@ -27,247 +26,255 @@ * * @author Aaron J Tarter */ -public class SimpleDirContainerPage extends WizardPage implements - IClasspathContainerPage, IClasspathContainerPageExtension { +public class SimpleDirContainerPage extends WizardPage implements IClasspathContainerPage, IClasspathContainerPageExtension { - private final static String DEFAULT_EXTS = "jar,zip"; + private final static String DEFAULT_EXTS = "jar,zip"; - private IJavaProject _proj; - private Combo _dirCombo; - private Button _dirBrowseButton; - private Text _extText; - private IPath _initPath = null; - private Composite composite; + private IJavaProject _proj; + private IClasspathEntry[] _classpathEntries; - /** - * Default Constructor - sets title, page name, description - */ - public SimpleDirContainerPage() { - super(Messages.PageName, Messages.PageTitle, null); - setDescription(Messages.PageDesc); - setPageComplete(true); - } + private Combo _dirCombo; + private Button _dirBrowseButton; + private Text _extText; + private IPath _initPath = null; + private Composite composite; - /* - * (non-Javadoc) - * - * @see - * org.eclipse.jdt.ui.wizards.IClasspathContainerPageExtension#initialize - * (org.eclipse.jdt.core.IJavaProject, - * org.eclipse.jdt.core.IClasspathEntry[]) - */ - public void initialize(IJavaProject project, - IClasspathEntry[] currentEntries) { - _proj = project; - } + /** + * Default Constructor - sets title, page name, description + */ + public SimpleDirContainerPage() { + super(Messages.PageName, Messages.PageTitle, null); + setDescription(Messages.PageDesc); + setPageComplete(true); + } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets - * .Composite) - */ - public void createControl(Composite parent) { - composite = new Composite(parent, SWT.NULL); - GridLayout gl_composite = new GridLayout(); - gl_composite.numColumns = 4; - composite.setLayout(gl_composite); - composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL - | GridData.HORIZONTAL_ALIGN_FILL)); - composite.setFont(parent.getFont()); + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jdt.ui.wizards.IClasspathContainerPageExtension#initialize + * (org.eclipse.jdt.core.IJavaProject, + * org.eclipse.jdt.core.IClasspathEntry[]) + */ + public void initialize(IJavaProject project, IClasspathEntry[] currentEntries) { + _proj = project; + _classpathEntries = currentEntries; + } - createDirGroup(composite); + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets + * .Composite) + */ + public void createControl(Composite parent) { + composite = new Composite(parent, SWT.NULL); + GridLayout gl_composite = new GridLayout(); + gl_composite.numColumns = 4; + composite.setLayout(gl_composite); + composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL)); + composite.setFont(parent.getFont()); - createExtGroup(composite); + createDirGroup(composite); - setControl(composite); + createExtGroup(composite); - Label label = new Label(composite, SWT.NONE); - label.setText(Messages.DirLabel); + setControl(composite); - _dirCombo = new Combo(composite, SWT.SINGLE | SWT.BORDER); - GridData gd__dirCombo = new GridData(SWT.FILL, SWT.CENTER, true, false, - 2, 1); - gd__dirCombo.widthHint = 307; - _dirCombo.setLayoutData(gd__dirCombo); - _dirCombo.setText(getInitDir()); + Label label = new Label(composite, SWT.NONE); + label.setText(Messages.DirLabel); - _dirBrowseButton = new Button(composite, SWT.PUSH); - _dirBrowseButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, - false, false, 1, 1)); - _dirBrowseButton.setText(Messages.Browse); - _dirBrowseButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - handleDirBrowseButtonPressed(); - } - }); + _dirCombo = new Combo(composite, SWT.SINGLE | SWT.BORDER); + GridData gd__dirCombo = new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1); + gd__dirCombo.widthHint = 307; + _dirCombo.setLayoutData(gd__dirCombo); + _dirCombo.setText(getInitDir()); - Label label_1 = new Label(composite, SWT.NONE); - label_1.setText(Messages.ExtLabel); + _dirBrowseButton = new Button(composite, SWT.PUSH); + _dirBrowseButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); + _dirBrowseButton.setText(Messages.Browse); + _dirBrowseButton.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + handleDirBrowseButtonPressed(); + } + }); - _extText = new Text(composite, SWT.BORDER); - _extText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, - 2, 1)); - _extText.setText(getInitExts()); - new Label(composite, SWT.NONE); - new Label(composite, SWT.NONE); - } + Label label_1 = new Label(composite, SWT.NONE); + label_1.setText(Messages.ExtLabel); - /** - * Creates the directory label, combo, and browse button - * - * @param parent - * the parent widget - */ - private void createDirGroup(Composite parent) { - } + _extText = new Text(composite, SWT.BORDER); + _extText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1)); + _extText.setText(getInitExts()); + new Label(composite, SWT.NONE); + new Label(composite, SWT.NONE); + } - /** - * Creates the extensions label and text box - * - * @param parent - * parent widget - */ - private void createExtGroup(Composite parent) { - } + /** + * Creates the directory label, combo, and browse button + * + * @param parent + * the parent widget + */ + private void createDirGroup(Composite parent) { + } - /** - * Creates a directory dialog - */ - protected void handleDirBrowseButtonPressed() { - DirectoryDialog dialog = new DirectoryDialog(getContainer().getShell(), - SWT.SAVE); - dialog.setMessage(Messages.DirSelect); - dialog.setFilterPath(getLibDirectoryValue()); - String dir = dialog.open(); - if (dir != null) { - _dirCombo.setText(dir); - } - } + /** + * Creates the extensions label and text box + * + * @param parent + * parent widget + */ + private void createExtGroup(Composite parent) { + } - /** - * Extracts the initial directory value from a path passed in setSelection() - * - * @return the inital directory value - */ - private String getInitDir() { - String projDir = _proj.getProject().getLocation().toString(); - if (_initPath != null && _initPath.segmentCount() > 1) { - return projDir + IPath.SEPARATOR + _initPath.segment(1); - } - // else - return projDir; + /** + * Creates a directory dialog + */ + protected void handleDirBrowseButtonPressed() { + DirectoryDialog dialog = new DirectoryDialog(getContainer().getShell(), SWT.SAVE); + dialog.setMessage(Messages.DirSelect); + dialog.setFilterPath(getLibDirectoryValue()); + String dir = dialog.open(); + if (dir != null) { + _dirCombo.setText(dir); + } + } - } + /** + * Extracts the initial directory value from a path passed in setSelection() + * + * @return the inital directory value + */ + private String getInitDir() { + String result; + + result = SimpleDirContainer.getFullPath(_initPath, _proj); - /** - * Extracts the initial extensions list from a path passed in setSelection() - * - * @return the intial comma separated list of extensions - */ - private String getInitExts() { - if (_initPath != null && _initPath.segmentCount() > 2) { - return _initPath.segment(2); - } - // else - return DEFAULT_EXTS; - } + return result; + } - /** - * @return the current extension list - */ - protected String getExtensionValue() { - return _extText.getText().trim(); - } + /** + * Extracts the initial extensions list from a path passed in setSelection() + * + * @return the intial comma separated list of extensions + */ + private String getInitExts() { + String result = null; + + IPath defaultPath; + if (_initPath == null) { + // we have no entry and we are creating now a new one, so provide a default initPath + defaultPath = _proj.getPath(); + } else { + defaultPath = _initPath; + } + + SimpleDirContainer found = SimpleDirContainer.lookupExistingContainer(defaultPath, _proj); + if (found == null) { + result = DEFAULT_EXTS; + } else { + String exts = SimpleDirContainer.getExtraAttributeValue(found, ClasspathExtraAttribute.FILE_EXTENSTIONS); + if (exts == null) { + result = DEFAULT_EXTS; + } else { + result = exts; + } + } + + return result; + } - /** - * @return the current directory - */ - protected String getLibDirectoryValue() { - return _dirCombo.getText(); - } + /** + * @return the current extension list + */ + protected String getExtensionValue() { + return _extText.getText().trim(); + } - /** - * @return directory relative to the parent project - */ - protected String getRelativeDirValue() { - int projDirLen = _proj.getProject().getLocation().toString().length(); - return getLibDirectoryValue().substring(projDirLen); - } + /** + * @return the current directory + */ + protected String getLibDirectoryValue() { + return _dirCombo.getText(); + } - /** - * Checks that the directory is a subdirectory of the project being - * configured - * - * @param dir - * a directory to validate - * @return true if the directory is valid - */ - private boolean isDirValid(String dir) { - Path dirPath = new Path(dir); - return _proj.getProject().getLocation().makeAbsolute() - .isPrefixOf(dirPath); - } + /** + * @return directory relative to the parent project + */ + protected String getRelativeDirValue() { + int projDirLen = _proj.getProject().getLocation().toString().length(); + return getLibDirectoryValue().substring(projDirLen); + } - /** - * Checks that the list of comma separated extensions are valid. Must meet - * the following: - non-null and non-empty - match the regex [a-z_][a-z_,]* - * - * @param exts - * comma separated list of extensions - * @return true if the extension list is valid - */ - private boolean areExtsValid(String exts) { - if (exts == null || exts.equals("")) { - return false; - } - // else - return exts.matches("[a-z_][a-z_,]*"); - } + /** + * Checks that the directory is a subdirectory of the project being + * configured + * + * @param dir + * a directory to validate + * @return true if the directory is valid + */ + private boolean isDirValid(String dir) { + Path dirPath = new Path(dir); + return _proj.getProject().getLocation().makeAbsolute().isPrefixOf(dirPath); + } - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.ui.wizards.IClasspathContainerPage#finish() - */ - public boolean finish() { - if (!areExtsValid(getExtensionValue())) { - setErrorMessage(Messages.ExtErr); - return false; - } else if (!isDirValid(getLibDirectoryValue())) { - setErrorMessage(NLS.bind(Messages.DirErr, _proj.getProject() - .getName())); - return false; - } - return true; - } + /** + * Checks that the list of comma separated extensions are valid. Must meet + * the following: - non-null and non-empty - match the regex [a-z_][a-z_,]* + * + * @param exts + * comma separated list of extensions + * @return true if the extension list is valid + */ + private boolean areExtsValid(String exts) { + if (exts == null || exts.equals("")) { + return false; + } + // else + return exts.matches("[a-z_][a-z_,]*"); + } - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.ui.wizards.IClasspathContainerPage#getSelection() - */ - public IClasspathEntry getSelection() { - String dir = getRelativeDirValue(); - if (dir.equals("")) { - dir = SimpleDirContainer.ROOT_DIR; - } - IPath containerPath = SimpleDirContainer.ID.append("/" + dir + "/" - + getExtensionValue()); - return JavaCore.newContainerEntry(containerPath); - } + /* + * (non-Javadoc) + * + * @see org.eclipse.jdt.ui.wizards.IClasspathContainerPage#finish() + */ + public boolean finish() { + if (!areExtsValid(getExtensionValue())) { + setErrorMessage(Messages.ExtErr); + return false; + } else if (!isDirValid(getLibDirectoryValue())) { + setErrorMessage(NLS.bind(Messages.DirErr, _proj.getProject().getName())); + return false; + } + return true; + } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.jdt.ui.wizards.IClasspathContainerPage#setSelection(org.eclipse - * .jdt.core.IClasspathEntry) - */ - public void setSelection(IClasspathEntry containerEntry) { - if (containerEntry != null) { - _initPath = containerEntry.getPath(); - } - } + /* + * (non-Javadoc) + * + * @see org.eclipse.jdt.ui.wizards.IClasspathContainerPage#getSelection() + */ + public IClasspathEntry getSelection() { + String dir = getRelativeDirValue(); + + IClasspathEntry entry = SimpleDirContainer.getClasspathEntry(_proj, dir, getExtensionValue()); + + return entry; + } + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jdt.ui.wizards.IClasspathContainerPage#setSelection(org.eclipse + * .jdt.core.IClasspathEntry) + */ + public void setSelection(IClasspathEntry containerEntry) { + if (containerEntry != null) { + _initPath = containerEntry.getPath(); + } + } } From c802b63a3eddbd989ab471934e2c6f3507d490e9 Mon Sep 17 00:00:00 2001 From: dpalic Date: Mon, 29 Sep 2014 10:37:24 +0200 Subject: [PATCH 13/34] improved code and provided more static methods for external accesses to the class --- .../directory/SimpleDirContainer.java | 186 +++++++++++++++--- 1 file changed, 161 insertions(+), 25 deletions(-) diff --git a/src/org/container/directory/SimpleDirContainer.java b/src/org/container/directory/SimpleDirContainer.java index f68304a..43de241 100755 --- a/src/org/container/directory/SimpleDirContainer.java +++ b/src/org/container/directory/SimpleDirContainer.java @@ -3,14 +3,20 @@ import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashSet; +import java.util.Set; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; +import org.eclipse.jdt.core.IClasspathAttribute; import org.eclipse.jdt.core.IClasspathContainer; import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.JavaCore; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jdt.internal.core.ClasspathAttribute; +import org.eclipse.jdt.internal.core.ClasspathEntry; /** * * This classpath container add archive files from a configured project @@ -28,6 +34,9 @@ public class SimpleDirContainer implements IClasspathContainer { // user-fiendly name for the container that shows on the UI private String _desc; + + // Project of this path + private IJavaProject _project; // path string that uniquiely identifies this container instance private IPath _path; // directory that will hold files for inclusion in this container @@ -64,8 +73,15 @@ public boolean accept(File dir, String name) { if (prefix.endsWith("-src")) { return false; } - if (_exts.contains(ext)) { + // Darko TODO: handling of dir container extension must be improved at all. Just a hack for the previous code + if (_exts == null) { + Logger.log(Logger.WARNING, "Directory Container could not read the extensions from .classpath for: " + dir.toString() + + " of name " + name); return true; + } else { + if (_exts.contains(ext)) { + return true; + } } return false; @@ -88,40 +104,37 @@ public boolean accept(File dir, String name) { * @param project * the Java project that is referencing this container */ - public SimpleDirContainer(IPath path, IJavaProject project) { + public SimpleDirContainer(final IPath path, IJavaProject project) { _path = path; + _project = project; + + // // extract the extension types for this container from the path + // String extString = path.lastSegment(); + // _exts = new HashSet(); + // String[] extArray = extString.split(","); + // for (String ext : extArray) { + // _exts.add(ext.toLowerCase()); + // } - // extract the extension types for this container from the path - String extString = path.lastSegment(); - _exts = new HashSet(); - String[] extArray = extString.split(","); - for (String ext : extArray) { - _exts.add(ext.toLowerCase()); - } // extract the directory string from the PATH and create the directory // relative // to the project - path = path.removeLastSegments(1).removeFirstSegments(1); + IPath libsPath = createDescriptionPath(path, project); File rootProj = project.getProject().getLocation().makeAbsolute().toFile(); - if (path.segmentCount() == 1 && path.segment(0).equals(ROOT_DIR)) { - _dir = rootProj; - path = path.removeFirstSegments(1); - } else { - File classPathFolder = new File(rootProj, path.toString()); - if (!classPathFolder.exists()) { - Logger.log(Logger.WARNING, - "Folder of Directory Container missing: " + path.toString() + " of project " + project.getElementName() - + " creating it now to avoid errors in eclipse"); - - classPathFolder.mkdirs(); - } - _dir = classPathFolder; + // remove indicator path of project + IPath relativePath = libsPath.removeFirstSegments(1); + File classPathFolder = new File(rootProj, relativePath.toString()); + if (!classPathFolder.exists()) { + Logger.log(Logger.WARNING, "Folder of Directory Container missing: " + libsPath.toString() + " of project " + project.getElementName() + + " creating it now to avoid errors in eclipse"); + classPathFolder.mkdirs(); } + _dir = classPathFolder; // Create UI String for this container that reflects the directory being // used - _desc = "Directory Classpath: /" + path; + _desc = createDescription(path, project); } @@ -158,8 +171,10 @@ public IClasspathEntry[] getClasspathEntries() { try { for (File lib : libs) { // strip off the file extension - String ext = lib.getName().split("[.]")[1]; + String[] splittedName = lib.getName().split("[.]"); + String ext = splittedName[splittedName.length - 1]; + // TODO: this is really a awful check against sources // now see if this archive has an associated src jar File srcArc = new File(lib.getAbsolutePath().replace("." + ext, "-src." + ext)); Path srcPath = null; @@ -232,4 +247,125 @@ public boolean isContained(File file) { } return false; } + + /** + * Get the full path of the the given path and project. + * + * @param path + * the path + * @param project + * the java project + * @return the full path to this classpathContainer + */ + public static String getFullPath(IPath path, IJavaProject project) { + String result; + + String projDir = project.getProject().getLocation().toString(); + + if (path != null && !path.makeRelativeTo(SimpleDirContainer.ID).isEmpty()) { + result = projDir + IPath.SEPARATOR + path.makeRelativeTo(SimpleDirContainer.ID); + } else { + result = projDir; + } + + return result; + + } + + public static IClasspathEntry getClasspathEntry(IJavaProject project, String projectRelativeLibFolder, String fileExtensions) { + String dir = projectRelativeLibFolder; + if (dir.equals("")) { + dir = SimpleDirContainer.ROOT_DIR; + } + IPath containerPath = SimpleDirContainer.ID.append("/" + project.getElementName() + "/" + dir); + + Set attrList = new HashSet(); + attrList.addAll(Arrays.asList(ClasspathEntry.NO_EXTRA_ATTRIBUTES)); + ClasspathAttribute extensions = new ClasspathAttribute(ClasspathExtraAttribute.FILE_EXTENSTIONS.getValue(), fileExtensions); + attrList.add(extensions); + IClasspathAttribute[] attributes = new IClasspathAttribute[attrList.size()]; + attrList.toArray(attributes); + + IClasspathEntry entry = JavaCore.newContainerEntry(containerPath, ClasspathEntry.NO_ACCESS_RULES, attributes, false); + + return entry; + } + + public static String getExtraAttributeValue(SimpleDirContainer simpleDirContainer, ClasspathExtraAttribute attribute) { + String result = null; + if (simpleDirContainer.getClasspathEntries().length > 0) { + for (IClasspathAttribute attr : simpleDirContainer.getClasspathEntries()[0].getExtraAttributes()) { + if (attr.getName().equalsIgnoreCase(attribute.getValue())) { + result = attr.getValue(); + } + } + } + return result; + } + + /** + * Lookup in eclipse project settings the corresponding ClasspathContainer. + * + * @param containerPath + * the containerpath of SimpleDirContainer + * @param project + * the project there the container is registered + * @return null or the found container + */ + public static SimpleDirContainer lookupExistingContainer(IPath containerPath, IJavaProject project) { + SimpleDirContainer result = null; + + try { + IClasspathContainer storedContainer = JavaCore.getClasspathContainer(containerPath, project); + + if (storedContainer != null) { + IPath pluginID = storedContainer.getPath().removeLastSegments(storedContainer.getPath().segmentCount() - 1); + String storedPath = storedContainer.getPath().toString(); + // IPath prj = containerPath.removeFirstSegments(1); + // prj = prj.removeLastSegments(prj.segmentCount() - 1); + // String storedProjectName = prj.toString(); + + if (storedContainer instanceof SimpleDirContainer) { + result = (SimpleDirContainer) storedContainer; + } else if ((storedContainer instanceof IClasspathContainer) && (pluginID.equals(ID)) && + // Darko TODO: fix this really awful hack + (storedContainer.getClass().getSimpleName().equals("PersistedClasspathContainer"))) { + result = new SimpleDirContainer(storedContainer.getPath(), project); + } else { + Logger.log(Logger.ERROR, "Classpath container " + SimpleDirContainer.class.getSimpleName() + " lookup failed: " + + containerPath.toString() + " of project " + project.getElementName() + + " found a corresponding path-value to SimpleDirContainer but not a instance of it"); + } + } + } catch (JavaModelException modelEx) { + Logger.log(Logger.ERROR, + "Classpath container " + SimpleDirContainer.class.getSimpleName() + " lookup failed: " + containerPath.toString() + + " of project " + project.getElementName()); + } + + return result; + } + + private static IPath createDescriptionPath(IPath containerPath, IJavaProject project) { + IPath result = containerPath.removeFirstSegments(1); + if (result.segmentCount() == 1 && result.segment(0).equals(ROOT_DIR)) { + result = result.removeFirstSegments(1); + } + return result; + } + + public static String createDescription(IPath containerPath, IJavaProject project) { + String result = null; + + result = "Directory Classpath: /" + createDescriptionPath(containerPath, project); + + return result; + } + + @Override + public String toString() { + return "SimpleDirContainer [_desc=" + _desc + ", _project=" + _project + ", _path=" + _path + ", _dir=" + _dir + ", _exts=" + _exts + + ", _dirFilter=" + _dirFilter + "]"; + } + } From 760be220eccaa6125d29a29bd70a9f6b72baed8c Mon Sep 17 00:00:00 2001 From: dpalic Date: Mon, 29 Sep 2014 10:45:26 +0200 Subject: [PATCH 14/34] added previous fixed version --- .../DirectoryClasspathContainer_1.0.1.jar | Bin 0 -> 14671 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 ExportedPlugin/DirectoryClasspathContainer_1.0.1.jar diff --git a/ExportedPlugin/DirectoryClasspathContainer_1.0.1.jar b/ExportedPlugin/DirectoryClasspathContainer_1.0.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..713ba6bb16be2867e23d5b1963c284fa60b1ddf3 GIT binary patch literal 14671 zcmb7r1#lcm(zTdnNh2nUnVFfH87yXIvScw@EQ>8>W@cuvn3S0F$${7nDQUYLy&qjy_r-5$CwdvnFLG)G@2;>Ek_*%!(UhnP?=e%_6uov=7%1 zw4z zZWB=uqzsc)wZP6+Fbu(pn@yTZwhDno&ejkPb53TBfGGOTW?D)2bkp1VhRAT#LOHX2 zvBI8oBgaO4$#x}aP~pQ*CDPx1WGxu7yiBM=!?z?Qo38(1HlY7A+rJq2-M&CTwhpFr z|GmeDfAlc4wQ#`~~kyx#!X-$)4< zI+?rZzXQ-3TIoAF=Ed2{Aqyb(XXNFH9Rq8Ei3o#%Nh-)~k6;ni8>BD?e7TsjirQ6g zUDLU{L+nWK(beKG;N?UW6?99ZAwi~e;BJ_@?7`vdV$!0{>YADkQAk|@nE0Z z6cKQBmj`H%ob|L_oxe(oJH(%;wCWDP8zx58C2b=f1;KPbK2@eVJ6_%U=1h;$pxIK9 zl4_d*ALMWxg6BxLqp)#mMv{}+Pp=u3qkJuXeo2o^M9w(M{HStFAonBSxX0rYk`TdR z7P?lV1&Q}&QADnHe{@Od8N<%;Wji@Ra0#t;1Y<-4xjWNwZJ@{4auz+KVMeg0wnWVt z$MvIpK3os6ig{387|q85-;Bi*)Q@KWn04Y(oNGN$e)Ncr!jF?jFQ;T zI~OAr97p<`rO~?VmPMe|FmO7;_0=0&Q4Xb?(=eu6!#SiCcli&3*f%uHcFSLtYKG%y zPA>SFg^#F`qZ2pXcPE;h?O$N+oH{>mQpEHp6B>Szr<$r#)mE+?rl;{)Uy-*j@KLLO zQ#|04QZgL9&2l+e_yTVp#Npzy7Yq^Q4oJ$$(1ZGcA?m9dsq=M`+zi7AAug&Mwr${K zqWgfr_7-Iu&-#GHBk=%MnlOqYe#oIkAgL0{gj5LVwH&VRHvjb1Ns~f4J#am1QMtW0W^shX=vxI&-SB5{CkktiaiN zKT_1X`1-6YJ%QQ{YYpD+ev;Hh>O5{vPT2v-f{NBdrGaGLLIfCIr=ya$nC%F+b{Rbw z=xAw^j*;)j=g;Gd9dA$9m|v*KVQLW}v@7(~ZHCxRV{alzmgByidtmo3oUOtyx0rLa z-+*-oz)I?BM(UJ{=QLVrPP^%iI3KD+H0hNM1G48&Vo#$0f<-qt1l)VHL+pZPvxoxm zc8nAK=jCOzlD2c&PQ;r|Yjx75<2P2$YQR>~9J z<3o3m6jx@W&KcY7&O5|qskn`gmIcrjIHDOI!5XvB=N1?$dL-C`aBh54G$j2mRHS5a97> z9kFC!UB-9%d<7ONt$Z*=v(qidL5q8Q|3PV?ldTI2<_c?f!S_RCdtA+-L6PoFCIS(A z)G_zKxjs;aBf3`O;GcFGg1(ez)s1ybFH&Cf4OSi(+;8L+J8;F_{tyA7Doe+}t zejHxWB%ZQO(ykHnrchR8H$j`whZI}h^*&`XK z<||B5p>@;}MDOX0@h&bwU8OF0cp*wLh2ojlwK8?It;P%@ICb!zuY#{hGdhsbGMSx{ zDJWF4;0{6TVV5AmQVb13@uz!>@HKwffrVR54HRt02Qr78F4Fc;LM9)aOc=A??c+0y z*3E}$va-?QhuNx7HxAN}+1bnsvsc`WAK5F`VZz-`D$$S>?gu#zGH1uGCBUKr7%p*c zFg_rh)NOyZIX`?trM=Q1X;YlB7Sgk=9N}OthI7>1zee^mJ~QjqBF1`( zYC+8FDAq$UWJI$Q>ULh5mBm+ah)_!RMioXfjFuqlSwE_SnKkYDan#5_p}YmNhnVGe z%IR^q8tJ_So)%(~derP{rgh#Y%%~clIW5p2BgidVMrjCc2~foh(yAnH3|w{|;cC^K z9U*2H{Pt!}j0wGhn$R>*d6`ILD-fQ=T5rs`;)W3GMy{W(-)u-BjKtc@;8Lj0W2We& zP&q8uWX(P^5|JHIU(4?}!w_>9@sXfMy(Cv~z(+ezG}g5&MQ2MZs8C6+Z3MqdHW?=MW{+^Itw)N*=7xAhNAL-xxWF_;ko{bWgJs)M7b`PJ)N z*3`FZhMb?DG+1!JtbhCEJW%$?2Izi251hTv64Jk!Au`5}j{2s?j=#s0feJFVKll+p zFXx9|i)ab?qQS^$W%(7~Pa0AYr+`5ZRYfa0h+v!U+SFA|o#msvqLLv(dIRynFdSPE zfk9F)+M2A7dNQqLbhN(#+4=Qgsbbv0q>GrxXwf=mTtxqT9Ew!5BoX6-r=`_-OP#KQJ9n5#AS7Ab^U)OPx>RwA2H z!hvoBZCwwSbsk+z*AlZl%EO~X;WNmozC1M|}2yehM*azro70dgzr4pZdjx;y|u0Jnz)7G0I zdQuFT^S!P+Pp#WTgf+?bSsvCdH3-kc2YfJNX?`VjsSKhtW*JuHclCqV#kcaXa<}qq z-L_xd4jPb&${J`P;T-c^APjzr$5lG}jt?hz2anJmj~aEbOrFe>lH)(HTjc4Qm`)ZD zVRzc6#{JN83WSRD&ALnk3ECOzP%a?>vg4QF4ak|arT^Un*x%Pl#=r3bC39;#E93Xb z?VnK`F~jd3k)X7!_(L8=Cm2jn>WiOtn_fbgIW#;ujG}PW7Z>Uac}P<)Mi~Tadg63q zm1mUoXCU3QsiXT1$on0H!$vtxu_|tU(!|f}mghBBFZ1)ZKsJU_0_gr{4=O!ZE0eW4 zXV|FA`>F>IwqIjEtGnI@o$kM}E5X7T1@-zqEHUH!D8p*m1r1Z3?4d`~u%1|`#yv|3 zPHQLliRsauf}6Wnq;z>w<`Cat(c;qBuV=O|A$`s;=w8unsCS^2mC5!2+Mm)uoL)Qy z3WHklM0UG!^u^RO6se97LlAUS>F?@RBPCk^TBaKg6GXHX7`~-dGI>n`9YhHw%5p-9RkQWkO0+RF zj`ETu(J%ru=3xQlkVr8qlfpM#2QYpDa?Wz;a0Bqq7D}tqNpa4zd&N#9F$VYsM_{4)l z2q|K)>qEZtY_cGBjVEzUQXTcJI$^c^@V~x{g$)g4q_pq%B>tIWhTu;50VcWNrwKDp`0&&%_FtoiqoY{0 z;rA@d0_xu%Y5sjy{5~hr)u6plW-;G7jB08$AfS9R1!hF#9V@;V=tROu6i!9!`As6y z$g&DyESyj?wcu!$X)b%*R2K9tQMMJ*)MuIi7b$CcF1FN*oSO4!T9@$D)>}xut&g4o zVnqz%*4y2$*PbGOettVo3V!o^0|s)OMS&-Qajs`V{JK0;t4|_Bwq(m;!fnl^m9sjh zN2y=0F6-#6B*dR(&{j1RLK?BdUt43#GhqQmIRk~x^u1EC98+gKgH&uFqMn5eZe9lS z&>8$A42d-jOhG*Y*~JI0WTPc4=A03CuXe%0k{ZXplyCL4fx~x1j4eMR6L2Ea; zT>=?!nViysl3}{QIkHq(a&9YhG(H6Wa5jUYkhUT_j~vy@I4q@q1mrgkMPi301Q`x_ z+Sr?qUE)mY;&7rXK06Gc1t>UR56quV`(6Nh7j;G*?@}vZ?79-xyVq%-0_18G3 zeL*&6RT~gij_BcFSL@*pRMLI3;9Lv1M(JmOnqJ-O%uJT1k}fL3wbq2cdB|13han2$ zL~0cuFp`Ge^zv&Zh#)bWn)FhpevELcHK2$&&Ih0wr)!Lcx8=+SY=d(yaa;dzX=z(@ zN`aq8c|boj8({37JUGYmh2?wQpD#xXcREs!3=ahvz^P?RJ{3C~MNHB7q3X$v0~Ke3 zOBFC=lrf|@!qIJvqq@f{zJ&dZL`LZcM6hcihq)o@`b8T@SAT+H*bAZe4>)?t(69|B^ zU9-m-hAbjiJ+=z)l8@Yd>$I(?wTI+solAn(5+gV$3PCeZB0>%5uS+86@pM}Gf=w|X zo;OO&u%b>)DN3_zG>))oqRHQz=M^Oe7IOaM(z~h??6HkSKkPGCQio8ZNER=^Rhp21 z1F>p4Cbx|vww|b;bonSMDbkS3rdLwbVGdNqOSwnP0Xk3J!J+{YLRxHKz>W$& zp%OZ>h{bw<@st&}!95>$g&)lZs^R*c-g39Zff|4c&P#&UY#5+_)%97r2THvDIOz+0 ziIPXU2m)(s%#I{whp=UlSI9Vy5RKlhvBsSW0SL#Z6ZU@9y$Hh4uk~BNA04fhN5D$8 z?3>zpGZBbg0ITLi?fS_vSCZd?S_)%#tIH}M`;uCmSBUy?Oq;-w6|rzXRT^5xZb@Th z)(0KlvX@2UtPMwGki-#TuD1wtff7Uz%!ICd<~$ql)@AEb2_=qttI`be(wq=Ww{znk z00u4+)%oniEAD^8szaLkY5o#^F>P?n>+BLc#I|~nIq<@IE=F`dlug3#zC1GclBe2X zRJl8ZiKGq=QtFzs=g{PgKJGFHOoc8O#vhLA}L7hTKBGewVA{wKUeg?4d;hj zD9Tv$-9&DfVduH+G)y}481y20$eiAE-~=0* zYKQ}J6r)(-?ShXHk$f9bH?~XTfl4wmwlP-nMlwB)qr-*)ZNe4OV29M=ry?Ny0HN+9 zq9wAsNUI^Krmk91Wm=al#ig`+2fASLn$A-*A*qQ|iBTQPqbZrAIpuZ*9d+qMaKn~a zLaa^q4vgB1`}4@qe0L(QRT6vSpashGq^cezvs>e zI>OZI8U+Z|ND|7-5=PX~x@7AiZ%3(p&6Mc6cA0viX39j?%$2d5rX~YirERA?sV;=w zSe7ze_2W7$-?}p0e&#JJ#}y4z3Tkgd9>=MQJiCT@wujYG=$xUHfDq?;nj!Rw=KOHX zQu@5-gv;<8&34ZFMa{1c0Zput*MNiPDj;`9m%X((o$#MVJ)@2)YhIK-Cz~7yaZ)V# z_WQ)`W28P0*d2I3JSpWC{Ri8U>XwN(dbqT=LTB9XrEO7(x#3xO-6eQHlp%|=Z4fMu z?{eCMIEU^4S75(^`Ky}sn*l_w$w8@Cy`-slL`{XVb3~ikK|SC zWJ^oWc&STiN497*v>T5eGmBwV&6g4Qbnq5}BLQ|NlmebTyxQ572yKiQjEG!SjA4Ye zAg%@`pAUJ7CFP4uW0ry_oM(-N?2a90xGD|!7u)N?b@1Lo(-q6%WrwUG$7awZuxs&5@bEx7dIc_yU)8jWgs?F^A5cbtWcm)-%>Yz z&xi0ZFW_w6S8O(f=VPNQV1XB&3PyA3M894Pcdoqmfv2d~2R-8l;i3z`Cj8l8$U&x1U7|99rC2aEWrp%HEXwYo zW0vcsqwurspyiLke_91~bI|xKgeJ!qV(NO?U7*KC=N%G>5>9h@)maACZSAyvy3*!v z-;Ns&6^J6RG5w-8eaSX$&(+v~-J%ZU$`pU54;kB+vv92Opa^X(*xTR$6}2fBkS^W= z>C<%`Fm2^`4n9myVmksFEegHARiO>5Fur(?ow2*)4S0?8xmd~Z@x7kgJv|HxMK4R9(j368qn~>wQP#h#wA&(j8v)PJ+ zlEXnR`P$^DMsN$>*5}`Iq57>Rpt}PzlhHc7FY?@KS)^_(Bi|Grv_gz4NfCk=QKXUy~r$q@Hb0>3s zD|3%Ol5J%wGLG0Hh@WYO*3?VwD-AIXo)Zv>7FE#zexNV}RRBov2T-tb2lg^Ge@2tG zmeF#>PQJ~~WLTUHy%zC6yiVI}at~GPMdLC<0g>Q`g+up>Cuh0i3ZK_|C|0Xk(Tcfu!hK3fvD?XOzih$dG=9Yf zj}8eNJ96LJ_4K!Tbyj<1yo;V%e||S@?%noDWDbMauu!f05Ifo{uHXRJKILHEejQL( zs2>I9YCpATvZPBhhmB7j;Z(@yroG7ET!Ed2>;%UtDd*@9W;DL)`I7G(Q-{5(` zf5Np9uD>2j!6nAEoUUr4^Uuc(twq0d;G87tjsUFJizHp0aP9jVdT8MzF5({f{WGrg4NMxe&oSg~y# z#GlyKd$vcZxG-~pbNjfLd_gI?aO4GYs|j~awLW;+dWB-R94-Zk@rmx-a7#>@cJI5s z16Rw;hPwrqmdzxAiFf}_r;_&KE3PeGw%3>A@FzDPJiL!v^>+l=Pj)d3z7)E0Oe1i6 zP0Qcdqgz&F>OR5Z_V?1YH3vUcRZyw-`LoBS-h;99dk%gIj()%<0X0Onx}i7<1#tx! zGd6va4fqskZo*ZdlOml+8aIhJSGh(sBugkkpyEqZbj=Mqf?;YJ)lKR20Hf0`*j=E8 zyvqxq-ZTS!;k2VCJR&785%~H znXL;p9^mK2Fom((+q=U|EOy^sYiKKB`?I=bpfAICOKJ@*Rw-0c$!vF@mz4bVCFl}PpPRX3!Rzh_nZZ~= z!>SeGar10WlsL&wb(V5sH-`_uiEZy5N&CWSME_kkgO12bt5>~=`JUXO$*FpAnWmjI#Ci5t2S)sa&OR3rKh}$sq-P zDFyh)=OSU6Z&F+)^gAH!Ylc^vOacY*D-GM4t-PCRF7LF zzUr;^YR+zZ1U3aOd$F>ge>hWdQ>ePSM*gdB%!`;I@WKNDdEo#7G5^oL@sHG?2DF>D zn)7QE^R#%5rH1YnNu=w*H__?=t&mUyf11VdUZR0eE3(+_kg3s{o3yD>`f%J93LQ`* z0^jL;nJ;M5U}oZ4Vj?*h3Yp;DbAgj+iL{f7l0QJ8<6~`lPkqijv4(O;h705z&sRLh zn@k@jn)W3>wLgc-0WT1^LMo6f#16p=1CpHx&hpc>i4XVEgbCuf&<|aLt0@Y8j5$Zx zehfum7XSl0P8g8LU9nmVP2)wCV~?phdvK%0Y+C*BQNK*@2{m9yF!$gw{z1H!2z6q= z=CWI_57^o7ZhoTS?Ym#xcuR6^r_&i<TE`TZe#%>MBL`Vx52jsQ0&pG?h1<^( z&eQTfqLq&@k_3X74{L-)_g-*z_798OM zrP(M~puH|^Wl8>2!ER%<72ASuy5ED5g2GXKd`>w$^Uva%y@7*-p1v$^GFRrc3;u+}|B@U7L5x9=KE`Ejh znlxcFAtK; z>0C+2ID>sP{x*bo3b8J`QW(Snjo{bY zUdQ>GE+namw4f0F3nduU{P<}IdyIXhHtDR5p3`U}p6-@|`0!}Uh*4CArae|j^~`h0 zwy33Pi~BFKlmXOtmJ;L`DAp30s=Mhm5I@Z%rg%V-w1>!xJo8E9^Ts+Mk>{i5ayl%b4ebm36x!^KYPq>Pq z=&g?}>xP8qHQJUkTfB$3T=ugxY0(yP>vo(EhDY0`e6b+9=7Ny3G{SlwlsC|2o0xWA zY(x`dB>^pJ*RWlp$O{CoCd~^Qn^RRETUPO^wpGNdc458LgctrJ*Go2IrlUI3~j7@h^j;s^cBJfy?0%8 z#pA~v9E4Altw+Mapc`IgQTM!V%^{nf)$+jdSBPiOcHCY*Rc;~^e71WsuYnQj)40}G z%hg&jovC@&jTSeC5T7D)UnL6oSC!A&YJ(9in=SX>yMA7R60)De!7+GpF^b6O*SAdJ z>!MMY-K@4}r%G}*A<}M&LA*ucF|~}FeX->*Zb>QndFmwcMDi>g)2L$lW`6PM-WG!A zyYWTb=+s_hk@RcR+|nD%J%w(aTAYd|-Qxk={xe=)4Z~D1M_o+%CCaYXl)090q6Yc=P6AyyMI!aym*q4RLl04@s0km5Jxp`u^ZER= zn=dBaB<76O{MIEC=ug+GWPTHBMEOlf4%gqI*f@kd*RbPBP}Ocx^(rOE)Hca(@~GJy z>bl3_`p#YM?)DdlQE^rq`v)a8j3*4;xp&ucfXfT9e`HqWC7$V#dPG&vGQ~aFGWJLb z(IHvNr>27pfcA3cpnL4pJ>|kkwpZOAoQ-U3Z=Ku1|-f@+^sA)sU76 z+6wH=tUm${3Klx0;KjP~N84N$y(J(>y5_uTaYS*()J5W5 z?F_TK2fsS95X@N95$N_?&8SMRC)iA}Pc@sRz^eMi4QPH-KFzX3+?kjy40Zv6x4JLU zyB|rcNx#O_6RTfwF`_dcAW^pv*i<2<6@7}io|vwydr#N5m~o6 zhg2&k4tv-G)I#AHl~CEAb47As#U_Kywd~Ipqj_O+a+|AaolRunKG}7Fad%s*8kOw` z204IuirJS{UcUj=+>JNTRS&S4wTBzYcv4m9V7gcw&48i zhlCr7E!`%t1D{z_>XGPWITH8iLl33iW(#_ISu)wN9QNSbQ6cSgt6WV$2QUgyqD{dP9O$ z;MOS3wv0!wFO^Rl#A+WYkG8LG>$%gj_ezYcwBsIA5VKK(RIk0_OE?_Nyo8w*CK3}j#wTMF?> zm4Ds3J>;}KgcIIcLNMVuBdzxn+jvE~--Hij(X5bVKD4C7=-04JRFY&qg87oh4CB?; z6=H;nOJh2bHfke3vVRX_iyU!e4b6OWw-~+SOnsbE$OPG&h>$}*ErMK>*mO8}8lGU3GGs=8D?v4`O z6UtzhsW=^d%J+A~+usr9O8 z_+H%dtfTwf(7`Kl-mVSXYR+Arks5L* zR#I!hVW&5lj-}X~^C@Ut2T3>{f^ByL1p6s0aqy8bjyG}ZVi`JNt0<#$^~h{cx~$cdbY4tIRPB#d3?zZRU%t@W9m&*J5$B8hRKf3j5!`6yjrNgtj5 zC38C_-|Ol?QlWqv?CXFUVkgR1-JPWgjmp3n;9Y(u=oyj>-OgGP0kAY;zJX6F{M#7|x3*pt}IRTy1f|0___7 zl(~V^v%fx=di9x_)B8iYzgKm?S3&&oU~bk{W$`k${`7D`=W%y<*(-@>+tr|@DKH7q z_2oy+jtSt2&9KlgSr$K!(K9D4jE$$iA+y(idaCNewo#H`)pM8`E?_%J0musu6aq5Z z#|G4XI^Em3Z^8?Rk2OKFjwiE26Fa=H#X*tlDiA>C z*G%Y`Do(j4$tTLn;3#_t3I-_3yF^Sk_i@ux*3eLG+mE$bEg9%+I?H+hY?~xHMeR*x zlxTUiGd5Y{Y`VCz1uk8oX%|vJWGgK1a!fjNZDD3Z3D6;!v_2&89-f*OxX*!2H!?}L~zvR=0E-wWPf&%(J4*!Mo^FBcD z4H4*6;J52PX+6I)fc_Bu&m5rN1b%C|zP~Lg{}lZfM$o@1|BXfTf8GD__3j=2Xul~p zcz2lJ$uWQE{C5J)Z}gbo+iwy9|B(1svdn*%{f#d3r)=fF$^I*O<`0zrOrQA!C)aoH zZ%}?A)BI_O|IB*$6Exu6F25P#&&T@n*8W*N_X`K&SM*=Ym;Xe^d}mqwH}rokX8slN z*K*H45xL<0JK|r9KYzviwRrGPOo8{2{%?2r??qF8WRicy|FsP3Pkgoa_4fZC|MzU< zujs$N%=#1E_C4qM|BwD}ueN?w^lO^^Per`=|BIr3O}hW8#hH~js6Mznc<&%&!3y>uj0RMR)31Cz8AFqV^4nHy5yz6A%6Q0 Q>HQ=2UhR6t^xLoh2Vuo5lK=n! literal 0 HcmV?d00001 From cde3ae97aa7dad8ae19829e7b9e4f9a985f370bc Mon Sep 17 00:00:00 2001 From: dpalic Date: Mon, 29 Sep 2014 10:45:55 +0200 Subject: [PATCH 15/34] upgraded to new major version, since the changes are a lot --- ...DirectoryClasspathContainer.source_1.1.0.jar | Bin 0 -> 11985 bytes .../DirectoryClasspathContainer_1.1.0.jar | Bin 0 -> 17826 bytes META-INF/MANIFEST.MF | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 ExportedPlugin/DirectoryClasspathContainer.source_1.1.0.jar create mode 100644 ExportedPlugin/DirectoryClasspathContainer_1.1.0.jar diff --git a/ExportedPlugin/DirectoryClasspathContainer.source_1.1.0.jar b/ExportedPlugin/DirectoryClasspathContainer.source_1.1.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..714ebbc95fe673cb18493be21c928b433f5b976d GIT binary patch literal 11985 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 literal 0 HcmV?d00001 diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF index 82b6618..bdd9fd6 100755 --- a/META-INF/MANIFEST.MF +++ b/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Directory Container Bundle-SymbolicName: DirectoryClasspathContainer;singleton:=true -Bundle-Version: 1.0.1 +Bundle-Version: 1.1.0 Bundle-Localization: plugin Require-Bundle: org.eclipse.core.resources, org.eclipse.core.runtime, From 23c460e70755a766b9e21a2f10e71264f604287e Mon Sep 17 00:00:00 2001 From: dpalic Date: Mon, 29 Sep 2014 10:54:33 +0200 Subject: [PATCH 16/34] added details about the changes --- README | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README b/README index f84ebc1..6f9b561 100644 --- a/README +++ b/README @@ -2,18 +2,19 @@ This is an Eclipse plugin that allows creating a dynamic Classpath Container tha and loads all .jar (or .zip etc) files into the classpath. It is an evolution of original code I got from here: - https://www.ibm.com/developerworks/opensource/tutorials/os-eclipse-classpath/ - Thus it originates from Aaron Tarter (aarontar@us.ibm.com). -The primary modification I made (besides renaming things to no longer say 'example') was making it handle +The primary modification Ben Christensen made (besides renaming things to no longer say 'example') was making it handle filenames that had multiple dots (such as com.company.library.name.v2.jar). +The improvements I made (Darko Palic) are to allow multiple directory containers in the classpaths and of course therefore in the eclipse launches. +The previous version had bigger issues about it. + The binary in downloads on GitHub just needs to be dropped into the eclipse /plugins/ folder and it will then allow adding a "Directory Container" library to the Java Build Path. -https://github.com/downloads/benjchristensen/SimpleDirectoryContainer_EclipsePlugin/DirectoryClasspathContainer_1.0.0_EclipsePlugin.jar +https://github.com/dpalic/SimpleDirectoryContainer_EclipsePlugin/tree/master/ExportedPlugin I created this jar by exporting a "Deployable plug-ins and fragments" from Eclipse at the project level. From cab3fa2cd2f44c0041f21e90a12868501d126f35 Mon Sep 17 00:00:00 2001 From: dpalic Date: Tue, 30 Sep 2014 12:38:45 +0200 Subject: [PATCH 17/34] renamed method to be more clear --- src/org/container/directory/ContainerDirFilter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/container/directory/ContainerDirFilter.java b/src/org/container/directory/ContainerDirFilter.java index 54f3fb8..3d50f2c 100755 --- a/src/org/container/directory/ContainerDirFilter.java +++ b/src/org/container/directory/ContainerDirFilter.java @@ -40,7 +40,7 @@ public boolean select(Viewer viewer, Object parentElement, Object element) { if (SimpleDirContainer.ID.isPrefixOf(entry.getPath())) { // we know this is a SimpleDirContainer so lets get the instance SimpleDirContainer con = (SimpleDirContainer) JavaCore.getClasspathContainer(entry.getPath(), jp); - if (con.isContained(f.getLocation().toFile())) { + if (con.isFileExtensionContained(f.getLocation().toFile())) { // this file will is included in the container, so dont show it return false; } From 2a9e6c48df514d6bfef529b84dc1ea7d2ff96d6a Mon Sep 17 00:00:00 2001 From: dpalic Date: Tue, 30 Sep 2014 12:40:01 +0200 Subject: [PATCH 18/34] fixed issue there this class MUST be immutable on getting the classpathentries. Now a update is requested on detecting a change --- .../directory/SimpleDirContainer.java | 128 +++++++++++++++--- 1 file changed, 106 insertions(+), 22 deletions(-) diff --git a/src/org/container/directory/SimpleDirContainer.java b/src/org/container/directory/SimpleDirContainer.java index 43de241..ceab7c9 100755 --- a/src/org/container/directory/SimpleDirContainer.java +++ b/src/org/container/directory/SimpleDirContainer.java @@ -4,11 +4,18 @@ import java.io.FilenameFilter; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.HashSet; +import java.util.List; import java.util.Set; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; +import org.eclipse.jdt.core.ClasspathContainerInitializer; import org.eclipse.jdt.core.IClasspathAttribute; import org.eclipse.jdt.core.IClasspathContainer; import org.eclipse.jdt.core.IClasspathEntry; @@ -44,6 +51,19 @@ public class SimpleDirContainer implements IClasspathContainer { // Filename extensions to include in container private HashSet _exts; + private IClasspathEntry[] classpathEntries; + + private Status currentStatus = Status.Initializing; + + /** + * Define the current status of this instance. + * + * @author Darko Palic + */ + private enum Status { + Initializing, InUse, RequestedContainerUpdate + } + /** * This filename filter will be used to determine which files will be * included in the container @@ -73,10 +93,13 @@ public boolean accept(File dir, String name) { if (prefix.endsWith("-src")) { return false; } - // Darko TODO: handling of dir container extension must be improved at all. Just a hack for the previous code + // Darko TODO: handling of dir container extension must be improved at + // all. Just a hack for the previous code if (_exts == null) { - Logger.log(Logger.WARNING, "Directory Container could not read the extensions from .classpath for: " + dir.toString() - + " of name " + name); + // Logger.log(Logger.WARNING, + // "Directory Container could not read the extensions from .classpath for: " + // + dir.toString() + // + " of name " + name); return true; } else { if (_exts.contains(ext)) { @@ -98,14 +121,14 @@ public boolean accept(File dir, String name) { * - comma separated list of extensions to include in this container * (extensions do not include the preceding ".") * - * @param path + * @param containerPath * unique path for this container instance, including directory and * extensions a segments * @param project * the Java project that is referencing this container */ - public SimpleDirContainer(final IPath path, IJavaProject project) { - _path = path; + public SimpleDirContainer(final IPath containerPath, IJavaProject project) { + _path = containerPath; _project = project; // // extract the extension types for this container from the path @@ -116,26 +139,42 @@ public SimpleDirContainer(final IPath path, IJavaProject project) { // _exts.add(ext.toLowerCase()); // } - // extract the directory string from the PATH and create the directory - // relative - // to the project - IPath libsPath = createDescriptionPath(path, project); + File classPathFolder = getClasspathDirectory(containerPath, project); + _dir = classPathFolder; + + // Create UI String for this container that reflects the directory being + // used + _desc = createDescription(containerPath, project); + + classpathEntries = resolveLibsFromDir(_dir); + + currentStatus = Status.InUse; + } + + /** + * extract the directory string from the PATH and create the directory + * relative to the project. + * + * @param containerPath + * the full path of the container + * @param project + * the container project + * @return the file reference to the dir + */ + private File getClasspathDirectory(final IPath containerPath, IJavaProject project) { + IPath libsPath = createDescriptionPath(containerPath, project); File rootProj = project.getProject().getLocation().makeAbsolute().toFile(); // remove indicator path of project IPath relativePath = libsPath.removeFirstSegments(1); File classPathFolder = new File(rootProj, relativePath.toString()); if (!classPathFolder.exists()) { - Logger.log(Logger.WARNING, "Folder of Directory Container missing: " + libsPath.toString() + " of project " + project.getElementName() - + " creating it now to avoid errors in eclipse"); + Logger.log(Logger.WARNING, + "Folder of Directory Container missing: " + libsPath.toString() + " of project " + project.getElementName() + + " creating it now to avoid errors in eclipse"); classPathFolder.mkdirs(); } - _dir = classPathFolder; - - // Create UI String for this container that reflects the directory being - // used - _desc = createDescription(path, project); - + return classPathFolder; } /** @@ -161,12 +200,38 @@ public boolean isValid() { * @see org.eclipse.jdt.core.IClasspathContainer#getClasspathEntries() */ public IClasspathEntry[] getClasspathEntries() { + if (isClasspathChanged() && (currentStatus != Status.RequestedContainerUpdate)) { + try { + // okay fine, we have an change in the classpath, so request an update to eclipse + IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); + IProject project = root.getProject(_project.getElementName()); + IJavaProject javaProject = JavaCore.create(project); + + // a very nice info, which is completly missing in the eclipse docs. + // http://stackoverflow.com/questions/12806888/refreshing-classpath-container-name-in-eclipse + // means this class may never change, so we will update the container and + // set a new one. + // The container must be immutable, so we have to request a update + ClasspathContainerInitializer initializer = JavaCore.getClasspathContainerInitializer(ID.toString()); + initializer.requestClasspathContainerUpdate(_path, _project, new SimpleDirContainer(_path, javaProject)); + + currentStatus = Status.RequestedContainerUpdate; + } catch (CoreException e) { + Logger.log(Logger.ERROR, "getClasspathEntries - ERROR: " + e.getMessage()); + } + } + + return classpathEntries; + } + + private IClasspathEntry[] resolveLibsFromDir(File classpathDirectory) { ArrayList entryList = new ArrayList(); // fetch the names of all files that match our filter - if (_dir.isDirectory()) { + File resolvedDir = classpathDirectory; + if (resolvedDir.isDirectory()) { - File[] libs = _dir.listFiles(_dirFilter); + File[] libs = resolvedDir.listFiles(_dirFilter); try { for (File lib : libs) { @@ -199,6 +264,25 @@ public IClasspathEntry[] getClasspathEntries() { return (IClasspathEntry[]) entryList.toArray(entryArray); } + private boolean isClasspathChanged() { + boolean result = false; + + List current = Arrays.asList(classpathEntries); + IClasspathEntry[] newlyResolved = resolveLibsFromDir(_dir); + List difference = new ArrayList(); + difference.addAll(current); + difference.removeAll(Arrays.asList(newlyResolved)); + + if (newlyResolved.length != classpathEntries.length) { + // okay trivial test + result = true; + } else if (difference.size() > 0) { + // maybe same mount of references reside, but the libs have changed (e.g. filename, version, ...) + result = true; + } + return result; + } + /* * (non-Javadoc) * @@ -236,12 +320,12 @@ public File getDir() { /* * @return whether or not this container would include the file */ - public boolean isContained(File file) { + public boolean isFileExtensionContained(File file) { if (file.getParentFile().equals(_dir)) { // peel off file extension String fExt = file.toString().substring(file.toString().lastIndexOf('.') + 1); // check is it is in the set of cofigured extensions - if (_exts.contains(fExt.toLowerCase())) { + if ((_exts != null) && (_exts.contains(fExt.toLowerCase()))) { return true; } } From 9e3d450adf25202fa363a02b9b9c91e791b53b2e Mon Sep 17 00:00:00 2001 From: dpalic Date: Tue, 30 Sep 2014 12:40:28 +0200 Subject: [PATCH 19/34] latest comment --- README | 2 -- 1 file changed, 2 deletions(-) diff --git a/README b/README index 6f9b561..60372c0 100644 --- a/README +++ b/README @@ -17,5 +17,3 @@ then allow adding a "Directory Container" library to the Java Build Path. https://github.com/dpalic/SimpleDirectoryContainer_EclipsePlugin/tree/master/ExportedPlugin I created this jar by exporting a "Deployable plug-ins and fragments" from Eclipse at the project level. - -Hope it helps someone other than me. From d2decd860bdc86f292d67e4b442d5c01987f718f Mon Sep 17 00:00:00 2001 From: dpalic Date: Tue, 30 Sep 2014 12:40:50 +0200 Subject: [PATCH 20/34] added new version --- ...DirectoryClasspathContainer.source_1.1.2.jar | Bin 0 -> 12811 bytes .../DirectoryClasspathContainer_1.1.2.jar | Bin 0 -> 19429 bytes META-INF/MANIFEST.MF | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 ExportedPlugin/plugins/DirectoryClasspathContainer.source_1.1.2.jar create mode 100644 ExportedPlugin/plugins/DirectoryClasspathContainer_1.1.2.jar diff --git a/ExportedPlugin/plugins/DirectoryClasspathContainer.source_1.1.2.jar b/ExportedPlugin/plugins/DirectoryClasspathContainer.source_1.1.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..ac487005814a4fcea4f08445015e2e039b88ba52 GIT binary patch literal 12811 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 H0O0=sjLrGD literal 0 HcmV?d00001 diff --git a/ExportedPlugin/plugins/DirectoryClasspathContainer_1.1.2.jar b/ExportedPlugin/plugins/DirectoryClasspathContainer_1.1.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..d7c58b150e679ecf674f840bfd1f32f8f2404c56 GIT binary patch literal 19429 zcmb5VW00m%vNc-Wr7qjH@s@3M*|u%lwry9JZNFvPwvDc?x_$4=ocLzGxD#=n-??`@ zk$dIJ%)M92OM!wxgMj=10ckSk69xG{J}3|{5E)TrLAsx^Vho?-ARzMpH2ne6_}A2F zqOBC-8wd#ecMuTNzsvr|R7Oztr*Yv#X#X)r zGhhF9qfsj?MLwf@OEZKw99NFK+>D%3x?QBaT;P0aV-NjjSPvCeDGcc_gQFoX^yOoS z5e_sbmMvdal;~KVnn%s*oUW3wxn@dWIujmFZ666jeMOY2_Tks|^Rh$z_a~^Uj~^~= zN!IY}(qnFs7XBRXYSc-Go2XvDO24pZ3JfrqA1-nJP2Ppo_DnTP> z3s-}`8_*kB8#ppVXr_NMsh>U-}&-U?%xwbGfh>KoFxXXWI)O*Jxm?f7~Bf!Kw@=fE^fk5k!wb0}_) z4!(abLGFoN^0M1nxld0zBb=$T9tb8FCq>gG?Ua@O;KXpKuzO`rR+JB9)Ql@qevr7iV?-gLWSV4oSGgdPTL``w^wdKVCORv? z&`Pr;^WCe6F7^e+SN*yM9A4b@P!fez(Q8LDMYmFVFkduUtao5$A!NUX-W*V*yhvKs8n;W|q<%(-iG|BxA={`?gXB`PlC&DX(Q!7r zspu5)9(*K=%3$`n*h@MvvqXo)?3$R1q^`o=Ext#3jz*+bTY|yxTU7VpPGeaibspox zUbJf6ws@)`rf8(rxd{(>+?vZc$r6J)zI5fEd0I%7`%Kg7wesKm-~NUFf1oq%^DfH! zFFJX^K|oml3p$1WUrgE?IGc;QJ3AT(Iy*aB7`ix{`~#~w$y$H0iaPQ&_}oD&PlMX- zDQuHA0UgM|0w$EYsy;4UknpNsYC3pP#pa0YBI6LEk z`^(96o!`$d``E0j+R9z~m3nTyk(cVQTX$-`=0S{D&hO6Sf}1<`OQfi)JWLIH||6XtO3ZbGnWeQ1}H@c)-CxV;)I1?Jyjru=i5M()2fMC@vJep8@SSW}ku1C5ugHBmt z@QB%4#6PeJ)`*F+JIN`XXXDBHs5$e9Vj{orEy9IOPA8J4g`9e=J+ivAlT13$bZH!B z&|91<scd>i3HECDiFw5Bs$oCxq@buFr3|p~F{k65Pj3oW zeit4@)n%sDCLi}7mZhrcv9wIpbk5Qp)@&TMiP=uH5DQk=6YV^=?>(EFTe2#@%voZf zqo0}QrFoQ6NevrPDpW~pb0!4P;-jt^G;|cqwc|Iaj-uz)=jm^Z>5{Fv1wxKs{`f7>Pm%Ha7z-n$P)bR;-pf~M+bS5nkz08NGzn|V0MfghRA-cYZ1kt)f z^SqjLMc0jtc4*-o1lx!)jA%OVvF3x{#2R znu4HkwWj38tb84z=Bd-?M~-EqhQ(1mI*(BLNMAWL;pa{+c<^U&IMQ<&R)owi== z))eu%0?D)0hb2d=XnNQs;0uXBAFUdR8TQh_c510`z4{4P`xL}6<1(l@127^za5i5v4+~jOrQ>W8s1fKI6Rw3)vnrn}Mr_)3zCFc)H;%B?b_Tpp*-q@4&S9%&^Eiw10iO7L1RsNjxCuNlOIN}ZB49oC{uv-sP$hdW|JGOVz+)n2fFMG@~`U{fBUdg#T_Uq#55oTK@ zuj(u}GDou9Sd9i$>`Vt-5w>3T61s%*W!pchW*sB;I%||<_r?ps>qlmFa;b7bDqwghORW&9o38eZwH{d}k9hjT8 zW(HcJf(L9gBVr?!?4n0S;u^IL9y)Fk3(g$sox>IcGj?>OQeOrJ#m z(rhTao?)+iCNQ1e>yDUJ1@LOXi{Z8pC7ma_Ohv3ww(>6w=yt}eqgFK~Q%l#7JJ$Si zDp*V0u$N0>l?kWHVfAImR0&sy&ieD)+vltS8Nl$oXUuyKJvr9b)Pu)Nvv)zv*jrY@ zJ{|xfoVg9t(MOAMZv4YCC6D4luW&*VCTDj;@Q!O`KT z*KY0mHvubS!aK|Z&j#MPJd}=A5e%X`X2)KlBG)vi-XcG|?&cW$jXp1i_^Fb| zsNdd_{^}9}p^Ni1)qSs+++CN&jFp*^T$ zreXcArenHjSz0^wSd_Wlcu6QDK=6E@J>kT8Qw?-!vK95_ux z*fhvS>s-4`AL)vWv5dmKV%Lt%2R^npXTQZ2Mlq1y`&xU4V95~?^xE9Lm2i69xp|D+h)Id6tuGV5PBZv#*% z??WFW76e{#d7f>>`tE~ghnr@dcet5r-3*H`sV3*o3%1G#@yJ$F8-ZIPt73&})ls&E zY`9EtcWEw7ka7s6ep!%WL2aU?w2#!?rIFYPMisENm~d^nBP6<08sr#s7*UBJu?+!S z%hh?!6`d98#^u^=I2I?O3!___1e_KD3D42^M1$&8#X=)~+9hI%Zq=DO`&yypN^;$E z$cDVc$qJj0P$;Kj{_&)?kb%J_k1TaUZLLr*NY{1)puvz?w}^XtK}m~ zfdm$-H;PZ~Z>Hgnskq|Wk_5a`*U-yxh*+IxfOBIt+PwGJp{lWhe16~1qgT%BOYPmy zc{QHfy?NstPRVwo^r6BD9<`lV@npQ~9i!rK@Aznb!Aw`^_GpTi^&}YfLv`_LllPk0 zvuZYr5FAYd>ki13m0818N352w|7dfo-`SA|{Q+Q$bP1B5`xbCn{VBfCr^C z6ne0w3b`VYAUYg6Y0TWVBr?%`XqLw>?eU=h_u-O#A0klgBU3!`M1!S4^LUL)xKr&A zc)uCjo*4!56k_LgwxRRxYPOwL;8_zDCni6e=9$kbEFd^ZAp}^Y!i5r*8A7nV3@qz= zz_GixsyS?Ovl6`2n!kccdS~2YMy~C=719)Suot5_p6@YM=k??>Eq{!xFxN*z&{_q; zSD%>w9LO8C=R9pJ@=NSahcn(jgD-W9kx1aT5lCufeVH=XYKeTcdZMhHenrC6>tlLI3l$6 zwDz#}>N;@PItU$+i7OcCB;%U$S|twqos6e+ol6KS^bCj4lZ+O3xi9BqF!tj6=!c?E)on`%=niUj5I<4i6k1+w=)S`w9lT7~w1xgk+ z_SPnU3pn9_6?3G3e;^`7Nk?u${x56NCC5O6zCEItSh545BLiU-aPy@gv|$BhSX{RZ zXi{A*xQFuwa`^pmP;!7Ub}}CXpRh4EXJV)$;G{P1xi1eMc@K{xH?=z;n*))7Y@x{) zDJ}~x-v=Gr%F<}#vH~u;7hslcmyV@U(|BQlWvHXD^>_y{1skDC%PUdb$<_Hm28@rI zH9dxFn*di%AJA)nGZ@-LoZNiz$C$WDx$U;&FZ}?)6p#cEclS%lL970fB@nbKsO9Moy3#l2-8W9iXX z30cyYln&7?ZCUnDo;X9y6Vzy2q820-2Yd|74(mY#N7;y*YC9B4y0p=VLMdu`qvTSg zouho@YjlX3N=)HwqWzUf-_`IM@rfhk>I2bt7c}<#x%9rNPP_IrR`2z0J#O-Dl%L-j z_q<9er7O|}G7FNp$^0ge5h0om)Utgmmq#1nNp|N?ixq`>6Z-2@NV1=iSBDqX4>K`o7}>`J z8DNer#H6u`Zyg`~NORl$;HmUH(a(IZ9e~$bzV!r7*PCD=ms8 zYB%KqRu)%B;EEf{EF$aVHSvgf5b6$@Cav^RC?6`41ncJ3-p}G#GtsNdnkXh?Ob5Dl@!aACnF#B1g8$^mncM6cOEB zqS}dU$ZsJ-6PA2~=vOd1(JV?_`>^-Ex>QMo!bJgO1m{f(g%ecgih4Q}gapHIhnaGPPUv~ThltKhc86M z2v+L4Befed!PYlJdClm?U==MQ3nhho9%%H&V+aC1yk+zt8mMYn*Q3x+4?8GxWuFKi$bsIiJtx>6bA{Vc3fC9U~*At~k$V zUnAM%f{Bg?eHScUzi6XtM|t3G+d$AG@nPbb8I|U)tXT5%1dj$y~c^$Kk2mw&;_^y1xAHH&;ZszMACGy%(@>xI7rhN88e`m zQCd2hmX=#oo0=`_mn^GFRJ4#x2n)-bOT4Vytgfc@w6v_wOx50YZZ@;VNHYXZNq9Ef z&Hl8!Xic|!UrkZOeQP6}Fe8$Z$Bt=MX%Qib(5KuVqSg`yl#wCDT-8{^H@gMrh!&{J zyyS!D>Ax=T#_F4JU|LjZw^-1eXpW*KpVG@paV#RaQMa~`w;4@V{HlV2Jh+S1H5khEYRE1)SwjW6Bmd}g?tws+8Y-Qn=B&_9JM28~hGK$r={K9&8hiUh(3T<_+ zs$(0_4cm~@VfPncJyUY4iq+&Y0#GEH%f{2I>B{rF8|B^5@6*3g(~C-%KLMYSxsa{h zHj$cFc^pxp$k2Z@NR?I>=2{k3$A7T{bLQBKA>niVci9#F(oGaRe?J7 z!Y~`qC@@4ydkM~UA>%DQsC|5iN6=(U17u*~=sV8IuC`C-BJc<5`GyHwsDV4*4*FX8 zu;F^))X(DGwsJ2u!3V9v_3hX)T-tht;DqshMI5z!UB*JPV=$CyVzD6gauTFSF|eu~ zq4P6JC3tKbSkWHGx=r9lfdS3&P|+TqtdF^pw*&2Zk3taZ~41t5=z$&vL zSAT7JQmt@}^-S4E-lVA?%zqQzxn^INaTleoy-l~am?%wZUOufJg+hT8m+;-XUloR^ zG)_>uwI0qu@EetdfWsUcfTV(NUS!sQh??W&k=e#t?Ypa&eU?&pMBTYGM@RY|QGhH& zzlieQkhjA82)FaHEKaAu4NWBH)f`^*YQ1~mnuV2_C7~sG%3@A}0?ZBJ(_@Uwj+Kpe z*ag-bioyyC7>N|qt2p2Dt`4@-cJ-p?LmHLo#RrZ}7vxQe@pO&6_L{M*hSi==AizgW zdl^eH{{8OT`U*1ge8EzXRbl(hsul38&Kn#Mpn6 zO{gZQEG>G>Fld29A9DzkyA9v-o)P->vq0il_eGJ7jqD_F!~p>fEp{HUNa`Fy@ruHF z(@c4zCq_%Y`IAvN`C|A}oyD>%L~%Hq@ojUjjYK#-PP2s-jJu20B4nSoTd2C@z!xWP z4i84?u1Q}nITuXvXrd{xAIKBK6}S4DeXWfd`GT6HMVYuz8E~tB1IdCIYvb7B#&s9G zklFAw9;+H!;f*_lf{yU+hM_VHuYQ4jcpVa;zwXwjK1oJ2(On#eF37L`^ zy#6Hg4zMK1=02bTk7!JyF3M6ZCN3#ej;!Oz?XM8C(fxc33u|v#`=4TU2;>6C2Oi#I z0~o(i-KdN#aclOXVh&!J>W@v~j!&d53csEgAQEVspu1GxUNd8A4{&~MEqqJ+E>!6_ z|L!t|1ui?sbtMaty)&QA#!JAk+lk&olJ4^Sd-WB+XXZhEa@g*xojw{I&rZ~nH)*E? z!^`(0zGZ56ARtn}Mrome9IlXIpA3c{T^cK%eOTbC27N>sn$5S+K!MpY2qg}3qscV_ zYcwqfeD_Q(=sObV{4)L-D^H2=-oV%JC67ts$--)3TGwRO*9ga|(`r@haA4;}#_YYr zcV-sn&t>4vEp=R&!Ly|p3z1{K61uQi?PUe`M?cW2QU#8{Hq|5Nr~cOC(;G)bullP~ zt#D_Q2aezHjygY(dw@s@&Ez)HB?ILRhwZcAFf>8ijcPx4|5Nlx`sILsvy~X%Dx>Cc zr^z95tIkkXd^LDZ^sEVU+-M5=kAzgMV!qlJ2->i6ud&mGq!`FpJ((IU6Pkl-!*(pV zQKt+%QrFGp$FUzK0j2WOgee8-OsY3kzDrWoFUQKps7FVr;d4v`SaiKjMN?%Th^cd#FoOjYFXx-8fGxbO70?G}C`LPbLUqQK z#E4Ys=`<{+iNuVpnzcra%~Y5}p=$AinjUg9Wj|~LF+Xr7tz&gZfYtOiNsBhIN{5b> zl}oyK_)7jEYY`O`FvpJ>{N~N=&Caz8UBFHnAqsB@2Rh8nzP~OBPO8ae;enq4=tJ6eb~bG$v>P zQo1NE394o*Ou1}6JTgmXw<#^Z6ikkWx!H%i7v?B=EloQ3;;XEq2h4R^`%`1E^gG7xG`oeytAehW?S1;?`p&5hjaGosKdk9pw=2x zS`_j;Q?2hMKhSsrbzOlHoaqn0nl_N7`GDC`F(|ferdV6Ap&c z-6Xv*53td1sCyknmY&Bf(WtU4>9jbC+Av48Fy|gtq8vJ)NP&r!XR!+T#M3Va8SJkl zb_Zew8B;auFUj0eCE^EzHi4h2@Ev~1E77#wP9tLaq{FR`)JmTN6bSeU}Q z`>^$?Dqq?-meILoNFfFSy`x6cw2TSlAROI}2dEe7wNsMH;)tcLc^^)aQ6W2u)#GG2000#52ORTKTQ&Tuus>@X|-QFGa<|OBWs-UbA8t7S z7TCa14Ska*)9LtLlva_r)hjaHh?XE!tG=ojf6T5Rus~ZS=7DB+ z@&VDQBrVQkNwo040hsJ*cxGr~*Zl-6w0t%b0FThv%hIEcmLF;64Y<2fh!Mp3f$BXzIlz-nbA*h@cnwQ6`9{#HIoF=HCtl1pyO}Lom)3usg zIpb0M_SbW(f&VD9NFfwGYzD#>UFir)^(qHO7)S?}ZeR#;zcbx3${lpz#T8a8HPU=~coS$am zi_+UlZ$Adp?>Qt1m=`7rR7}wGl=4^7&`L41)dSDA? zmg{s}emqD`z#AA?yb&pQ`o;5&~gWx*65Bc@ivv= z%Fu8|2d5A$>HVOP*1LW@{>zr@U6P2-*xjOzwIZ>3?f1e*;x{>pWzk6@`VDSz2;LfMpB_~EfwjFDaQrX&QAi^NQWKBB7{bm7i zN4$9gnS}*711pIt0(~%#dwe_z9KGX=`4bau$_3Yzitkw*-lO+6Tvt53`Sp(@1JjrM z%`%Ws>B2z0!pp;647lC$d=T^e5N*V7)iK~<&L>vYY#uj4${J?{P<#vS2qlwV$C137 z$JH(mfOwW zT3=mFJhuNE>5go;_Z_H>mBKyV@ufWCE6oBMv1J5d6DzS+z(W-xH*rd>=K)xW^-(1+ zR{^5P&Ws|SS8lqug$|;?+SShT^_IBk9!0N|AFKcn{0eKo&^qtfwS(9(MLz=&4rFi- zUzLV-orpQ;HC{6g_tEZfs;&Uj?o3C@6i2v$X&IosNlr&LEW&&z5Yn_*Gfd|^84|Ll zyIV{VKAgqv!qaJEO`C?nCeUUlNuOj)DMjFihAqkV3^+4$WPW4|ZGqlWRCjwuJdQbo zB`UI-kpXVRC#a=FGaTf9?t=MB0>PX39H6xri)S$NOcxW+&}B0dBDkFPEnLThWqScq zp&wBJL{h!=p1D-k6=rOvGfM27#3^uFdtGzFMTWIqQuN~k=Z1RVX3k^Ue}S?9KEn5{ z*KXSvmgd=I?0bJVEan5ys_*t`$j@LOg`5v7lo%@(DjG7W1d-W<^q5I;G7X?kJzSo4 z2QH9KA=j8r!9M56YBx@$HO#BJngix?Ri)ZptJ85RbT1sq z&RM9?C=Xdnk>5f!P&8n!cqP=$M+I{xSMLc>M;%#~W#^$^JMvtM(5ESE?>pK#q~0X( z(a_ARnwF?GuuTiN8t64NGAC9W>7Vz$-uFbEm}z$@*W9A}g>x;&>#C$Cd!js=tnn$= zEfs%-%E?JK-kcZzvZeG9TE-Jk_?%5xp*TA488c{Fmq9n6MDxTi$&w*Ik?7td+*SPf zW{|=GM3@=GT(hP|WpJ1j%xx;zHo7^voHxubpykbACSy;<9~p-IQ=-#A2BU+Fz8OP> z?H)c$DLivKUOc3PlGqRgC^z7Dq{bfiQhefwIctC?G3G5Dg`iE1DNm|$2x%%Nsuy(4 zDj#A`3J<9#)I!IusU>XKYDG$?@XG&!x&5YOgJk1!+uojb_otYv#Mup#ov#8*aGPkw zy{9d(@VMTNVbCu@J1hC(g{XCQnYKJIqs`07!VPYKJP%D5H_c7;EmqQg%Aj4a=vJ_O zj^iBiv|Risl@;=6xp-5-SDkO1nxc%ORf@0lI(vbP0E36_MOovrx#JK8IEFCpGpzcI zsST{ViiX}sq17(2TGRI?gJ#MNw)!;X+N^+8QXPYxfNRK6b^DtPcOc`(!2 z3*ZOwqnT{IL2~Ln-GqHW4l0j$+_&-U^`DU`&J$Zzuq2Zo&DMKq%-^$nsixIIXegz4 zS-Z+UTkrTvQ%~a^Wi6@Ck%@yl2XiOhFY+BW{`r-^Czcm|A2Z(mwK!p+&ZXv->L$;< z!Z@!JRpE%&?8J+H>l3jVue&zxw3SlrEy(vhreBH&Ri=cWhe7XAe(0@iw2f;2kS#^b zXeG@bN<@vm!RsCE=g83neqwA=Eb)uWxQ44p&%C+=F2(2vJJ@xjRF5cai|d$MLldd% z@5NeGH6F;du)s(&BIh*mwaK+GjiF%A`Ip8zge028`=H{FHVI!-LM}-dCbuZ2RAcSt z4ad88nEhsXj-|dQHSg5t%CZU1I&WeXvPc%LvrcAlMnwz{AKr zqf|)PE%in%QY`PceHT!Tbar+DV+WuRHfNN8x4JJ)FA2YreN>laesyUM*iKeC8&xJ1 zmE#;0divT{zu;m`Z-$JB_0ST&tKF_Cw(x}H7O1pvyVcNd#u}bZDc`&hp^ep|{4Osc z1dbHyQ(Rw3T(-4yb>4i~TythbY>z;Kfyo2I?))fL) zo|L=OBhiifTw~*DxO>v8TU6k9J8GyAd=#N3zNsltZU^fD|teKkK7-LZL4 zG(QcKI}_m+@mtk~x;eI=8%|mlkY8GOIRn_cnebM6M}Q&h^X7x!>^w~Kwvi-K>!`G9 z-`ho1#vKzWESka%d7Y;b|Lam}s zfq-!Tuihx|q~fEQrJh9N0bZ#&ILezW8WC z5lpd2XXD|G3j5y?igTQU=5xwuKEm~^_0M{tTXa(fZ3-WH*C$wpnsvtNlIU4R6(a^- zp;cG6+6FO(V;I~(P51IH#bs-!EQtr=?A1SZ%C_y9797Z8SjQa$^s~f_sf@t*bKYdk zeTg6aVndg3SSPpSLB*UnsPfGqif|x!0DmP}lKeneza{zwGIX27I*Ble%Xu%dr*kqFcX=@ZES+!`*n#1)> zh0YTT&y)>e31TvXT!Rj+o>VBA3I}m9Y^+db@PiZyDW#91Vbw=(Shd^OVBEFV>oIo> zHLC95{ktU$WtFkghpH5@CzrtNVXs2T8YS|?tKSbe1N))T2=+E7sOb(PZ3QkAQ2*wn6)XELYJ+)q|F3FZFz;Wtl)pQkWcXGfa38kuiB8 zSsLp3S<6NE!4iDvXafmeST*uB4jz`_>D`CmiP2Y00H;m#fE&mGj z^g-Y^pXbOOd&M;gZLFNCF#R0nre<*%YuRuAkVx3-Syc8)dnuiB!qVH7g3#c+zd+hC z;SkSFm7Y=Me5)$g;@-5!DH|%NjE+QPlU0?9EcIfuI~Q;KqT;LX3lZ01;yCq;W6jo` zA8H0T?IUE+2r+4cZKWXk0W#-iC_N>c#^*-OaiyOZgF|lV(qVps#vX)9g?HW_gj$A> z>F?i?g2K}2z5*v8N3RbwJrQnh_69*W(Q{!Jc{2o)bCrfTq;Q>vys%In1E%zIv*q?s z-YKCOl;C`KqySn&e>zSO>O@qD-t`JS0_+LqH;95ig=B@i1EcW^PA?orR;W-v>qVop zTr$sqwgM>7=0bdMgG{RHV3n`m$+)N;XuYGw_U<`2J#kfuccs9*q4MM=RqMrk0p5`# zzPMH_kx6@xlFw!6k0zcqYz1MUkM{of@FFk;A~#@MI!t^W>M(f4$)oo`fS_>Y6M023 zh&FUzi9qFy{4)`T1>Ggd+2l7iEhP3VM3QfYqyo`k;fqHBV0)hK3XX}D7geg0Co;$) zpp)kQSa4vmLIs{E$jTiO`7MFHryAeSPh#VnRVBL3B&vNKfB%OxOmv*f5cpU45(NqZ z!uG$SMftxvnE#PIDB4*49U1U#iRpgsYN@yMvG74?5j$;uj>->bQ$;kS5_$LWVkf0Z z+p6odxHW_7@hABB_DSjB%HXSj4uWGfMs!WkFNr&Ce}-NG@68_ zehYe}*(tr46LSV-lt*3t!5r}CN~0e^77QCtX&xDD+KeMC1oc6EI$mE?-AXN zN0z|Uz+6p@rtRrq+d1PqqFW)CrE&41yV>7Y6P*fB`ipG-m@$91n2EL#tW}mbKDg=P zzB$Y=)~V%`Me1sn||KB6KnD}R6aQZ7WFIKpGbb@--t1MsTO$XEJ# zz2QKoOYqfKxCX0bVimgs7KN*4cmeoLl-NSxyFY_rOkg-|89t2D&k;ecg|$KC`OOO8 zi4;RNX^cdkO6m9u^jsUEqhQf{`j5ENRkkTfz|ex5Nn0 zh(Jb;TA&wQK7-+j?dykwpi?`nr#u%~g-N)k{Z{O!LX+ zizy}q#MsRW|3IhH4d+Sj5%)=MQdr)fp|WqkipmMdf>p*A^(ix@IYLtyl?u{Rn2KbX zT!hOfu<;|Zs#Ptmp6$~B=I?tXv?%z@*sWsL%+C6~NUXvuT46EDv`t!m+5?UQ>rlY} zisTj^Np93_Y<6p}A^T8h`f|diY(BjWq7ms;RVG3CYMZO9+GyvO)~mB?;zdz-%oVJH zwggOA7fvb~z^YLC@MMb-X*NDdE*lMF)Goh%aVCNmNpQnwg7Q7c1{T#KNv3p0!7Y4h zYZTS060N1HA4`>jR^U+9M%d&rwWGf|WPB-(Z4mi5jhlUh3f2(jFs1IF3 zEI_LwroRLx^EboXp1ZjOeYE1ZYH#s$YyF^ELr+xTd#E8ML6K z67`Y)oaBx%nDVR{@MzGW%GydrVF#rY4H{T8Cv|3(hUi1(P6FgGT^Vx?N8K_`*sxxi zk7FB{XkvR&3z{pY$ALS3NrtF!mITxHjZ~p6>(dpiv*pm%hMr(4oi41B(4Nrz8UYW+ zHbqj{Z)u~dd18HxXtX50OqqVX_0KqGgV-w;Vmq4(S0WJ(ewImJ{j-^2Ju1@_p9_{>8jsd2EHqE-{TmIUe`(0h>@8Kc#hN%P3my^`zECB;AfV5FD^;>o{LoyTD8X%L znBR@1(4J25(xitzEazxJRDHqRticxMuSmEr8dBe=v-sl)I?Q>zQMEm35Sk%58AGZh z`~9xa0_;2!zb}S3{uVieYm$o0H+ADw3Uup_Kx&Op=B6!4 zj)7jeN#B@(YK{TZ#!E&Dz=de}35ZN3>wx2G+{&F1+C;dh2T_>F2@mu|4+M15Kkaa-<8%X3QHU_ug0rVX2XoI0VG$-0M5oUE38M0_F55 zk9#HYIpCuttE*jdXSv5AZnXTck>VCR; z^~PLxiV*3;wIMIH21Q}fBGO)by?3j_wM90-503t)#??R7Yp2ckS&6u)cG=3WqRV$D>-6w^-iOaWlx+W|PIY9^L_<<1emo8F#OXM>JLKw6YoA*vy$5+ls6 zeELmhw>N50-MAm(E$ZrML_g0}Hvo5p4rm)Dl?w%5iG zrZNkmQISfzALK$P?obWrJ6-ncfiBaW%q*8pF6qd4DgdY6{#*M4?H2wFS$pOMZ>~uD z28W#1KO8EzuClT8aUnH#*Yf8_4_ofCcQAfKqS?RAd4$L!C0)oHD+lkn_{Gx)Pt?*K z2J353@L2dkvpyoJ%jbQL-AuGj(3Ap~vvl1Jrw1w`E6r2$l>5Q-g0&Tz4?~S>VX^Kd zRQLFmtIS)>wf0CGOZJd5i^_AScTuCWA_VJm!#eA5CzV+8&?Str@atIHo6`5FNKoT7 z1m3AC%)U*yUbPsCik0&5=P1qU%7h2eCpX2TOMTO$sbo-Tl9pB+1PVGm_)qb+8IAY1 zM@|=^y({{zJZpuyUgs&_mW}QL`QS-OfN-yc`-j_gzh0ZuR`j$~1gA*4 zEr_fZ#5U>YgI-kPrIWm3Qo?@MF8gKG!bAUli(Fn<`!!a#ClY4tNWC*-lzk;u5SNG5 zp}yD4L0p9{D#(?!L$zLRo@BeLUeuy239pxL-pIqohY`)X zIBB%mAvknEws2K~TD2bCWItW}Oj4A$X+vfsA~^U^8e%WwgJKYt_2AyPgFTO33Bp9q zUdRX#LlJYN;>_Bc+7xG2oMAsYno=FMEtW5Z0e>yq){w{QlGP)r-LDyn(p5l~$(Cvl zN-8Xh^-;cC(SbaVta1mY{C)VVQlV(2Ila1bivO2-u;&7 zEf5%YHICqWhS~#qLNILZY1-49B_Gw$Y%zvLbsnf`u~EO4#c|Yc#air=(3@AuUPQ($ znKvXon?tJU_MTLmI`*Y3SDBBz4_bDAHa)SW#2Rc+x@L>OYZ z#faM{PdKmbTvO8o;xKd%wf3=REywJmNjoomcipctM#3GeVs@u<+9_?fq5gkgp5N%K@WipnEk8<@AK@6Z-=b0)LP&cK|VW_*><$AQy&%W{iQQ zVBmzQVwhhN&b0Nb#}iU0{fdufRNVfzW%_a6OMrK@fg>2jox|S|-8@4ZrY<$$31s7L zpQjBR3>JHpHpy9hk7bQlx-hnfTFU5G9#39)RvFsf0j2T6rR*nJysjVeh*uDn_dXck zRI@W6$r~{542xiLYmai{#~Wk^!0p|b`ye!fAqf@yt=Zn9tmg%<_I($9`c~}@trp1C z1p(KFHgy^L;4w)slk=3z^`tH8>rc>t4TlRPa0pGY$0UtA?d8~sJMiTh&}wY}QCo2R zBzsnVxJvwn6L(OSP#Skki*UNo>eRB6VCK{8mXlnfcgCbbEZj};prJG5Z-a_dfl#0d zme*Gch4+##^vspH)ro(j{f0<=p?rv+J=XqQcJLZ@sOVbj9WbK;d>SFw`L;8%&)>(o zt6SqoU>w3X)YFbI;lRJ~fy4qZRt1>T8~0i3yK9fzuMPNH7^xrkh0?A{y6>>+!|&X& zs7)iME?-usHjd==_dZ@Ny|OR7HL+t9UZNg1(8%?ljQGhGOvj1K8NlCsWUYD6>m2rp z*b*i2Ozy71&b2w|sQa+hW}8~&%N^^>4Qa{+b6l6gzCphcj33mF-cN8}-`(5^b*YO7 zj6+dS68c&Gz^dFJH-sop?`;hd?@qK*G-+MHo+d)q(6|h%ohWQytCen`{WutWZ@6} zD&<^EE=XxD`t?XzyJBpzrs<8*=z$eo?k(=;9+FE8W+kq3N4bhVxic3UWi+HKY-|y(BNd%R9z2=r z?m%IzHwEz&kJy@*;xq@{_ShOD$eRLP4~L4lXU`XBuh<$SamXy$S(PCyG;jSvzlvM~ zH;76L-CRE_$It2lU-ZlOG#`yAb{!I~L_tt&=->@jqR;=BG38}wdyxFwtOxwnU(@`T zmdxf~Q!4h3cJ?NY&K4$4E{gq=eWCrOT`s<8%D;4}ycec*4Nc4n5>i~`#4b?(SMI(DnTcuxxp=wVNw4J%l_wV;#|Ia=!qxO<{zTcR)3K$h`z-SQ! z(giuC>6v+Yh=A`6@a8(?z;jo8kMn`GRm|pLN2iv1q{qEC*tYJ~uHvbz(|2)maxKjI{#ty&g{;)n zOVflcw#EP6cu+bo*wZYb=*p?(=5J;R1vnjFAvAyA+2i5gOMVnoKIC=uI8$Wt1MWUVv z*&n>nuGU_DZGC7F`{O82lR6zY=0jPVlhXmml(FMEnmfcNBJrn!5kus#!l&mnkot zZ@KnoTf0zDKv~bFT}N#Uv^MK%KQ27GH|JJT?88#ODxv(Ho(J3t(|v>W>|*9WG@G1v z(0Y;M$8t`+8?%`F)@OfPoOWPIKG)SwMR7Lc=-TNA&pmZGxb%)-h?AJ%1XJ@P7aQj2 z^!jziCi>l4Hh21FhRp4+LKdW7lf7c~{0;A|`lI3j-i%Bl%(zc*0Y(rI2r#^L1kvzA zS|I1Sz_emN(FLRd1eP>{iWIn3r1M>nEeD+m16B?tfT;rtK$a&16Aa{}6PTTtr=ft( zI)MO?j#j7+jj;Cg3!AWLof14C@@p7pM?T5XG!C8Jf@(XjDiRV>_=E23~dF5 z3n(BE-aPosV3CU}m@)Tmz(%Xl%}3wTgfQO*c;pcY<|A)#Lbn8c%L&2~ zMsZRsfefson~pxai7@?(4k@N%%ypt$gg#$@u!tMDW0Lr=LY_T9w*!6T8DWPia3GpA zJFo{AdP53f!wyH>HehL1p*tPDIe;+O+ZkSmA{qzi+R-argmx7dxOQL_9N^8$29gs7 MLVh6Y0JuyB0BF~0bpQYW literal 0 HcmV?d00001 diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF index bdd9fd6..8e91087 100755 --- a/META-INF/MANIFEST.MF +++ b/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Directory Container Bundle-SymbolicName: DirectoryClasspathContainer;singleton:=true -Bundle-Version: 1.1.0 +Bundle-Version: 1.1.2 Bundle-Localization: plugin Require-Bundle: org.eclipse.core.resources, org.eclipse.core.runtime, From 191a7f2074ed29f3baa532c56c1a5f23e8e7e834 Mon Sep 17 00:00:00 2001 From: dpalic Date: Tue, 30 Sep 2014 16:05:56 +0200 Subject: [PATCH 21/34] moved --- .../DirectoryClasspathContainer.source_1.1.2.jar | Bin .../DirectoryClasspathContainer_1.1.2.jar | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename ExportedPlugin/{plugins => }/DirectoryClasspathContainer.source_1.1.2.jar (100%) rename ExportedPlugin/{plugins => }/DirectoryClasspathContainer_1.1.2.jar (100%) diff --git a/ExportedPlugin/plugins/DirectoryClasspathContainer.source_1.1.2.jar b/ExportedPlugin/DirectoryClasspathContainer.source_1.1.2.jar similarity index 100% rename from ExportedPlugin/plugins/DirectoryClasspathContainer.source_1.1.2.jar rename to ExportedPlugin/DirectoryClasspathContainer.source_1.1.2.jar diff --git a/ExportedPlugin/plugins/DirectoryClasspathContainer_1.1.2.jar b/ExportedPlugin/DirectoryClasspathContainer_1.1.2.jar similarity index 100% rename from ExportedPlugin/plugins/DirectoryClasspathContainer_1.1.2.jar rename to ExportedPlugin/DirectoryClasspathContainer_1.1.2.jar From 7b18c38b7a00c9bdb6dbbcb43d39baddc7024744 Mon Sep 17 00:00:00 2001 From: dpalic Date: Tue, 30 Sep 2014 16:10:26 +0200 Subject: [PATCH 22/34] added newer link --- README | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README b/README index 60372c0..55dade4 100644 --- a/README +++ b/README @@ -14,6 +14,10 @@ The previous version had bigger issues about it. The binary in downloads on GitHub just needs to be dropped into the eclipse /plugins/ folder and it will then allow adding a "Directory Container" library to the Java Build Path. +You can find the latest verion here: https://github.com/dpalic/SimpleDirectoryContainer_EclipsePlugin/tree/master/ExportedPlugin +or directly (but maybe outdated): +https://github.com/dpalic/SimpleDirectoryContainer_EclipsePlugin/raw/master/ExportedPlugin/DirectoryClasspathContainer_1.1.2.jar + I created this jar by exporting a "Deployable plug-ins and fragments" from Eclipse at the project level. From d34c5d3c195e195530e5eeee5193f777736c0896 Mon Sep 17 00:00:00 2001 From: dpalic Date: Thu, 16 Oct 2014 08:24:28 +0200 Subject: [PATCH 23/34] updated readme to provide install instructions --- README | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/README b/README index 55dade4..c41dd70 100644 --- a/README +++ b/README @@ -1,5 +1,6 @@ This is an Eclipse plugin that allows creating a dynamic Classpath Container that observes a folder -and loads all .jar (or .zip etc) files into the classpath. +and loads all .jar (or .zip etc) files into the classpath. This plugin is helpful to use a bunch of jar files in one folder as your classpath, without setting it manually. +We use it to get rid of the buggy IvyDE plugin for our IVY dependency management. It is an evolution of original code I got from here: https://www.ibm.com/developerworks/opensource/tutorials/os-eclipse-classpath/ @@ -21,3 +22,13 @@ or directly (but maybe outdated): https://github.com/dpalic/SimpleDirectoryContainer_EclipsePlugin/raw/master/ExportedPlugin/DirectoryClasspathContainer_1.1.2.jar I created this jar by exporting a "Deployable plug-ins and fragments" from Eclipse at the project level. + +############### +# INSTALLATION +############### +1. Download the latest jar file (see above) +2. stop your eclipse (ensure it is really stopped in taskmanager) +3. put the downloaded jar file into your eclipse\plugin folder +4. restart your eclipse +5. in Eclipse go to you Java Build Path settings and go to the tab Libraries +6. "Add Library..." will provide you now a new entry "Directory container" From d7dc43fe805a3884d760762a0851daf597b2452b Mon Sep 17 00:00:00 2001 From: dpalic Date: Wed, 21 Jan 2015 18:01:30 +0100 Subject: [PATCH 24/34] added --- .../README | 34 +++++++++++++++++++ SimpleDirectoryContainer_EclipsePlugin/README | 34 +++++++++++++++++++ .../README | 34 +++++++++++++++++++ 3 files changed, 102 insertions(+) create mode 100644 SimpleDirectoryContainer_EclipseFeature/README create mode 100644 SimpleDirectoryContainer_EclipsePlugin/README create mode 100644 SimpleDirectoryContainer_EclipseUpdateSite/README diff --git a/SimpleDirectoryContainer_EclipseFeature/README b/SimpleDirectoryContainer_EclipseFeature/README new file mode 100644 index 0000000..c41dd70 --- /dev/null +++ b/SimpleDirectoryContainer_EclipseFeature/README @@ -0,0 +1,34 @@ +This is an Eclipse plugin that allows creating a dynamic Classpath Container that observes a folder +and loads all .jar (or .zip etc) files into the classpath. This plugin is helpful to use a bunch of jar files in one folder as your classpath, without setting it manually. +We use it to get rid of the buggy IvyDE plugin for our IVY dependency management. + +It is an evolution of original code I got from here: + https://www.ibm.com/developerworks/opensource/tutorials/os-eclipse-classpath/ +Thus it originates from Aaron Tarter (aarontar@us.ibm.com). + +The primary modification Ben Christensen made (besides renaming things to no longer say 'example') was making it handle +filenames that had multiple dots (such as com.company.library.name.v2.jar). + +The improvements I made (Darko Palic) are to allow multiple directory containers in the classpaths and of course therefore in the eclipse launches. +The previous version had bigger issues about it. + +The binary in downloads on GitHub just needs to be dropped into the eclipse /plugins/ folder and it will +then allow adding a "Directory Container" library to the Java Build Path. + +You can find the latest verion here: +https://github.com/dpalic/SimpleDirectoryContainer_EclipsePlugin/tree/master/ExportedPlugin + +or directly (but maybe outdated): +https://github.com/dpalic/SimpleDirectoryContainer_EclipsePlugin/raw/master/ExportedPlugin/DirectoryClasspathContainer_1.1.2.jar + +I created this jar by exporting a "Deployable plug-ins and fragments" from Eclipse at the project level. + +############### +# INSTALLATION +############### +1. Download the latest jar file (see above) +2. stop your eclipse (ensure it is really stopped in taskmanager) +3. put the downloaded jar file into your eclipse\plugin folder +4. restart your eclipse +5. in Eclipse go to you Java Build Path settings and go to the tab Libraries +6. "Add Library..." will provide you now a new entry "Directory container" diff --git a/SimpleDirectoryContainer_EclipsePlugin/README b/SimpleDirectoryContainer_EclipsePlugin/README new file mode 100644 index 0000000..c41dd70 --- /dev/null +++ b/SimpleDirectoryContainer_EclipsePlugin/README @@ -0,0 +1,34 @@ +This is an Eclipse plugin that allows creating a dynamic Classpath Container that observes a folder +and loads all .jar (or .zip etc) files into the classpath. This plugin is helpful to use a bunch of jar files in one folder as your classpath, without setting it manually. +We use it to get rid of the buggy IvyDE plugin for our IVY dependency management. + +It is an evolution of original code I got from here: + https://www.ibm.com/developerworks/opensource/tutorials/os-eclipse-classpath/ +Thus it originates from Aaron Tarter (aarontar@us.ibm.com). + +The primary modification Ben Christensen made (besides renaming things to no longer say 'example') was making it handle +filenames that had multiple dots (such as com.company.library.name.v2.jar). + +The improvements I made (Darko Palic) are to allow multiple directory containers in the classpaths and of course therefore in the eclipse launches. +The previous version had bigger issues about it. + +The binary in downloads on GitHub just needs to be dropped into the eclipse /plugins/ folder and it will +then allow adding a "Directory Container" library to the Java Build Path. + +You can find the latest verion here: +https://github.com/dpalic/SimpleDirectoryContainer_EclipsePlugin/tree/master/ExportedPlugin + +or directly (but maybe outdated): +https://github.com/dpalic/SimpleDirectoryContainer_EclipsePlugin/raw/master/ExportedPlugin/DirectoryClasspathContainer_1.1.2.jar + +I created this jar by exporting a "Deployable plug-ins and fragments" from Eclipse at the project level. + +############### +# INSTALLATION +############### +1. Download the latest jar file (see above) +2. stop your eclipse (ensure it is really stopped in taskmanager) +3. put the downloaded jar file into your eclipse\plugin folder +4. restart your eclipse +5. in Eclipse go to you Java Build Path settings and go to the tab Libraries +6. "Add Library..." will provide you now a new entry "Directory container" diff --git a/SimpleDirectoryContainer_EclipseUpdateSite/README b/SimpleDirectoryContainer_EclipseUpdateSite/README new file mode 100644 index 0000000..c41dd70 --- /dev/null +++ b/SimpleDirectoryContainer_EclipseUpdateSite/README @@ -0,0 +1,34 @@ +This is an Eclipse plugin that allows creating a dynamic Classpath Container that observes a folder +and loads all .jar (or .zip etc) files into the classpath. This plugin is helpful to use a bunch of jar files in one folder as your classpath, without setting it manually. +We use it to get rid of the buggy IvyDE plugin for our IVY dependency management. + +It is an evolution of original code I got from here: + https://www.ibm.com/developerworks/opensource/tutorials/os-eclipse-classpath/ +Thus it originates from Aaron Tarter (aarontar@us.ibm.com). + +The primary modification Ben Christensen made (besides renaming things to no longer say 'example') was making it handle +filenames that had multiple dots (such as com.company.library.name.v2.jar). + +The improvements I made (Darko Palic) are to allow multiple directory containers in the classpaths and of course therefore in the eclipse launches. +The previous version had bigger issues about it. + +The binary in downloads on GitHub just needs to be dropped into the eclipse /plugins/ folder and it will +then allow adding a "Directory Container" library to the Java Build Path. + +You can find the latest verion here: +https://github.com/dpalic/SimpleDirectoryContainer_EclipsePlugin/tree/master/ExportedPlugin + +or directly (but maybe outdated): +https://github.com/dpalic/SimpleDirectoryContainer_EclipsePlugin/raw/master/ExportedPlugin/DirectoryClasspathContainer_1.1.2.jar + +I created this jar by exporting a "Deployable plug-ins and fragments" from Eclipse at the project level. + +############### +# INSTALLATION +############### +1. Download the latest jar file (see above) +2. stop your eclipse (ensure it is really stopped in taskmanager) +3. put the downloaded jar file into your eclipse\plugin folder +4. restart your eclipse +5. in Eclipse go to you Java Build Path settings and go to the tab Libraries +6. "Add Library..." will provide you now a new entry "Directory container" From 9c820eea4f07a678429c9f4e6ee8d4522276a28c Mon Sep 17 00:00:00 2001 From: dpalic Date: Wed, 21 Jan 2015 18:03:27 +0100 Subject: [PATCH 25/34] moved to subdir --- .../.classpath | 0 .../.project | 0 .../.settings}/org.eclipse.jdt.core.prefs | 0 .../.settings}/org.eclipse.jdt.ui.prefs | 0 .../DirectoryClasspathContainer.source_1.1.0.jar | Bin .../DirectoryClasspathContainer.source_1.1.2.jar | Bin .../DirectoryClasspathContainer_1.0.1.jar | Bin .../DirectoryClasspathContainer_1.1.0.jar | Bin .../DirectoryClasspathContainer_1.1.2.jar | Bin .../META-INF}/MANIFEST.MF | 0 .../SimpleDirectoryContainer.launch | 0 .../build.properties | 0 .../lib}/annotations-api.jar | Bin .../lib}/catalina-ant.jar | Bin .../lib}/catalina-ha.jar | Bin .../lib}/catalina-tribes.jar | Bin .../lib}/catalina.jar | Bin .../lib}/ecj-3.3.1.jar | Bin .../lib}/el-api.jar | Bin .../lib}/jasper-el.jar | Bin .../lib}/jasper.jar | Bin .../lib}/jsp-api.jar | Bin .../lib}/servlet-api.jar | Bin .../lib}/tomcat-coyote.jar | Bin .../lib}/tomcat-dbcp.jar | Bin .../lib}/tomcat-i18n-es.jar | Bin .../lib}/tomcat-i18n-fr.jar | Bin .../lib}/tomcat-i18n-ja.jar | Bin .../plugin.properties | 0 .../plugin.xml | 0 .../src}/org/container/directory/Activator.java | 0 .../directory/ClasspathExtraAttribute.java | 0 .../org/container/directory/ContainerDirFilter.java | 0 .../src}/org/container/directory/Logger.java | 0 .../src}/org/container/directory/Messages.java | 0 .../org/container/directory/SimpleDirContainer.java | 0 .../directory/SimpleDirContainerInitializer.java | 0 .../container/directory/SimpleDirContainerPage.java | 0 .../org/container/directory/messages.properties | 0 39 files changed, 0 insertions(+), 0 deletions(-) rename .classpath => SimpleDirectoryContainer_EclipsePlugin/.classpath (100%) rename .project => SimpleDirectoryContainer_EclipsePlugin/.project (100%) rename {.settings => SimpleDirectoryContainer_EclipsePlugin/.settings}/org.eclipse.jdt.core.prefs (100%) rename {.settings => SimpleDirectoryContainer_EclipsePlugin/.settings}/org.eclipse.jdt.ui.prefs (100%) rename {ExportedPlugin => SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin}/DirectoryClasspathContainer.source_1.1.0.jar (100%) rename {ExportedPlugin => SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin}/DirectoryClasspathContainer.source_1.1.2.jar (100%) rename {ExportedPlugin => SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin}/DirectoryClasspathContainer_1.0.1.jar (100%) rename {ExportedPlugin => SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin}/DirectoryClasspathContainer_1.1.0.jar (100%) rename {ExportedPlugin => SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin}/DirectoryClasspathContainer_1.1.2.jar (100%) rename {META-INF => SimpleDirectoryContainer_EclipsePlugin/META-INF}/MANIFEST.MF (100%) rename SimpleDirectoryContainer.launch => SimpleDirectoryContainer_EclipsePlugin/SimpleDirectoryContainer.launch (100%) rename build.properties => SimpleDirectoryContainer_EclipsePlugin/build.properties (100%) rename {lib => SimpleDirectoryContainer_EclipsePlugin/lib}/annotations-api.jar (100%) rename {lib => SimpleDirectoryContainer_EclipsePlugin/lib}/catalina-ant.jar (100%) rename {lib => SimpleDirectoryContainer_EclipsePlugin/lib}/catalina-ha.jar (100%) rename {lib => SimpleDirectoryContainer_EclipsePlugin/lib}/catalina-tribes.jar (100%) rename {lib => SimpleDirectoryContainer_EclipsePlugin/lib}/catalina.jar (100%) rename {lib => SimpleDirectoryContainer_EclipsePlugin/lib}/ecj-3.3.1.jar (100%) rename {lib => SimpleDirectoryContainer_EclipsePlugin/lib}/el-api.jar (100%) rename {lib => SimpleDirectoryContainer_EclipsePlugin/lib}/jasper-el.jar (100%) rename {lib => SimpleDirectoryContainer_EclipsePlugin/lib}/jasper.jar (100%) rename {lib => SimpleDirectoryContainer_EclipsePlugin/lib}/jsp-api.jar (100%) rename {lib => SimpleDirectoryContainer_EclipsePlugin/lib}/servlet-api.jar (100%) rename {lib => SimpleDirectoryContainer_EclipsePlugin/lib}/tomcat-coyote.jar (100%) rename {lib => SimpleDirectoryContainer_EclipsePlugin/lib}/tomcat-dbcp.jar (100%) rename {lib => SimpleDirectoryContainer_EclipsePlugin/lib}/tomcat-i18n-es.jar (100%) rename {lib => SimpleDirectoryContainer_EclipsePlugin/lib}/tomcat-i18n-fr.jar (100%) rename {lib => SimpleDirectoryContainer_EclipsePlugin/lib}/tomcat-i18n-ja.jar (100%) rename plugin.properties => SimpleDirectoryContainer_EclipsePlugin/plugin.properties (100%) rename plugin.xml => SimpleDirectoryContainer_EclipsePlugin/plugin.xml (100%) rename {src => SimpleDirectoryContainer_EclipsePlugin/src}/org/container/directory/Activator.java (100%) rename {src => SimpleDirectoryContainer_EclipsePlugin/src}/org/container/directory/ClasspathExtraAttribute.java (100%) rename {src => SimpleDirectoryContainer_EclipsePlugin/src}/org/container/directory/ContainerDirFilter.java (100%) rename {src => SimpleDirectoryContainer_EclipsePlugin/src}/org/container/directory/Logger.java (100%) rename {src => SimpleDirectoryContainer_EclipsePlugin/src}/org/container/directory/Messages.java (100%) rename {src => SimpleDirectoryContainer_EclipsePlugin/src}/org/container/directory/SimpleDirContainer.java (100%) rename {src => SimpleDirectoryContainer_EclipsePlugin/src}/org/container/directory/SimpleDirContainerInitializer.java (100%) rename {src => SimpleDirectoryContainer_EclipsePlugin/src}/org/container/directory/SimpleDirContainerPage.java (100%) rename {src => SimpleDirectoryContainer_EclipsePlugin/src}/org/container/directory/messages.properties (100%) diff --git a/.classpath b/SimpleDirectoryContainer_EclipsePlugin/.classpath similarity index 100% rename from .classpath rename to SimpleDirectoryContainer_EclipsePlugin/.classpath diff --git a/.project b/SimpleDirectoryContainer_EclipsePlugin/.project similarity index 100% rename from .project rename to SimpleDirectoryContainer_EclipsePlugin/.project diff --git a/.settings/org.eclipse.jdt.core.prefs b/SimpleDirectoryContainer_EclipsePlugin/.settings/org.eclipse.jdt.core.prefs similarity index 100% rename from .settings/org.eclipse.jdt.core.prefs rename to SimpleDirectoryContainer_EclipsePlugin/.settings/org.eclipse.jdt.core.prefs diff --git a/.settings/org.eclipse.jdt.ui.prefs b/SimpleDirectoryContainer_EclipsePlugin/.settings/org.eclipse.jdt.ui.prefs similarity index 100% rename from .settings/org.eclipse.jdt.ui.prefs rename to SimpleDirectoryContainer_EclipsePlugin/.settings/org.eclipse.jdt.ui.prefs diff --git a/ExportedPlugin/DirectoryClasspathContainer.source_1.1.0.jar b/SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/DirectoryClasspathContainer.source_1.1.0.jar similarity index 100% rename from ExportedPlugin/DirectoryClasspathContainer.source_1.1.0.jar rename to SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/DirectoryClasspathContainer.source_1.1.0.jar diff --git a/ExportedPlugin/DirectoryClasspathContainer.source_1.1.2.jar b/SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/DirectoryClasspathContainer.source_1.1.2.jar similarity index 100% rename from ExportedPlugin/DirectoryClasspathContainer.source_1.1.2.jar rename to SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/DirectoryClasspathContainer.source_1.1.2.jar diff --git a/ExportedPlugin/DirectoryClasspathContainer_1.0.1.jar b/SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/DirectoryClasspathContainer_1.0.1.jar similarity index 100% rename from ExportedPlugin/DirectoryClasspathContainer_1.0.1.jar rename to SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/DirectoryClasspathContainer_1.0.1.jar diff --git a/ExportedPlugin/DirectoryClasspathContainer_1.1.0.jar b/SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/DirectoryClasspathContainer_1.1.0.jar similarity index 100% rename from ExportedPlugin/DirectoryClasspathContainer_1.1.0.jar rename to SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/DirectoryClasspathContainer_1.1.0.jar diff --git a/ExportedPlugin/DirectoryClasspathContainer_1.1.2.jar b/SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/DirectoryClasspathContainer_1.1.2.jar similarity index 100% rename from ExportedPlugin/DirectoryClasspathContainer_1.1.2.jar rename to SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/DirectoryClasspathContainer_1.1.2.jar diff --git a/META-INF/MANIFEST.MF b/SimpleDirectoryContainer_EclipsePlugin/META-INF/MANIFEST.MF similarity index 100% rename from META-INF/MANIFEST.MF rename to SimpleDirectoryContainer_EclipsePlugin/META-INF/MANIFEST.MF diff --git a/SimpleDirectoryContainer.launch b/SimpleDirectoryContainer_EclipsePlugin/SimpleDirectoryContainer.launch similarity index 100% rename from SimpleDirectoryContainer.launch rename to SimpleDirectoryContainer_EclipsePlugin/SimpleDirectoryContainer.launch diff --git a/build.properties b/SimpleDirectoryContainer_EclipsePlugin/build.properties similarity index 100% rename from build.properties rename to SimpleDirectoryContainer_EclipsePlugin/build.properties diff --git a/lib/annotations-api.jar b/SimpleDirectoryContainer_EclipsePlugin/lib/annotations-api.jar similarity index 100% rename from lib/annotations-api.jar rename to SimpleDirectoryContainer_EclipsePlugin/lib/annotations-api.jar diff --git a/lib/catalina-ant.jar b/SimpleDirectoryContainer_EclipsePlugin/lib/catalina-ant.jar similarity index 100% rename from lib/catalina-ant.jar rename to SimpleDirectoryContainer_EclipsePlugin/lib/catalina-ant.jar diff --git a/lib/catalina-ha.jar b/SimpleDirectoryContainer_EclipsePlugin/lib/catalina-ha.jar similarity index 100% rename from lib/catalina-ha.jar rename to SimpleDirectoryContainer_EclipsePlugin/lib/catalina-ha.jar diff --git a/lib/catalina-tribes.jar b/SimpleDirectoryContainer_EclipsePlugin/lib/catalina-tribes.jar similarity index 100% rename from lib/catalina-tribes.jar rename to SimpleDirectoryContainer_EclipsePlugin/lib/catalina-tribes.jar diff --git a/lib/catalina.jar b/SimpleDirectoryContainer_EclipsePlugin/lib/catalina.jar similarity index 100% rename from lib/catalina.jar rename to SimpleDirectoryContainer_EclipsePlugin/lib/catalina.jar diff --git a/lib/ecj-3.3.1.jar b/SimpleDirectoryContainer_EclipsePlugin/lib/ecj-3.3.1.jar similarity index 100% rename from lib/ecj-3.3.1.jar rename to SimpleDirectoryContainer_EclipsePlugin/lib/ecj-3.3.1.jar diff --git a/lib/el-api.jar b/SimpleDirectoryContainer_EclipsePlugin/lib/el-api.jar similarity index 100% rename from lib/el-api.jar rename to SimpleDirectoryContainer_EclipsePlugin/lib/el-api.jar diff --git a/lib/jasper-el.jar b/SimpleDirectoryContainer_EclipsePlugin/lib/jasper-el.jar similarity index 100% rename from lib/jasper-el.jar rename to SimpleDirectoryContainer_EclipsePlugin/lib/jasper-el.jar diff --git a/lib/jasper.jar b/SimpleDirectoryContainer_EclipsePlugin/lib/jasper.jar similarity index 100% rename from lib/jasper.jar rename to SimpleDirectoryContainer_EclipsePlugin/lib/jasper.jar diff --git a/lib/jsp-api.jar b/SimpleDirectoryContainer_EclipsePlugin/lib/jsp-api.jar similarity index 100% rename from lib/jsp-api.jar rename to SimpleDirectoryContainer_EclipsePlugin/lib/jsp-api.jar diff --git a/lib/servlet-api.jar b/SimpleDirectoryContainer_EclipsePlugin/lib/servlet-api.jar similarity index 100% rename from lib/servlet-api.jar rename to SimpleDirectoryContainer_EclipsePlugin/lib/servlet-api.jar diff --git a/lib/tomcat-coyote.jar b/SimpleDirectoryContainer_EclipsePlugin/lib/tomcat-coyote.jar similarity index 100% rename from lib/tomcat-coyote.jar rename to SimpleDirectoryContainer_EclipsePlugin/lib/tomcat-coyote.jar diff --git a/lib/tomcat-dbcp.jar b/SimpleDirectoryContainer_EclipsePlugin/lib/tomcat-dbcp.jar similarity index 100% rename from lib/tomcat-dbcp.jar rename to SimpleDirectoryContainer_EclipsePlugin/lib/tomcat-dbcp.jar diff --git a/lib/tomcat-i18n-es.jar b/SimpleDirectoryContainer_EclipsePlugin/lib/tomcat-i18n-es.jar similarity index 100% rename from lib/tomcat-i18n-es.jar rename to SimpleDirectoryContainer_EclipsePlugin/lib/tomcat-i18n-es.jar diff --git a/lib/tomcat-i18n-fr.jar b/SimpleDirectoryContainer_EclipsePlugin/lib/tomcat-i18n-fr.jar similarity index 100% rename from lib/tomcat-i18n-fr.jar rename to SimpleDirectoryContainer_EclipsePlugin/lib/tomcat-i18n-fr.jar diff --git a/lib/tomcat-i18n-ja.jar b/SimpleDirectoryContainer_EclipsePlugin/lib/tomcat-i18n-ja.jar similarity index 100% rename from lib/tomcat-i18n-ja.jar rename to SimpleDirectoryContainer_EclipsePlugin/lib/tomcat-i18n-ja.jar diff --git a/plugin.properties b/SimpleDirectoryContainer_EclipsePlugin/plugin.properties similarity index 100% rename from plugin.properties rename to SimpleDirectoryContainer_EclipsePlugin/plugin.properties diff --git a/plugin.xml b/SimpleDirectoryContainer_EclipsePlugin/plugin.xml similarity index 100% rename from plugin.xml rename to SimpleDirectoryContainer_EclipsePlugin/plugin.xml diff --git a/src/org/container/directory/Activator.java b/SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/Activator.java similarity index 100% rename from src/org/container/directory/Activator.java rename to SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/Activator.java diff --git a/src/org/container/directory/ClasspathExtraAttribute.java b/SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/ClasspathExtraAttribute.java similarity index 100% rename from src/org/container/directory/ClasspathExtraAttribute.java rename to SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/ClasspathExtraAttribute.java diff --git a/src/org/container/directory/ContainerDirFilter.java b/SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/ContainerDirFilter.java similarity index 100% rename from src/org/container/directory/ContainerDirFilter.java rename to SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/ContainerDirFilter.java diff --git a/src/org/container/directory/Logger.java b/SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/Logger.java similarity index 100% rename from src/org/container/directory/Logger.java rename to SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/Logger.java diff --git a/src/org/container/directory/Messages.java b/SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/Messages.java similarity index 100% rename from src/org/container/directory/Messages.java rename to SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/Messages.java diff --git a/src/org/container/directory/SimpleDirContainer.java b/SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/SimpleDirContainer.java similarity index 100% rename from src/org/container/directory/SimpleDirContainer.java rename to SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/SimpleDirContainer.java diff --git a/src/org/container/directory/SimpleDirContainerInitializer.java b/SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/SimpleDirContainerInitializer.java similarity index 100% rename from src/org/container/directory/SimpleDirContainerInitializer.java rename to SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/SimpleDirContainerInitializer.java diff --git a/src/org/container/directory/SimpleDirContainerPage.java b/SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/SimpleDirContainerPage.java similarity index 100% rename from src/org/container/directory/SimpleDirContainerPage.java rename to SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/SimpleDirContainerPage.java diff --git a/src/org/container/directory/messages.properties b/SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/messages.properties similarity index 100% rename from src/org/container/directory/messages.properties rename to SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/messages.properties From 2c9ed1c5b7ab04e8b44fac732f4ccf538adc7ae3 Mon Sep 17 00:00:00 2001 From: dpalic Date: Wed, 21 Jan 2015 18:04:30 +0100 Subject: [PATCH 26/34] added again to ignore --- SimpleDirectoryContainer_EclipsePlugin/.gitignore | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 SimpleDirectoryContainer_EclipsePlugin/.gitignore diff --git a/SimpleDirectoryContainer_EclipsePlugin/.gitignore b/SimpleDirectoryContainer_EclipsePlugin/.gitignore new file mode 100644 index 0000000..4ee5adb --- /dev/null +++ b/SimpleDirectoryContainer_EclipsePlugin/.gitignore @@ -0,0 +1,4 @@ +bin/* +build/* +/bin +/target From a3fc9eb44018ea1e4f9de279c316a1992e4c6705 Mon Sep 17 00:00:00 2001 From: dpalic Date: Wed, 21 Jan 2015 18:15:50 +0100 Subject: [PATCH 27/34] added sorting to the libs --- .../META-INF/MANIFEST.MF | 2 +- .../container/directory/SimpleDirContainer.java | 14 +++++++++++++- .../directory/SimpleDirContainerInitializer.java | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/SimpleDirectoryContainer_EclipsePlugin/META-INF/MANIFEST.MF b/SimpleDirectoryContainer_EclipsePlugin/META-INF/MANIFEST.MF index 8e91087..30b522f 100755 --- a/SimpleDirectoryContainer_EclipsePlugin/META-INF/MANIFEST.MF +++ b/SimpleDirectoryContainer_EclipsePlugin/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Directory Container Bundle-SymbolicName: DirectoryClasspathContainer;singleton:=true -Bundle-Version: 1.1.2 +Bundle-Version: 1.1.3 Bundle-Localization: plugin Require-Bundle: org.eclipse.core.resources, org.eclipse.core.runtime, diff --git a/SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/SimpleDirContainer.java b/SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/SimpleDirContainer.java index ceab7c9..c396875 100755 --- a/SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/SimpleDirContainer.java +++ b/SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/SimpleDirContainer.java @@ -33,6 +33,7 @@ * @author Aaron J Tarter * @author benjchristensen (modified handling of filenames with multiple .'s in * them) + * @author Darko Palic */ public class SimpleDirContainer implements IClasspathContainer { public final static Path ID = new Path("org.container.directory.SIMPLE_DIR_CONTAINER"); @@ -224,6 +225,12 @@ public IClasspathEntry[] getClasspathEntries() { return classpathEntries; } + /** + * TODO: this is a evil hack, should be refactored properly to do only small steps. + * + * @param classpathDirectory the directory of the given classpath folder in eclipse. + * @return the array of the classpath entries in the given folder + */ private IClasspathEntry[] resolveLibsFromDir(File classpathDirectory) { ArrayList entryList = new ArrayList(); // fetch the names of all files that match our filter @@ -231,7 +238,9 @@ private IClasspathEntry[] resolveLibsFromDir(File classpathDirectory) { File resolvedDir = classpathDirectory; if (resolvedDir.isDirectory()) { + // get the files and sort the files to be in correct lexical order in eclipse classpath later File[] libs = resolvedDir.listFiles(_dirFilter); + Arrays.sort(libs); try { for (File lib : libs) { @@ -251,13 +260,16 @@ private IClasspathEntry[] resolveLibsFromDir(File classpathDirectory) { // source // archive if it exists - entryList.add(JavaCore.newLibraryEntry(new Path(lib.getAbsolutePath()), srcPath, new Path("/"))); + IClasspathEntry entry = JavaCore.newLibraryEntry(new Path(lib.getAbsolutePath()), srcPath, new Path("/")); + entryList.add(entry); } } catch (Exception e) { e.printStackTrace(); Logger.log(Logger.ERROR, "getClasspathEntries - ERROR: " + e.getMessage()); } } + + // convert the list to an array and return it IClasspathEntry[] entryArray = new IClasspathEntry[entryList.size()]; diff --git a/SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/SimpleDirContainerInitializer.java b/SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/SimpleDirContainerInitializer.java index 2cbe4da..2e2e1aa 100755 --- a/SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/SimpleDirContainerInitializer.java +++ b/SimpleDirectoryContainer_EclipsePlugin/src/org/container/directory/SimpleDirContainerInitializer.java @@ -32,7 +32,7 @@ public void initialize(IPath containerPath, IJavaProject project) throws CoreExc // if (project.isOpen()) { // container = SimpleDirContainer.lookupExistingContainer(containerPath, project); // } - + if (container == null) { container = new SimpleDirContainer(containerPath, project); if (container.isValid()) { From bfef5053c7bfbd1d447ed678898bd2663cab1c01 Mon Sep 17 00:00:00 2001 From: dpalic Date: Wed, 21 Jan 2015 18:17:03 +0100 Subject: [PATCH 28/34] added deps for updatesite --- .../.project | 17 + .../build.properties | 1 + .../feature.xml | 14248 ++++++++++++++++ ...rectoryClasspathContainer.source_1.1.3.jar | Bin 0 -> 12931 bytes .../DirectoryClasspathContainer_1.1.3.jar | Bin 0 -> 19475 bytes .../.project | 17 + .../site.xml | 4 + 7 files changed, 14287 insertions(+) create mode 100644 SimpleDirectoryContainer_EclipseFeature/.project create mode 100644 SimpleDirectoryContainer_EclipseFeature/build.properties create mode 100644 SimpleDirectoryContainer_EclipseFeature/feature.xml create mode 100644 SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/plugins/DirectoryClasspathContainer.source_1.1.3.jar create mode 100644 SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/plugins/DirectoryClasspathContainer_1.1.3.jar create mode 100644 SimpleDirectoryContainer_EclipseUpdateSite/.project create mode 100644 SimpleDirectoryContainer_EclipseUpdateSite/site.xml diff --git a/SimpleDirectoryContainer_EclipseFeature/.project b/SimpleDirectoryContainer_EclipseFeature/.project new file mode 100644 index 0000000..319d8a3 --- /dev/null +++ b/SimpleDirectoryContainer_EclipseFeature/.project @@ -0,0 +1,17 @@ + + + SimpleDirectoryContainer_EclipseFeature + + + + + + org.eclipse.pde.FeatureBuilder + + + + + + org.eclipse.pde.FeatureNature + + diff --git a/SimpleDirectoryContainer_EclipseFeature/build.properties b/SimpleDirectoryContainer_EclipseFeature/build.properties new file mode 100644 index 0000000..64f93a9 --- /dev/null +++ b/SimpleDirectoryContainer_EclipseFeature/build.properties @@ -0,0 +1 @@ +bin.includes = feature.xml diff --git a/SimpleDirectoryContainer_EclipseFeature/feature.xml b/SimpleDirectoryContainer_EclipseFeature/feature.xml new file mode 100644 index 0000000..f7f5181 --- /dev/null +++ b/SimpleDirectoryContainer_EclipseFeature/feature.xml @@ -0,0 +1,14248 @@ + + + + + [Enter Feature Description here.] + + + + [Enter Copyright Description here.] + + + + [Enter License Description here.] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/plugins/DirectoryClasspathContainer.source_1.1.3.jar b/SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/plugins/DirectoryClasspathContainer.source_1.1.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..2f1dbcbdfcac5005eb57097b7b197c03c76f2658 GIT binary patch literal 12931 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 OA^URx6Vm_o@BaW0swaW~ literal 0 HcmV?d00001 diff --git a/SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/plugins/DirectoryClasspathContainer_1.1.3.jar b/SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/plugins/DirectoryClasspathContainer_1.1.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..9bc1ebe8ca1477ad69aee8a014a5ff542a8ecb20 GIT binary patch literal 19475 zcmb5VV{m5Swk@1=C+UuD+jwKAV<#Qkwr#z!ZQHhO+qTm&Zl7=Oed?Zl>)Tal{hrUN zRdbCwo-u2V`CIZk7!(M|PY@7RK~G_j|LcJS0Rxd1R^+D@ml2`=90LLQ{m;;!AS{1F zOSka1e}IC3z^zeA<@WyD2<6%^^DMVw-LW%?Nqgsx-n;6Fk15!ngA?R?{) z^GfoNo(5Ne;KOi_oaV28*hyI$Le4u@S8v@RfvhL3uKdTNX%Y!{+|yV7X3S{gsbsFP zGsuprp&s@nD{XQ#6?y~#bR0_tPv$J8$j1T!PdqmoX)TY2>XA6;8#T}=NZw9VhemPu zmEWYfc6iR6Oh*q^nY@85`OmCMeQnBla|<2`W1Iwd~f0YdS?v&+{k4bAM03>A)=zb~LOu+(#KD2%s}Mdn8s$}TJvJqJ|>6BYsklaQ0$AIBnY(obU!^u1ZKj6PKD z*wT7@MCeZR(bo0c{c$6RY0^w<%A%`J*P5Q0`7&A0=@eR}M{8Ewn>U{Gk$%z4_S-rhF zE!`#!7HEGSg6}|oAh&aAN}8WD#GoFXuXrzZeanDMOu;z8{Hk{GuPU^i|8d2aq6jNSt1vogr?V=zIE~nFsV2o&{aAP`e2y&lX&t+gV$PV_<6tBPH zxPSd!1k+EVWCkn@qs1%sdw@f^4soeN? zeJ6xAe^B=Etxj0nlTV*+PcJaNzGCVRcngT>w|`O_HWl0=TT)d z-0wyx*KCO<>0=0oX`C5xlSQvOjS(->tKvzOeazAPP`XPqu3Rm798HB?9qsk_9Ubk>^qm}y{(;rZ1dYE~MH&9;e{7@qO^wp( zE@+iJ4&_hJ3?`7YqBXc0qPnMMA3!;vs{jax_sMushU-5;GsO|(wS7Nz8@))`PP1vdwq+#{d8eJ z-<#o7!#~ zt;wvq*mLUjZV4oU3WEm%JEEJs3}GNXg;;Q`S&2T zVV>B0q>g?wR##&+|1gPQh6kRF(uR9Df463jh+FiI3fALxBC-l%Vjn9nQwr|c)P`W$ zH^F`sZ6+E`vN7L58Oo|IbMqv1$8_yM_4+}p$gMatkwCd!;r27z?$g=XMT?S)%td-y zy6HI{>IX@sq~HOCJf-9oM*;v19?Gg-U0d#KD_))Q2wHY+w(k0c*jYC8djS+I9bNc6~yB_wwZ*WQA<*Ch+i^?+O$@&aG3p-XPEJ@cfV|kDe zl44?IiPh@=NqC03&DwSQ#bRnK(Dn(tuQO$bcq%0pvBZm@yO+`vPVh|YCcL(Q2+_Pv z{krO`ywFq?k+FBU;Dp6RPc2ie%c*;EfY@#xcUqkC0_*IdiEezzF8Y=r)U(@ zUTb;}3KBu;#K+pblh3is)W=&lU-oxbY*Ifof$DQq*m2q)MOsN&02_}vC{3G5j4j@F zYY#R{@|dh&2{V-kg@-GsI#`9^^KnC78dYM`Y(@R8RFWY&wd2mVi3p>H#gMalF4|;> z{N+H5y+C4cR&NtGGZ}Y_TZIPdfZQ$5fi9j zaBfA4)F>GiaVFgi5hm%>ZQOyV z#SX@H+IWE&Z(oSpG?xa5fsdo&DOj&1pO zxOY97?y%Zs1!qO}%2Ply{1s*$IdeQjHD zRwU1uF81uEoh+paUl;0&mlY_LsM@c4GNiDwD87^F@#PhFyC2-|11NlMR6>E;5 zXj|zWgTB*%{aFSW83}G%B|XHs2nW^VCW{he5teXlEbBeA-Gs~X`q;%^NnVe2xIYy3 zO^ut={4G$x{ni^1un-G((89xT3|jgR>^F$`rw??_pcTTi+Vj*Gemkq{`a^qe+vDy} z9Y<8C*X3PJvz0yK8&Bq^ij5 zt129FSL4=gW#d_-Lnt#@yy?@FLR6vBKi)jOPV0~W^pCrSJaxJ=Z$=R^$M z#f5BRejtKrThMJiH0WoBKg|=f$no)LjRo@uU4+Af^W#DxTm;vVyYX zxrh4u_r-2Yl)zoB_fv16q7)NPRg#vTFXXm$#H#m;yU@js^V}Vghks(T$A+KQN_X&& z4E}lU)VzE7WnoBgi?Q!s$1|Ia+_oZwPI${?-%XhBoDA8W?}OXf7>T#u<3S%YS@@7p z=MhvB3ZFPL!l@ri&PP(hGrRRVzBE59cDN@HZ9{!aE82;Ys(T! z`B<);eMi-Yw5^AgO*p2VbjxuC0BSJ+0@Q|FVm`e5=sA#}$!}1*jNjm&-?5WI45BVK zge=3~JSBWp#eM<58h!=;LKHF|=x$l83sN39FI?z-=DYB%!5~}u#Q&e%B*qtJxbyd_ z9r%0IlKcm5lCm)|`4=ArDOe~V$zgcIQ9z%&cjq2~kADL!NxDoB{Weg~<+V5 zWF~Ra>Trm%li8C4VCUrjkHsK!Aelqre>UjxeUfZ{rDc) z-{{J;PlE*OExH|{u)9nb#efmbRWpUt`TTyhI~T2vg!LC_#^!WVRx5|TflOma4&2Q zV-wq57D4`W{A9h;HELA$YL5B=t|g!|rKnk6#}{*AP6ci9*lMbUsprOI;w#YJ&%#9Y z-QUe0-)!Yt{!iD=mNLd8RHm?5tOlJ!Zhq+kQDe|23TzO7 z8@UJw)!$T(R2qjL5dsxIYHD2=7Uw!J!|jv&u;2T3uxQ(ZFr@OHCK`6E#$2ay(&CfFa8N~0l)$!4y3U30KD~u ze{s(}w#}VI)j@-c1^x;}<*})FU-qCa$4Py@Px9w}L2(P9SjL*CNIdSvlIQ_En|+vpPQGeLQ!@Fj|4fY| z@ZM{!kFLoS!Gm(tjPG;XX?EK>BCJ(r(BiaVtyyRpHW1E~rR|fojcr4$~oz=LKOU#fU9toMF1o42n*kpfEs5Rs^`E_h!eTYVWszs?1`B+ED_NO{8ewU4JO> zOgXU=IYj;l{y8B5*)02Ii#Opb9;Pr>laulGB0U?dEYd0IVwxPLf@uIBFKG^T(P%kn ze@fCGSJ1g6A2fHP^)^z@}sMCharbS-Ly*(9${az!jdmoV4!m3Rgn z&CNf%#Xa|RRQn0zU^7|58iYpM!ZMB04TB3*PZkePB3U;YZqUkBue#0IOTt*l5ZtAK z9606`5x+y~ywt5t`OW)rZ1o_5Kx%`oR_}){!t(AIc?Kz275Kqy;DKSS zkWQ))Od2po3hi;|-=qZm20oJA-x9(4TOw@#yAn}w)N^$DCv#>hX#H2;&ePwt>8u7C zo+R5Xx9*Q}uwMvE*{hEQO;Tkw_sra2fm^pZc$rl2Nkt3)Uwykz!tInQXf4^ARg=q9 zrpI)K$J12vb@miUg|5~xLVw*c8zaj!Y>TZGp8|T97BqKve67&^Ol>x#&-wCE2I@`D z<{Y9v2FH#l_r7g&EM?0jS%8|OFhL9P7IbrOjr^<47L8!bNsq zYpc{P7#H|($ocdLAHu6~u}?J?bt(SBej7RC!A^9xRF8^}AmE0H->XKfgB&-xXHsS1&CAq%z}Sb{fT4`} zt;<-^qj&&KSQ&0tj&(+)r_`?{r8b=MB1R(EBK!rRMpVE*y5Dp+mV700Jz|7JRd{y# zvWmRXDi-k@#9h2d{k(;`G5*e@Wm{6G_|?!oFFf@On$}BsQe2vAZGsYy#icaM^|#A!AOC4uaLd?SPgRUD`>h2i%X&w&j04HLA7{N68> zl3KH3j&4>dS!q>?x~^W?w9pvBh)}9%A!%`$r?t4Y*&VJ`v6j@N{<3|&kv>Y2`s;+4 zd!yClqv=Uws@3!DaySZveH^`J2RUJI?^3C<)|3$?iu1Ot$#%m`dT6h`OubKoi)bp( zwxh{o#$SiQ)4|lEgbFFFNriU3Ce?xV08+vUy_f~*N{n48eLZdiaHY7oEFuspBuddr z*%{oU(k*5yB6#$TiDL^>8raOKG|u6bMKIH0xf=E-{45<@7?y`wBktC=A#-1_#fS(q zj7%knC{qSR5KNwOL~HwqM7`D1OO(6l0+Ni)(8QXOP3uY~tr$8{mfu!)>WpXU{k)X4 z_jhuoZH2iV`(6rdM&@W>&I;~{6p&a+QXo{CHVSFP2C`XHaCEALIAzIa=>1cG?x1Y9 za+9heyl#2-aefJw;J4M$f>v4n(v<5)D49lF!FZwx3(VGvNn3b}q+ggMV!U}LpffNE z*u;4iqHf8{5eAHh2InZ8SCNx#tYsbUGweMjZ*T@t07K1SB%WN0V76dVKf_LDTcAW* zTBfs5ms8kQT-NjzPchC%nFn{f=gA|Md@HwoE%W?2W~KV`Cy>SVx@f8rJL5TQ1{jh* z6V?bMDi^q|Y3iIBEF|ymAwXd9QUbMSP)LP2GGLu*vQ5%mqQveQ;=rJU2`nBDVwD*N^J?!I`iXM79>faNa|PW- zTP^9=U(4GRFWPM>@lfF(=gM2#iYmsTsg;YEPY5Vvr4tFz6|&fXB+V3#fVj04WyA@G zQtl2|V3I4sVP3@u`*x_?8tKB{ue>2XK(w9-ya5jExmunR!D1aJJsNwz5@f20SJcS) z*FqI3u_{wj*`McABMVjVwNgrbRk5Qwn7f`>)3D`EO9W5ok)4@d@2M6{hL)=)ud7B= zo343>IjL}6N7&2Oi4wBrOnxJNABev)?(Y>DqSv=`Yc`yhsE^Ib<=n57@fYG2fvSZ} zrwvTyg#c_0p$UNn6%>FD3a=Mb6ugQd3kL_K==O!0tgRG*T~y}M%1lD^l`);3=mUdE zI5ENE0YS+3!e;o_GiqFx7hs*$>{phNRwe^c&y8 zV?&Fs^u#`lNACVR4RbV~a=z5J-jN*mzs);e#?k7XKCQ9w2ZAY5>zOisv!*I6sXy1~ zI&Pz)I|ES*Ks9CG+I(S$SRv;1$WtJ^Y%SPhcf!teL8}Ity*vkoq@O8H135V}Ow)51 zHLy;X4`(ybdxlFeNRK&WejIl&uodD-lgB8Na)1-$RFaYe+CQw}ojT}1<<6`!CF0>T_7IuxqsWWs>QLX23 zpVpq^u2eB(48h*^CP-rFbc&MUSdYvW+}7C6V97`P}*F zJ6-(>^bUE06&gC6GQ@dWdNPXzf)^gWx+_0})2}U*?@nAAxC)djG+$&pAIB1H4$ zHBxH=9d9V#VjWm0AsDfAkAmf!1jwNJFZBBR1o13c-Ei$YMw?IkecfrjYBD_dOLJWT z>YnkG(%gG^*3S?XSMG=!6{bAM*zcKj7@QtP)8F1PeHw3)uN>Uq5tSjT_iPkxh|pxs zIaQNEJ)aJ)3Imp{I&zg~Z}yE#eHcP3((TkhqjtB^J{Qktu3sY}zjmaTvO}Z9Ruq-g zI?S~m1$Mewx0LPs#j4s90L8z`&=`pcc&{{4Lz?Gmqe8cnG)IXY?23u?`)=~2)TO|0 z(VQ|(Evn`7RK7q^M;m+(;`LF9Lr~WA#}OD&ot$g5ql5R_rQnb}pBLV*d@%4S7XFL_ z>Bku~fa5>a$rqNEj(gUv<{H7}X^3e#DzROR8-~9dq4+1%2bhbcMRXC#G}qKXe1$Ev z9@&#QJKM4=pUkL#SD*Vm<>W7P zb0_yMkDt3xm$bX?SXE2{&W5y!7g}n7qld!)Qi@Kdy7JX}rp0Bnt(Mu)@_6W@$5cL3 z@Kz)D>hN!{LFmDMm~(8ZX73&21T3W3b5+aMQyudlWv-`?GkEf@PrYfsM>ed~3Ba2P zPH0nQ!kvv!X(*TT9Rn1Dh#(^+RLmAMEXFxo6H>^kM_*0T>m4xR>%8$6&YYg@HI|^G z_g+G$U?Hz}Smb5xR;|el10rKF3eVRp?U*0X$P8d>ab-GK2Z(_Uk}F71?0MUn1+?jj z?Y=GtIeaf{X$nO?2AOTZEEjYa5u!4JtRJMtlEIewynj;GE;8|yZyY^##RE=sqsHQD zNK1o3@p#UfoJm|trPi%h3At9AwXXe?q!sFe1}!Of)LY|%`F2O0J2p&iyaogxQ^Fur{z{=&7K|k+hxV0Fi^-m2jr0mq{+MsGyyQAb^{B?YZ z$Kg!2pZg%8@%S_Pv>$z$ZJ|`mNt%}WESW_vP3`;E1Z)i|sz;`1=MhDW z>`&S2LVJ_PH0t$GokS)neA1*1hdX)}GdRalO!L*wCQtDzBf7#&b90Mxb@e5-YRli) z(s&~xER_}g$dj2x0$vhV&4-|FF*_#jGAfIB&wNgEGYmh8ihUCs100ct+^$86xngSR z9O;uWc36$cKsqxRbppQ;#@Q*H*8sJ}m|J-bJ}5D=|oi_9t{}us)S`IsWu{)S;lzG z#+MH$UklTX&e!ub^IC0uZA55Pu9Bu>f`#}(Qyu0-bRCyn_*Zw_>X>&TqXzUfIJwRq z^y9&pShpXiHgnNl3AET9-(Z2VBx0s3g6| zd9Ry{BB zehx4Lb}lsyDkeh7DTLCq~2WC(|(m3Tgu7eO`K*K`qzp3-EdTSFm4`A`sFHM(noN0=}8a6+FLYd}Jil@%>K z1xHWP2R6S0o?p;a)twQPjNSm}AV&$fLmMoXD)>GAb$8#{yDRoU%*V#4;qsbFEABw( z_TC5=@P8SosjcR>oDd}8{(@GiJ~+c$V~RLgw*9()ZVL3jEF!=s*^G`0NFSZ1O$pGj zBeWLedBpe})3mmQT*9bL(x*)%IkLiCJlY=r9gc3Vl)a1XD~8);)p8g2a*-z&tR8_^?l+*AExs$nHFYsD>Om+tY5Bd!uJP573+3+^NT&zqN9@uK5vk{>A^_>I0 zzzEws=8?S=hfpS)!E^meJ^I>XLQ@W*9_xmN$v^MVen*1n?2~6@X!H1DSWxHJ8zJ{b zP=G(s{&5lG!+F;ZAIq$-n&nbd4QiV+u(Vc8_I#k{m=a%c@gIDW9ttnd&RkZx}8|od?low?3 z{;}d`bz};3sj9?IC`ZzfXJ~#zb&B}?yZ=$C0Ef4@;Gu0af%l-3_Z0(HcdreHENVRb zHbB#O_hmNYla9Il>{d(k56t0BdhqRCTEMfGfty01+-G>=ffqkix5^9rt}N*%%c38# zLq!IMn}?mGxUS*W#o0#O28uTIs|VCq#T5PSHt}cE>LNJACXUPsK^gdQ#VQxj4oZ-5z;3Z^OFrZUa*#@Rhpio_{7IDagUIsOICReNDX zEm`(LvpBd3dQ335{OGKJC&(gWfXC^wsAQQTSt*a8%SYtI-rDkSg8ES0?ue=j5DS(1$jBMkDI1aR^)L3y&hcig$QBmt|fMnQL zf6neaePh-#l*U=3G{^m75Zq{MCGtnUq4USp<_fcWD1dqZj#ghx4N-kMrdJ!$oI;e zC9d_uk@~FY52w7_ZjkT;A~k)aQ|{8@D2Egi<8k@N)-^mMn(}(OqjWB30Eb-XJZ|)S zt`fE4fTtwcEo2?}+^_vMxw^6NxYmS9I~~scLo@Qqbz~?9o+}|N%GCCjK8=fez8MoE zry&U)chd7C8pG*p$tG6nRU;Vn4|JUcm)p6D@Z|CKjzRo^HI~IdirvZbfwlIc5E*iat#>1NNV7igS2s zv>FkjG6SZeDQAO{R1UH98nZjKPm<1NxihL+sVAvb>0?oQnngi%bfK>^q*8Cq24z4Z zqK5chQ&%Mk=R)#=1D*(pNRL>JRn^(}p<(lmWN8e-bU-2wEgAhE5}#T}LxNhlEek02 zu2d4*3K9E)DO>3bHydIGovj}q-GNl2iozN^@7CJJ7kouBl$*Fik3IHk70({5}cOFE$`G;aX0xCFZpOLE#StSu#%s~{|w35 z6y@V3$yTh=XG@J1Q^SqnR`}XW-nAXjIUR4%y>#r@wYIP6S1*$4FvxW2bgAke;>5j` zeJAzvGSgudj&_vayR0$#0UV{vpuQdgzr$l5Rcg_!8X`NR66evBF13!?6bVmmlgHdV z%}zfcRA4w?Pma9uY>|7!+{_GLEF!s^S4uz7Ta|^@j7q%=;g--K1t`Ofh?Y)an}SAm z_&Fvx9T&6f{K5C_2+}Lt_vD}m=4S5{lTi1iO&qFAaKvp5IHdD&Fm@T$>rFfBAa<~K zIC_54w-?_M`?@F^qkAdyjk-Ba;I91vZt0^n)3Q!a{6Xw+&G{)0kwkVfb*E>3%qh}# z4v@Caakd^1=%SBJXDZiz5ph|h7Cm$}h0)&2HO2baO~0ds7tZj>h)Dk?YprC)?92lj zLEd&3Ge2J~_S(d~Pk2gkN@1^4m~j|Y3HcEb9DL$-QFZOP1 zyAvP5Ls8}h&29Hgo!sC_k(MeU=eag`;Von&r7t)*9=yZ;J{zlE(W;S9ueo2Ql@z|5 z9J)-jtN49+`&MnKe2MP5_YQx~sb5>Mns@P!_F(OF$sMBm8+Df45+emauVns)c!_6L zO=o(PH#~BGC%f!bzTMTZgc|}JVJZoR3j&aBynjV<=W_pz*xonM0xDQlqVpHVM^<-r z%?CP11|oqrOH7cP!}q{wrZZDRd_ULjcePIe@1i~8JC*NNESHAQ+ai(Tvr^)-4pH^b z6Q^)+dCp!&aEP^dDy}P?z;rVhT6za~wn)?}#Or~Tunao4#bBcKmHe7K4*_`gM5=@G zg0i?nK0-@%i^;kM|!8sqg4+daLa7j*KQyc~>i*LCKs$68RQY%Pic9_o_$2 z>tR`jhEpha(rdeB5rk46rqR;#cHHG!{&y2^>0$9CD%Hd(D*+y+Sa(GFMHs|eXny(|B2=i0;Fz z%{j!a%^c12EX~~i<)o-o-u^FV*QfQ*RRnZ1NHFT8Z?w!Y1?82EiwkQ>DCw+VmJ}?C zmFbf#G=Udwe4KkedjZp3&pEsx#QD`z&ukn~$Hx6g_uuo7Q&v5$w;Z~!Gp;in*nB=e z&aXkNbwveycZ>9tP$o+_%Cz^BH2(urg{r23;IFdYY^39w_OMk8pHQmmQE95p8vK*AUWJkG4cUl>(IJ4_K(O6lG6fInGGTFkNm4 z1y=wa(!g3*(O}*_FUTj1qBgT+CMs0xQCDA5s{Jzl-?gqy@z*f@yuK8e5+iED!dPkA zmkgR$xjh)bhWG-~uYN5-(O~GPvdfARLAJaiSw@$os8Zxlsv(s?;iedt|9?IIQqy4zr6odCS zGRu6Htu4`2b8J!CmC)pq1V+X!)|IJfg|q$1pZ!9~R^RE%r^Uo^>=flLPIj`hn#g(; zJW7j!VajPo+M^d>dc_o$4ONDUj2P-2{2u62B<>6IdmF;&g~fd=3pBEySw2-SuwrVK zTde%vDTSC5vEUYQy!i9i(a%|ZA~)Y#Pjh_aZ9PWBci8wrKSRHv@IgOCKis`J_!J!O zKFwQnO&*~$5H_SYR~vkMoV}_W!KVc;gmH;z58UZ_9z? zAIdP;5tzy#FN#?10b^?YT1dbFG0<}$CR$AEN)n+W7@dr~v`xE7zsoX?;KBgtHBm!v zi$S%R9+R^m{H+o-Yoc()bvj6T+&Dpie3E>gB;kLY=%>({6TS z0@>w@{|@>|VdqTmEr;k}+sssdKf!cA;q`U<2iwa>Hhpq^|7=uIft+Y^|zv;`2mFsa`rr?+4UWs5{!ySH^t#dJgVx=_e1q| zsfEnQQ%Hkss>*jJzmH3`UU(TWEL?>-B(NzH_TV6td)28JU142sE|LmojxSSgZqhg9 zEM=0KC6=HHnF6KWYzS;UFh5bI$CXc$>UZG(m5=;)sV-U#EG@V)n@(GBtSr_4hJv3uG7j?ysK3Ee?00N#knMM_!s znD*%F__5wYhuan?6RJa4=T2JOWoq%%)*#(@yzyj=0Rb_3 zz0B9w?r_a~4ZxFxty zwy@YNJqB!nP;?~(4H>*T>x9EnE6R-gzbmaS)2kyKpPDaEuZR|e;V_mlb6a9DV4OH8 zsR1hjDT5PD1|%7H#96G=4B+Q8pMHhpRtN}AnTZv3&d$sskt|BNzLJuD+)B` z&OXfLavJ`J>8yH#TSOHa_u@9XS7VM`k`(XU z*EiyvacZ6IQ+rnu zGmR*U- zy-D|~KDRnG%Jj`7WVY`V!U27&rX-FmQV=~TT=9TR#!Exa!SEY~@xQ9mbPP++NFB?A zir-W|B^uoROCm^#qcD)JXSf`7NtZTvjWv^|8hDJUa5BF_Omj?KF$^AvWsE4d*VIB; z^@rslwBDTPB5~^B#y9nh6=JW*mkX0+k4I!IZhNa}8nX@~u$;I!c^xOicVLKdZ%Ger zewN|;`!vEy)i^7qV!ntn{qK@NOPMxA6}UIbG?~JQ!1(c8wb=wS_M(y$i6O{imI)A@ zNFMJ7c@__zw1NNm<(MVT{A38>*GMj(h636f~a zcW3rN)IH#oF=FsG(nIt8kWF!Yd83I?JS&qwk4D-nGGqoD?Zq2vJ2hF0X7d+qBS0Q? zt4-|^K`3cdE&6$byfyo^r#2}Hz)vJ}Ls zg^LdHs!6Vk?IK5KUcIL@Nb|l7;EArU4LDz^_APP!hAzlupU1KWG2AKD&UjZIyVmjw zQtGjPY;>2cdSBfjm<;h;q7ma-!L>VzUQlv)IT{{eD(mVNX2*J23turM-0e<5^r)oI z3n`U~o{?rYslWfC15r={ubC#`_R~yfPP{NE+(}InCB4dOCapQ-S=C27yVj8NRvsc{ zusZ0eS}#91LP*MkxBGTwusYvr=$*ayPyNbA)Cm~rvfl%6`OUZaTd?O}H*&H#^sk~Hwy9fIVc0*Q$;`-qcXI0K<(c<=YX zw~4+o#Gd@;R(w8UFq5ntsO}zmt)1rLeY@t;jm;ZRtwWf$D9SOcc3;BOC@!UESnuOu z8)&=}N^r_|yy#ZhwDQflZ&FgZSuK0;P(B05fo`{kce?Hcmk28G%0%!p%bz|I8Ljmi zRJSJYi_zT(0)s6>>2-oKV=EUm#}IQ-r8jKvnE_jPQ4OOr3rnkuxLd2E@RMnIP$-Cn zo%gaqSc^=18coP44w{l_XPcKx+g$hgdW z-_zg2s7mI%j$Dj1j!_l-m(sOe^{4tu!^%vPvK4#5bOJTy8V`Vm)i9WMV#>RGishzF zrW(5>^@Y2LY565tQ#&XT>7o3!S;6f!I1>uY*=S-0>3B6Ptqm!=l*A}8YQJ77OHDw> zoiCg8g++>Z`7#w|w53A==n@)Y&?G^1sLSY;8lLs7_YB;F3m$0Sz)r!%YU7=t@d#deegN#d&+~{n~Hr3s3cA|1L zVSdi^ZOXM0(|GG0)%+$!2{@e`(|T@JMxQ%nMwUAYs<*#Q3MA#oFAZnlRpWxurTGd>G8s@U3*tu_?E-;) zGI=XvRLZqzMtdourxLhg)k;Ka2Es-2abhs;-mbz>fr}Qof&0cjNaz`#{8f%j6cM?Hi%=eO= z(l(?yB&Az0#czXOWpeq;jVYDg-1w*T(?qZ1(oLUJ!{0s*TQj;FX###&e|o@ut-<0O z7O7)!1BHicGKOl1#PWaMT_3>+@asUFTCAt2tc#CCTmV@6uwtNu}10})VQG}M}=1`iDIkXh&0*6qcyIOJ_(JQGp$RwHwIPG z?*373Xxo!CUtv1*+;7?uZ}`KS7^SyP;hZ5<-~yA0JNYSh0p*RuwUS}|k~NUEwW`Pk z?1HIEiY$VOfSJgt7}j;$ZuvBh;f8EiNupufY`w#%8sCBFIu+^UXzybKqDSwM#hz8S zud1jIVbgaGH21KjFGcR5N;%GdbKWaAM8xSYXL6-=*e+_dpdPw;mFw_Zwm|@OvMFnC zZCD^jVsx#)!0XpwbZz(W_MpG-CJt~pvTzh%^{+EUSk9g!Jes0=WrGwiX{b=4fRUG4KVGf+M10n)5UxNfuP!foF&t4tv!EnQS5 z)emR)c0XJ$KC{igG_axPU7#G*QOouo5BtdEPDP8#>cL&Vr>}a>X&v+kSrf){PwcG1 z%(ggasd}+iXBb=L$R6p+4yelpvR@U!ygLWx-Co}cbf}8@jX{!A5crt? z#4KAUVCSY5bbt={gr$4ho`8PUmwn_`oJ-Y&U_Y7r?$(@gLCU{Z7vE6RY!-p$greOX zI2?}L&;ce2P4^1<?>gKl5SJVyi|^vZHQ=9Q&)pN=qSv&Ts#l%nCr4kOT&+|fdpfG zk_TuzfGgPnti|L?N=8Er1{pLQ!nvuGvP|Dt1@1QpBEJkR+TFj3M?EUMhw)9Sy}_UX zrsxb&>4r)>T$^0a+$0w1O$wc753}UGvZl|~im6GKSy@A!hfCY@-MG`%T!#cPU*tp+ z-J+_V3X<)#TcfHBeq85jyV;dSKe|6TdPG$rivCEKnNb?RMD^6o^C`{JbAc!`)6Vj- zu>Y*g^+vmRP4-foWYZ$%jN|`~1r@l?LiqV_3#mNxE%y?Cn{~gxZf)xS(2`mGYo*23 z-p1C*-qFm+!AZVXqW>2{=P@;edx?J_>w+Y~4=V=*p+J<*2gc3J2I}-phW1+J+wDyf z(nxt(!L6wdHydrT)|oPAu*Adx2r7FxmxEuXj&x}#C%HLTahMbF%&pS#;57I8xV|q$ zZ6+SJ34chV_D#(qMU6tTYw|1$Qv#bk13{y|B{7+t^Z4Opl@GbCAQ7|}djPEj05yQ z*HT6Mfp}=YZcyHYb=b+y0+z zFf5APwARUJ@$rXS?k@Yks4e_!r_SzqTR;8!^#23evSXg_H|DJZMui(NS_FY~K~8CU zW}Y4*;ClnSxeht-+!f#Bd|+)Avw7IjspTH&aW5ULj8lR(Y%dSdY0|r+S~-7Dif?3a zTa?2>JB}6pUb%U}CVYZbyFSifUH#0!RsTj@CCl5F5+dg&ox8#{ebP;~D3jG`n)_ec zdpuXz7LXmhxaCF4rw>=orZE3AvRJeutAJDPd@z@0mBym#p9VWsS66$Rhg?c_ZWR@o zeDOqK(nPBd{S4n)?3cuNI4zIatT5}^@we|#yZ;fJ-i4O{Jyi)DF$bPA0`pi!ZqC{% zzWL1tJZv5>z*6V0QS*EjZ?e0pmiSvHM>bk*3!|FK`OiJKuX<>o4s7fciFzVrfAB)P zT6_7m^`S-VkE1+I>U7+g4`ppmUVriP7tI)!i#di>GtbB`_Ow`h{NU76Gb?f2 zOJc8PXrAVf`=hP(OQGh5=2KJD3&h-Ce#n;*@jtlSQP?4B>i&zXX8llIro3>z<=UTZ z?Lt8TWj&X69knsg+N`VnxbW=WoLfn;4@>>3gz|TK9&js6_YKywi<$q>Y;xW~>qU+q z%Q^LK%wqCepZ#rd+JPncTvt04#o3IbYo{MP_tfFw(mR47PGW`=OwEs6Y?!0d>(?2Z z=yz+`-07PcGPl19S&)8B_KMZ>H@vs%kBSF)Gct)V<38^N7(qZF!0^@)M8l7Cft>yV z(+b(uj(+|NNCOBgX#^E1aIHwE!5~`>Iza}k97+IF2NZxTPXQ(v$gwCeJ28(=0UeA2 z0U#Z1P#ws}q~O*IIw%F9cN2zQh~aNhFw$yd4VN67>Bk z2uqm6NwEYnu!?Rv`rIbMbQN7vOvjk%M7Iciz5rp7C2)Hs@nMBLdw^~S`p7fFj$q(G zG--BV4=(hE6vBpQj<{{W(yT&vI(l;eVQ{50ybeV)4$!ruSGox8K`wCZz$!Svo0SbD OCk%xAK-N2OnG68ZhIcOj literal 0 HcmV?d00001 diff --git a/SimpleDirectoryContainer_EclipseUpdateSite/.project b/SimpleDirectoryContainer_EclipseUpdateSite/.project new file mode 100644 index 0000000..9523eb5 --- /dev/null +++ b/SimpleDirectoryContainer_EclipseUpdateSite/.project @@ -0,0 +1,17 @@ + + + SimpleDirectoryContainer_EclipseUpdateSite + + + + + + org.eclipse.pde.UpdateSiteBuilder + + + + + + org.eclipse.pde.UpdateSiteNature + + diff --git a/SimpleDirectoryContainer_EclipseUpdateSite/site.xml b/SimpleDirectoryContainer_EclipseUpdateSite/site.xml new file mode 100644 index 0000000..3f499d2 --- /dev/null +++ b/SimpleDirectoryContainer_EclipseUpdateSite/site.xml @@ -0,0 +1,4 @@ + + + + From 778dcd021ef944cea9acf2b7468f06f0ee54266b Mon Sep 17 00:00:00 2001 From: dpalic Date: Wed, 21 Jan 2015 18:42:01 +0100 Subject: [PATCH 29/34] added ignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 4ee5adb..27012af 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,6 @@ bin/* build/* /bin /target +.metadata/* +.recommenders/* +RemoteSystemsTempFiles/* From 436458eb8fdb9581430ae6e5118c38606835f803 Mon Sep 17 00:00:00 2001 From: dpalic Date: Wed, 21 Jan 2015 18:42:22 +0100 Subject: [PATCH 30/34] reduced dependencies --- .../feature.xml | 14225 +--------------- 1 file changed, 2 insertions(+), 14223 deletions(-) diff --git a/SimpleDirectoryContainer_EclipseFeature/feature.xml b/SimpleDirectoryContainer_EclipseFeature/feature.xml index f7f5181..b1269e2 100644 --- a/SimpleDirectoryContainer_EclipseFeature/feature.xml +++ b/SimpleDirectoryContainer_EclipseFeature/feature.xml @@ -2,7 +2,7 @@ @@ -18,14228 +18,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Date: Wed, 21 Jan 2015 18:43:03 +0100 Subject: [PATCH 31/34] created updatesite --- .../artifacts.jar | Bin 0 -> 624 bytes .../content.jar | Bin 0 -> 1271 bytes ...tainer_EclipseFeature_1.0.0.201501211826.jar | Bin 0 -> 444 bytes .../DirectoryClasspathContainer_1.1.3.jar | Bin 0 -> 19766 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 SimpleDirectoryContainer_EclipseUpdateSite/artifacts.jar create mode 100644 SimpleDirectoryContainer_EclipseUpdateSite/content.jar create mode 100644 SimpleDirectoryContainer_EclipseUpdateSite/features/SimpleDirectoryContainer_EclipseFeature_1.0.0.201501211826.jar create mode 100644 SimpleDirectoryContainer_EclipseUpdateSite/plugins/DirectoryClasspathContainer_1.1.3.jar diff --git a/SimpleDirectoryContainer_EclipseUpdateSite/artifacts.jar b/SimpleDirectoryContainer_EclipseUpdateSite/artifacts.jar new file mode 100644 index 0000000000000000000000000000000000000000..8946b47a2609dababe3f029e4e57bf39f55fa3f9 GIT binary patch literal 624 zcmWIWW@Zs#;Nak32%c=}#()HP8CVz+i%K%n5|c}c^(u06{+(iAm>Y7i=(2&p-sjpS zCl-8b$lZC+qIt4RLmflzdD*M?T2fOyJ&a7wKDj?}?ujx@&eo5fyKmLz-?v*GVSBCV z4?}X`N!HXrC(aW=p&I7gRpr%x&6clzx+J3Talu*d@2p!ky_j;dZ}qKR-)2c}nsohv z^@}cR1@jjTLffy}Ejgps6trNQz`^fqORIWHq*xm=UI<36+1kK3sn6hLk(0;5-b)X( z4+?er@2kFbwB1MHk)X`A1ljdl^AEc|ZqAvu$tF3+&i~V#W9r)8q1nvWoUTr{x_n^a zq7HVUyE~snRsUpKy!yZi6Q&bVt<0Mji09i(%10LJbkMw>rwu?zW-i)T~ecJxtvj* zldM?5Hh=D$<}=QwIbVD)m#gf!Zu2YNX*MTJIj-Kjbf@;M=;HJ8Evx^BEUjms=Rf(( z=KAXmXYZ%qd>ty`XBT_qu=AEVf0zQi**X4Pn)B`sBLjm5D+5D-HzSh>10r!C%YhOH XD!@o80p6@^ASH}IXb+^NnLs=MJ@E`Q literal 0 HcmV?d00001 diff --git a/SimpleDirectoryContainer_EclipseUpdateSite/content.jar b/SimpleDirectoryContainer_EclipseUpdateSite/content.jar new file mode 100644 index 0000000000000000000000000000000000000000..b427170b00c9ff1e62aceec8d95d58be0224000e GIT binary patch literal 1271 zcmWIWW@Zs#;Nak32%c=}#()I48CV#S^Ycnl^Gft8a&!KjVqkb1c|ZTQnLyq7c*leT zTbQ=ySQge@_1mDT8L;5B^X7M{99&_GQkR*W3`|LSzFuClTSV7;+f$2Nc9Y5u=TGnU z?N;7zed+M&n^PLtRgBKO(C9c6#~{!f*_3I;W%u{%wqmK6I2j)O6&wt);4A4wvxx8+W06JmqRVo`lC&l+n9#CEKFT|B zrB2QHB#(bFjRF-CP2J24Z7~LYEk`t%CF?F-`}MQJGPyC+S;#+7?ctPc(+L{360%QmGCK0cLr8`-CCh#4(`}s|amq2>9lB)gt zGI@Des8kE*DYgevd#}nS=SpPG-hJ5X-IPrpu^_iW~=%a7cS&3KU;_2|!9 zHsNKn(m6KX*fcS*JKXR2rY^-R(uq9D$0aAuud?P$V%p5pZz%No@P(%2ZG276FWOXs zKeia3eZ2Ev+m+2aN6%V*n-Y^fYyIbYEI})7$jsmMLT5cg{KXm(o5XXb{=d5!3_gBe zx@+Ey^mFohwQuzvmpo=U-jTM#Ecd8P0F(J9-;HV)x=$Q)-Dl4lyiY%8jnUHQfr{}~ z$$`5k&iJ_Vz)P2Ptgpk?wnyt}Gm00ipEK9(z~P{M8na`A%~z{_k?LKjR8;!A%xdoB z$%hYKefS{7prX8J^D?urpIdWt|F|UAz6ny>vMt45bi)U3ky+0Z&afl|wZ9OYz4ys% zmTA#t8**n@Y;nu7n&tY${Q8O)H%+sC`>b1>l33DR6>;>=>1pRe43_TpV$95vni*gT!>c23s!KU5ItZFV}^y;x>_vFduJ z35sjQz0V%BJ853_V)s0ocAhC6x8^tMcd59kK=hyEa7~6h54xeH5_t^d$SvkW<-&y>x{F)#}{`q6Dw1n&}l zgS1~?vP*qBBZ4>DO01suZcTJxaqivq&wjf+yY+p2=tJArS7M*fOEhy{v+$v8RPp_) zXr+Jix7`W$_$ZOO=~Bu6iS7%Ft>@Pz?t1-aL2x18wU)=eZJAyZQoh*iH~9PO^qcSI zt&{eP^UZCx3HY7+^fmX3KHCGkq(uw(UP&9M#D%{Pzn5+%zfCQCZGQX$cKi9gbtlpn zm;K#)xBve7o%M~vR~BvgKEIax#wylxKQk^e-OttY)&G=s{nM?DN1k52uJifwFW2me z6IN-3`%V6Pr?_t4j+)!z(~qk6-db|Dj=8w-gM5HDJICR_+jgb1FfcetF)##pGct)V eAWA7@IZ!Eu3ed`|0B=?{kOD>^v<1>j!0G`uCr1ka literal 0 HcmV?d00001 diff --git a/SimpleDirectoryContainer_EclipseUpdateSite/features/SimpleDirectoryContainer_EclipseFeature_1.0.0.201501211826.jar b/SimpleDirectoryContainer_EclipseUpdateSite/features/SimpleDirectoryContainer_EclipseFeature_1.0.0.201501211826.jar new file mode 100644 index 0000000000000000000000000000000000000000..6dbac9c5c558e2f85d6bd2a96b798c38737c1085 GIT binary patch literal 444 zcmWIWW@Zs#;Nak32%2o_#()I4f$X%@#FEmYRK1GaoT-ye`yDnAaQ*(X>%?yx!4*!P zyI&+9<%>{k=`qfAv)Gnu?R)zA<85kNwW2uFpYJ@LzG!CFw$~MVSaSoqW{G6_B?`mfmbd9{RO`` z|J)C`G2{2CJv+{KZ_-eEdN|)DbLUaE5~U1w)5J~Q!Trl*0`;GqaFE!s^7BmZo0Hwwue5pQ+Vx#pQt}l8TUz`HJg-$ko`fj?>_1LLDedoH_2Y9n{X#PI7 u*o2XR;WiTkLx49UlL!MMxRK>R!Ho)#0zbf;l?^1x2!xhEIu~dl0|NkgB&wqT literal 0 HcmV?d00001 diff --git a/SimpleDirectoryContainer_EclipseUpdateSite/plugins/DirectoryClasspathContainer_1.1.3.jar b/SimpleDirectoryContainer_EclipseUpdateSite/plugins/DirectoryClasspathContainer_1.1.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..8b8ab5ae61fb4896c4115a62f78ae666cd6a8b19 GIT binary patch literal 19766 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 Date: Wed, 21 Jan 2015 18:43:13 +0100 Subject: [PATCH 32/34] created updatesite --- SimpleDirectoryContainer_EclipseUpdateSite/site.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SimpleDirectoryContainer_EclipseUpdateSite/site.xml b/SimpleDirectoryContainer_EclipseUpdateSite/site.xml index 3f499d2..c5dea6f 100644 --- a/SimpleDirectoryContainer_EclipseUpdateSite/site.xml +++ b/SimpleDirectoryContainer_EclipseUpdateSite/site.xml @@ -1,4 +1,4 @@ - + From ef51daba24f04254fc4e2ba2bb424a1ad308c4db Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 23 Feb 2015 05:42:31 +0100 Subject: [PATCH 33/34] moved to proper place --- .../DirectoryClasspathContainer.source_1.1.3.jar | Bin .../DirectoryClasspathContainer_1.1.3.jar | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/{plugins => }/DirectoryClasspathContainer.source_1.1.3.jar (100%) rename SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/{plugins => }/DirectoryClasspathContainer_1.1.3.jar (100%) diff --git a/SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/plugins/DirectoryClasspathContainer.source_1.1.3.jar b/SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/DirectoryClasspathContainer.source_1.1.3.jar similarity index 100% rename from SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/plugins/DirectoryClasspathContainer.source_1.1.3.jar rename to SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/DirectoryClasspathContainer.source_1.1.3.jar diff --git a/SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/plugins/DirectoryClasspathContainer_1.1.3.jar b/SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/DirectoryClasspathContainer_1.1.3.jar similarity index 100% rename from SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/plugins/DirectoryClasspathContainer_1.1.3.jar rename to SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/DirectoryClasspathContainer_1.1.3.jar From 8c983a5bad255cf4a0bcd4ed10e0b611da1ec820 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 23 Feb 2015 05:46:08 +0100 Subject: [PATCH 34/34] updated links --- README | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README b/README index c41dd70..62c62fe 100644 --- a/README +++ b/README @@ -16,10 +16,10 @@ The binary in downloads on GitHub just needs to be dropped into the eclipse /plu then allow adding a "Directory Container" library to the Java Build Path. You can find the latest verion here: -https://github.com/dpalic/SimpleDirectoryContainer_EclipsePlugin/tree/master/ExportedPlugin +https://github.com/dpalic/SimpleDirectoryContainer_EclipsePlugin/tree/master/SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin or directly (but maybe outdated): -https://github.com/dpalic/SimpleDirectoryContainer_EclipsePlugin/raw/master/ExportedPlugin/DirectoryClasspathContainer_1.1.2.jar +https://github.com/dpalic/SimpleDirectoryContainer_EclipsePlugin/tree/master/SimpleDirectoryContainer_EclipsePlugin/ExportedPlugin/DirectoryClasspathContainer_1.1.3.jar I created this jar by exporting a "Deployable plug-ins and fragments" from Eclipse at the project level.