rename /usr/local/zend/lib/php_extensions/xsl.so to any other name
Delete the lineextension=xsl.sofrom file<your eclipse>/plugins/org.zend.php.debug.debugger.macosx_5.3.18.v20110322/resources/php53/php.ini
rename /usr/local/zend/lib/php_extensions/xsl.so to any other name
Delete the lineextension=xsl.sofrom file<your eclipse>/plugins/org.zend.php.debug.debugger.macosx_5.3.18.v20110322/resources/php53/php.ini
And I used below way to customize the qualifier string of our build.org.eclipse.tycho tycho-p2-director-plugin ${tycho-version} materialize-products materialize-products false myappprofile archive-products archive-products
org.eclipse.tycho tycho-packaging-plugin ${tycho-version} '${qualifier-prefix}_'yyyyMMddHHmm
And configure the surefire plugin like below to test code in Maven build.org.eclipse.tycho tycho-surefire-plugin ${tycho-version} junit junit 4.1 false junit junit 4.1
org.eclipse.tycho tycho-surefire-plugin ${tycho-version} my.group my.feature ${version} eclipse-feature my.group my.testserver 1.0.0 eclipse-plugin ${testSuiteName} ${testClassName} -Dcom.sun.management.jmxremote -consoleLog org.eclipse.equinox.ds 1 true
org.apache.maven.plugins maven-jarsigner-plugin 1.2 ${keystore} MyCompany ${storepass} ${keypass} true ${skip.jar.signing} -tsa https://timestamp.geotrust.com/tsa **/artifacts.jar **/content.jar jar eclipse-plugin eclipse-feature eclipse-test-plugin sign sign verify verify
| Bundle | Usage |
| org.eclipse.equinox.p2.directorywatcher | the definition and implementation of directory watcher API |
| org.eclipse.equinox.p2.updatesite | the implementation of updatesite repository |
| org.eclipse.equinox.p2.extensionlocation | the implementation of extension repository |
| org.eclipse.equinox.p2.reconciler.dropins | scan dropin folder and link files; watch the traditional configuration file used by update manager |
There are three types of proxy supported by IProxyService. They're http, https and socks.
It also allows to add/remove ip address from white list, which are accessed without connecting proxy.
End users can manage the proxy setting of Eclipse via Preference - General - Network Connections. Eclipse would do persistence of user's setting. Other components of Eclipse also use those proxy settings to access network, such as ECF.
Below code snippet shows how to use proxy API to manually specify proxy server,
proxyService.setProxiesEnabled(true);
proxyService.setSystemProxiesEnabled(false);
IProxyData[] datas = proxyService.getProxyData();
IProxyData proxyData = null;
for(IProxyData data : datas) {
// clean old data
((ProxyData)data).setSource("Manual"); //$NON-NLS-1$
data.setUserid(null); //$NON-NLS-1$
data.setPassword(null); //$NON-NLS-1$
if(proxyType == SOCKSPROXY && IProxyData.SOCKS_PROXY_TYPE.equals(data.getType())) {
proxyData = data;
continue;
}else if(proxyType == WEBPROXY && IProxyData.HTTP_PROXY_TYPE.equals(data.getType())){
proxyData = data;
continue;
}
data.setHost(null); //$NON-NLS-1$
data.setPort(0);
}
if(proxyData != null){
proxyData.setHost(proxyServer);
proxyData.setPort(proxyPort);
}
try {
proxyService.setProxyData(datas);
} catch (CoreException e) {
proxyService.setProxiesEnabled(false);
proxyService.setSystemProxiesEnabled(false);
return false;
} When you develop a rich client application base on eclipse framework, and your application require eclipse platform feature, you would find that your application has some menu items contributed by eclipse platform. Those menu items are defined by several plug-ins' implementation of actionSet extention point. In fact Eclipse provides an activity mechanism to suppress the extension points which you don't want to use. However, you must know the identification name of extension points which you want to suppress. It's a hard work to find out all of them from dozens of plugins. so, I wrote a utility function to list all the extension points of specified name.
IExtensionRegistry registry = Platform.getExtensionRegistry();
IExtensionPoint extensionPoint = registry.getExtensionPoint("org.eclipse.ui.actionSets");
IExtension[] extensions = extensionPoint.getExtensions();
for(int i = 0; i < extensions.length; i++){
IConfigurationElement elements[] = extensions[i ].getConfigurationElements();
for(int j = 0; j < elements.length; j++){
String pluginId = elements[j].getNamespaceIdentifier();
if(pluginId.indexOf("org.eclipse") > -1){ //$NON-NLS-1$
IConfigurationElement[] subElements = elements[j].getChildren("action");
for(int m = 0; m < subElements.length; m++){
System.out.println("Plugin: " + pluginId + " Id: " +
subElements[m].getAttribute("id"));
}
}
}
}
and the follow snippet is about the activities of menus of eclipse platform:
<extension point="org.eclipse.ui.activities">
<activity id="activity.platform" name="hidePlatformMenus"/>
<activityPatternBinding activityId="activity.platform" pattern="org\.eclipse\.platform/org\.eclipse\.ui\.cheatsheets\.actions\.CheatSheetHelpMenuAction"/>
<activity id="activity.search" name="hideSearchMenus"/>
<activityPatternBinding activityId="activity.search" pattern="org\.eclipse\.search/org\.eclipse\.search\..*"/>
<activity
id="activity.ide"
name="hideIDEMenus">
</activity>
<activityPatternBinding
activityId="activity.ide"
pattern="org\.eclipse\.ui\.ide/org\.eclipse\.ui\.actions\.showKeyAssistHandler">
</activityPatternBinding>
<activityPatternBinding
activityId="activity.ide"
pattern="org\.eclipse\.ui\.ide/org\.eclipse\.update\.ui\..*">
</activityPatternBinding>
<activity
id="activity.editor"
name="hideEditorMenus">
</activity>
<activityPatternBinding
activityId="activity.editor"
pattern="org\.eclipse\.ui\.editors/org\.eclipse\.ui\.edit\.text\.openExternalFile">
</activityPatternBinding>
<activityPatternBinding
activityId="activity.editor"
pattern="org\.eclipse\.ui\.editors/org\.eclipse\.ui\.edit\.text\.delimiter\..*">
</activityPatternBinding>
<activity
id="activity.externaltool"
name="hideExternaltoolMenus">
</activity>
<activityPatternBinding
activityId="activity.externaltool"
pattern="org\.eclipse\.ui\.externaltools/org\.eclipse\.ui\.externaltools\.ExternalToolMenuDelegateMenu">
</activityPatternBinding>
</extension>
Those days my work is focus on eclipse's update. Now I understand the general mechanism and meet some issues when using it in development work.
The update mechanism includes four major types: install, enable, disable and uninstall. And all of those operations can be executed by command line, such as installing a feature can use following line:
-application org.eclipse.update.core.standaloneUpdate -command install -featureId my.feature -version 1.0.0 -from file:/v:/local_updateSite/ -to file:/v:/eclipse/.
The installation process would copy the feature and plugins which are included by the feature to the local site from the update site, then execute the feature's global install handler if it has one.
Some strange issue occurs when I want to disable a feature.Then I try to disable the feature with command,
-command disable -featureId my.feature -version 1.0.0 -to file:/v:/eclipse/
The output of command means that the command is executed successfully.
But I list the status of features with command line "-command listFeatures", the status of my.feature is still enable.
Then I try to uninstall my.feature with command,
-command uninstall -featureId my.feature -version 1.0.0 -to file:/v:/eclipse/
It fails, and the following is the root cause found in log file.
!MESSAGE [Cannot find unconfigured feature my.feature with version 1.0.0]
unconfigured feature means the feature is disabled.
I met a defect that dynamically created menu items disappear after creating a new viewPart. It caused me overtime last Friday. Today I find the root cause.
The scenario is:
open first document, the items are shown well
open another document, the items disappear
The requirement is that showing the menu items while current part is document, otherwise hide them.
So our implementation is:
when current document part is deactivated, set menu items invisible
when document part is activated, set menu items visible
After debugging, I found that menu items was updated before the part activated listener was notified. Hence the menu is invisible while the parent menu is updated. The resolved solution is that setting menu items visible while part opened listener is notified.