Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 389036
Collapse All | Expand All

(-)a/plugins/org.eclipse.php.core/plugin.xml (-5 / +17 lines)
Lines 361-379 Link Here
361
      </project-facet-version>
361
      </project-facet-version>
362
      
362
      
363
      <action facet="php.core.component" version="1" type="install">
363
      <action facet="php.core.component" version="1" type="install">
364
         <delegate class="org.eclipse.php.internal.core.facet.DummyActionDelegate" />
364
         <delegate class="org.eclipse.php.internal.core.facet.InstallActionDelegate" />
365
      </action>
365
      </action>
366
      <action facet="php.component" version="4" type="install">
366
      <action facet="php.component" version="4" type="install">
367
         <delegate class="org.eclipse.php.internal.core.facet.DummyActionDelegate" />
367
         <delegate class="org.eclipse.php.internal.core.facet.InstallActionDelegate" />
368
      </action>
368
      </action>
369
      <action facet="php.component" version="5" type="install">
369
      <action facet="php.component" version="5" type="install">
370
         <delegate class="org.eclipse.php.internal.core.facet.DummyActionDelegate" />
370
         <delegate class="org.eclipse.php.internal.core.facet.InstallActionDelegate" />
371
      </action>
371
      </action>
372
      <action facet="php.component" version="5.3" type="install">
372
      <action facet="php.component" version="5.3" type="install">
373
         <delegate class="org.eclipse.php.internal.core.facet.DummyActionDelegate" />
373
         <delegate class="org.eclipse.php.internal.core.facet.InstallActionDelegate" />
374
      </action>
374
      </action>
375
      <action facet="php.component" version="5.4" type="install">
375
      <action facet="php.component" version="5.4" type="install">
376
         <delegate class="org.eclipse.php.internal.core.facet.DummyActionDelegate" />
376
         <delegate class="org.eclipse.php.internal.core.facet.InstallActionDelegate" />
377
      </action>
378
      <action facet="php.component" version="4" type="version-change">
379
         <delegate class="org.eclipse.php.internal.core.facet.VersionChangeActionDelegate" />
380
      </action>
381
      <action facet="php.component" version="5" type="version-change">
382
         <delegate class="org.eclipse.php.internal.core.facet.VersionChangeActionDelegate" />
383
      </action>
384
      <action facet="php.component" version="5.3" type="version-change">
385
         <delegate class="org.eclipse.php.internal.core.facet.VersionChangeActionDelegate" />
386
      </action>
387
      <action facet="php.component" version="5.4" type="version-change">
388
         <delegate class="org.eclipse.php.internal.core.facet.VersionChangeActionDelegate" />
377
      </action>
389
      </action>
378
   </extension>
390
   </extension>
379
</plugin>
391
</plugin>
(-)a/plugins/org.eclipse.php.core/src/org/eclipse/php/internal/core/facet/InstallActionDelegate.java (-1 / +1 lines)
Lines 6-12 Link Here
6
import org.eclipse.wst.common.project.facet.core.IDelegate;
6
import org.eclipse.wst.common.project.facet.core.IDelegate;
7
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
7
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
8
8
9
public class DummyActionDelegate implements IDelegate {
9
public class InstallActionDelegate implements IDelegate {
10
10
11
	public void execute(IProject arg0, IProjectFacetVersion arg1, Object arg2,
11
	public void execute(IProject arg0, IProjectFacetVersion arg1, Object arg2,
12
			IProgressMonitor arg3) throws CoreException {
12
			IProgressMonitor arg3) throws CoreException {
(-)a/plugins/org.eclipse.php.core/src/org/eclipse/php/internal/core/facet/Messages.java (+15 lines)
Added Link Here
1
package org.eclipse.php.internal.core.facet;
2
3
import org.eclipse.osgi.util.NLS;
4
5
public class Messages extends NLS {
6
	private static final String BUNDLE_NAME = "org.eclipse.php.internal.core.facet.messages"; //$NON-NLS-1$
7
	public static String PHPFacets_SettingVersionFailed;
8
	static {
9
		// initialize resource bundle
10
		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
11
	}
12
13
	private Messages() {
14
	}
15
}
(-)a/plugins/org.eclipse.php.core/src/org/eclipse/php/internal/core/facet/PHPFacets.java (-2 / +35 lines)
Lines 4-11 Link Here
4
import java.util.Set;
4
import java.util.Set;
5
5
6
import org.eclipse.core.resources.IProject;
6
import org.eclipse.core.resources.IProject;
7
import org.eclipse.core.runtime.CoreException;
7
import org.eclipse.core.runtime.*;
8
import org.eclipse.core.runtime.IProgressMonitor;
8
import org.eclipse.php.internal.core.PHPCorePlugin;
9
import org.eclipse.php.internal.core.PHPVersion;
9
import org.eclipse.php.internal.core.PHPVersion;
10
import org.eclipse.wst.common.project.facet.core.IFacetedProject;
10
import org.eclipse.wst.common.project.facet.core.IFacetedProject;
11
import org.eclipse.wst.common.project.facet.core.IProjectFacet;
11
import org.eclipse.wst.common.project.facet.core.IProjectFacet;
Lines 15-20 Link Here
15
public class PHPFacets {
15
public class PHPFacets {
16
16
17
	/**
17
	/**
18
	 * Synchronizes the php version for facets
19
	 * 
20
	 * @param project
21
	 * @return the status of setting the version
22
	 */
23
	public static IStatus setFacetedVersion(IProject project, PHPVersion version) {
24
		if (isFacetedProject(project)) {
25
			try {
26
				final IProjectFacetVersion facetedVersion = convertToFacetVersion(version);
27
				final IProjectFacet phpFacet = ProjectFacetsManager
28
						.getProjectFacet(PHPFacetsConstants.PHP_COMPONENT);
29
				final IFacetedProject faceted = ProjectFacetsManager
30
						.create(project);
31
				if (!facetedVersion.equals(faceted
32
						.getInstalledVersion(phpFacet))) {
33
					final Set<IFacetedProject.Action> actions = new HashSet<IFacetedProject.Action>();
34
					actions.add(new IFacetedProject.Action(
35
							IFacetedProject.Action.Type.VERSION_CHANGE,
36
							facetedVersion, null));
37
					faceted.modify(actions, new NullProgressMonitor());
38
				}
39
			} catch (CoreException ex) {
40
				return new Status(IStatus.ERROR, PHPCorePlugin.ID,
41
						Messages.PHPFacets_SettingVersionFailed, ex);
42
			} catch (IllegalArgumentException ex) {
43
				return new Status(IStatus.ERROR, PHPCorePlugin.ID,
44
						Messages.PHPFacets_SettingVersionFailed, ex);
45
			}
46
		}
47
		return Status.OK_STATUS;
48
	}
49
50
	/**
18
	 * Returns true if the given project is a faceted project and the php core
51
	 * Returns true if the given project is a faceted project and the php core
19
	 * facet is installed
52
	 * facet is installed
20
	 * 
53
	 * 
(-)a/plugins/org.eclipse.php.core/src/org/eclipse/php/internal/core/facet/VersionChangeActionDelegate.java (+19 lines)
Added Link Here
1
package org.eclipse.php.internal.core.facet;
2
3
import org.eclipse.core.resources.IProject;
4
import org.eclipse.core.runtime.CoreException;
5
import org.eclipse.core.runtime.IProgressMonitor;
6
import org.eclipse.wst.common.project.facet.core.IDelegate;
7
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
8
9
public class VersionChangeActionDelegate implements IDelegate {
10
11
	public void execute(IProject arg0, IProjectFacetVersion arg1, Object arg2,
12
			IProgressMonitor arg3) throws CoreException {
13
		// sync php version of the project
14
		// check if there is any change to prevent endless loops
15
		// (php options upgrade will invoke a version change and lead to this)
16
		// TODO
17
	}
18
19
}
(-)a/plugins/org.eclipse.php.core/src/org/eclipse/php/internal/core/facet/messages.properties (+1 lines)
Added Link Here
1
PHPFacets_SettingVersionFailed=Changing the version failed because of unsatisfied constraints. Check your activated project facets.
(-)a/plugins/org.eclipse.php.ui/src/org/eclipse/php/internal/ui/preferences/OptionsConfigurationBlock.java (-4 / +20 lines)
Lines 142-149 Link Here
142
			fDisabledProjectSettings = new IdentityHashMap();
142
			fDisabledProjectSettings = new IdentityHashMap();
143
			for (int i = 0; i < allKeys.length; i++) {
143
			for (int i = 0; i < allKeys.length; i++) {
144
				Key curr = allKeys[i];
144
				Key curr = allKeys[i];
145
				fDisabledProjectSettings.put(curr, curr.getStoredValue(
145
				fDisabledProjectSettings.put(curr,
146
						fLookupOrder, false, fManager));
146
						curr.getStoredValue(fLookupOrder, false, fManager));
147
			}
147
			}
148
		}
148
		}
149
149
Lines 439-446 Link Here
439
		for (int i = 0; i < fExpandedComposites.size(); i++) {
439
		for (int i = 0; i < fExpandedComposites.size(); i++) {
440
			ExpandableComposite curr = (ExpandableComposite) fExpandedComposites
440
			ExpandableComposite curr = (ExpandableComposite) fExpandedComposites
441
					.get(i);
441
					.get(i);
442
			settings.put(SETTINGS_EXPANDED + String.valueOf(i), curr
442
			settings.put(SETTINGS_EXPANDED + String.valueOf(i),
443
					.isExpanded());
443
					curr.isExpanded());
444
		}
444
		}
445
	}
445
	}
446
446
Lines 615-620 Link Here
615
			hasChanges = true;
615
			hasChanges = true;
616
		}
616
		}
617
617
618
		if (!this.checkChanges(currContext)) {
619
			// check failed
620
			return false;
621
		}
622
618
		boolean doBuild = false;
623
		boolean doBuild = false;
619
		if (needsBuild) {
624
		if (needsBuild) {
620
			String[] strings = getFullBuildDialogStrings(fProject == null);
625
			String[] strings = getFullBuildDialogStrings(fProject == null);
Lines 657-662 Link Here
657
		return true;
662
		return true;
658
	}
663
	}
659
664
665
	/**
666
	 * Default implementation returns true. Override and return false if the
667
	 * changes are incompatible to the underlying project
668
	 * 
669
	 * @param currContext
670
	 * @return false to deny the changes.
671
	 */
672
	protected boolean checkChanges(IScopeContext currContext) {
673
		return true;
674
	}
675
660
	protected void prepareForBuild() {
676
	protected void prepareForBuild() {
661
677
662
		// implement this method for any actions that need to be taken before
678
		// implement this method for any actions that need to be taken before
(-)a/plugins/org.eclipse.php.ui/src/org/eclipse/php/internal/ui/preferences/PHPCoreOptionsConfigurationBlock.java (+24 lines)
Lines 12-18 Link Here
12
package org.eclipse.php.internal.ui.preferences;
12
package org.eclipse.php.internal.ui.preferences;
13
13
14
import org.eclipse.core.resources.IProject;
14
import org.eclipse.core.resources.IProject;
15
import org.eclipse.core.runtime.IStatus;
16
import org.eclipse.core.runtime.preferences.IScopeContext;
17
import org.eclipse.jface.dialogs.IDialogConstants;
18
import org.eclipse.jface.dialogs.MessageDialog;
15
import org.eclipse.php.internal.core.PHPCorePlugin;
19
import org.eclipse.php.internal.core.PHPCorePlugin;
20
import org.eclipse.php.internal.core.PHPVersion;
21
import org.eclipse.php.internal.core.facet.PHPFacets;
22
import org.eclipse.php.internal.core.preferences.CorePreferenceConstants.Keys;
16
import org.eclipse.php.internal.ui.preferences.util.Key;
23
import org.eclipse.php.internal.ui.preferences.util.Key;
17
import org.eclipse.swt.widgets.Composite;
24
import org.eclipse.swt.widgets.Composite;
18
import org.eclipse.swt.widgets.Control;
25
import org.eclipse.swt.widgets.Control;
Lines 39-42 Link Here
39
		return getKey(PHPCorePlugin.ID, key);
46
		return getKey(PHPCorePlugin.ID, key);
40
	}
47
	}
41
48
49
	protected boolean checkChanges(IScopeContext currContext) {
50
		final Key versionKey = getPHPCoreKey(Keys.PHP_VERSION);
51
		// synch the php facets version if needed
52
		final String newVersion = versionKey.getStoredValue(currContext,
53
				fManager);
54
		final IStatus status = PHPFacets.setFacetedVersion(fProject,
55
				PHPVersion.byAlias(newVersion));
56
		if (!status.isOK()) {
57
			MessageDialog dialog = new MessageDialog(
58
					getShell(),
59
					PreferencesMessages.PHPCoreOptionsConfigurationBlock_SettingVersionFailed_Title,
60
					null, status.getMessage(), MessageDialog.ERROR,
61
					new String[] { IDialogConstants.CANCEL_LABEL }, 0);
62
			dialog.open();
63
		}
64
		return status.isOK();
65
	}
42
}
66
}
(-)a/plugins/org.eclipse.php.ui/src/org/eclipse/php/internal/ui/preferences/PreferencesMessages.java (+2 lines)
Lines 802-805 Link Here
802
	public static String FavoriteStaticMemberInputDialog_error_invalidTypeName;
802
	public static String FavoriteStaticMemberInputDialog_error_invalidTypeName;
803
	public static String FavoriteStaticMemberInputDialog_error_entryExists;
803
	public static String FavoriteStaticMemberInputDialog_error_entryExists;
804
804
805
	public static String PHPCoreOptionsConfigurationBlock_SettingVersionFailed_Title;
806
805
}
807
}
(-)a/plugins/org.eclipse.php.ui/src/org/eclipse/php/internal/ui/preferences/PreferencesMessages.properties (+2 lines)
Lines 936-938 Link Here
936
936
937
CleanUpPreferencePage_Description=A&ctive profile:
937
CleanUpPreferencePage_Description=A&ctive profile:
938
CleanUpPreferencePage_Title=Code Clean Up
938
CleanUpPreferencePage_Title=Code Clean Up
939
940
PHPCoreOptionsConfigurationBlock_SettingVersionFailed_Title=Failed setting php version

Return to bug 389036