WTP插件开发中的preset学习笔记(by quqi99)

                                                WTP插件开发中的preset学习笔记 ( by quqi99 )

 

 

作者:张华 发表于:2010-04-27

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明

 


 

import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.wst.common.project.facet.core.IDynamicPreset;
import org.eclipse.wst.common.project.facet.core.IFacetedProjectWorkingCopy;
import org.eclipse.wst.common.project.facet.core.IPresetFactory;
import org.eclipse.wst.common.project.facet.core.IProjectFacet;
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
import org.eclipse.wst.common.project.facet.core.PresetDefinition;
import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;
import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponent;

/**
 * WTP插件中的preset
 * @version 0.10 2010-4-27
 * @author Zhang Hua
 */
public class MyPresetFactory implements IPresetFactory {
    /**
     * <extension point="org.eclipse.wst.common.project.facet.core.presets">
     *    <static-preset id="my.preset.v8">
     *       <label>My preset</label>
     *       <facet id="my.facet" verstion="8"/>
     *       <facet id="jst.web" verstion="2.3"/>
     *    </static-preset>
     *    <dynamic-preset id="my.preset.v8">
     *      <factory class="test.MyPresetFactory"/>
     *    </dynamic-preset>
     * </extension>
     */
    public PresetDefinition createPreset(String presetId, Map<String, Object> context)
            throws CoreException {
        final IFacetedProjectWorkingCopy copy = (IFacetedProjectWorkingCopy)context.get(IDynamicPreset.CONTEXT_KEY_FACETED_PROJECT);
        String facetRuntimeTypeID = null;
        String facetRuntimeVersion = null;
        IRuntime runtime = null;
        Set<IRuntime> set = copy.getTargetableRuntimes();
        if(set!=null && set.size()>0){
            runtime = (IRuntime)set.toArray()[0];
            if(runtime.getRuntimeComponents().size() > 0){
                IRuntimeComponent runtimeComponent = runtime.getRuntimeComponents().get(0);
                facetRuntimeTypeID = runtimeComponent.getRuntimeComponentType().getId();
                facetRuntimeVersion = runtimeComponent.getRuntimeComponentVersion().getVersionString();
            }
        }
        if("my.runtime.appserv".equals(facetRuntimeTypeID) && "8.0".equals(facetRuntimeVersion)){
            IProjectFacet myfacet = ProjectFacetsManager.getProjectFacet("my.facet");
            IProjectFacetVersion facetVer = myfacet.getDefaultVersion();
            Set<IProjectFacetVersion> facets = new HashSet<IProjectFacetVersion>();
            facets.addAll(copy.getProjectFacets());
            facets.add(facetVer);
            copy.setProjectFacets(facets);
            return new PresetDefinition("My App preset v8.0","My App preset v8.0",facets);
        }
        return null;
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

quqi99

你的鼓励就是我创造的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值