Acme 部品の情報ページ
目的
「Acme 部品」テーブルの「情報を表示」操作 をクリックすると、Acme 部品の情報ページが表示されます。
ソリューション
1. この情報ページのプライマリビルダーを作成します。
package com.acme.wizard.mvc.builders.custompart;
import java.util.List;
import com.ptc.jca.mvc.builders.DefaultInfoComponentBuilder;
import com.ptc.mvc.components.ComponentConfig;
import com.ptc.mvc.components.ComponentParams;
import com.ptc.mvc.components.InfoComponentConfigFactory;
import com.ptc.mvc.components.InfoConfig;
import com.ptc.mvc.components.PropertyConfig;
import com.ptc.mvc.components.TypeBased;
import wt.util.WTException;
/**
* This is a custom info page builder for Acme part.
*/
@TypeBased("WCTYPE|wt.part.WTPart|com.acme.AcmePartType")
public class AcmePartInfoPageBuilder extends DefaultInfoComponentBuilder {
@Override
protected InfoConfig buildInfoConfig(ComponentParams params) throws WTException {
InfoComponentConfigFactory factory = getComponentConfigFactory();
InfoConfig config = factory.newInfoConfig();

List<ComponentConfig> standardConfigList = factory.getStandardStatusConfigs();
//Add Build status glyph
PropertyConfig statusFamily_BuildStatus = factory.newPropertyConfig("statusFamily_BuildStatus");
statusFamily_BuildStatus.setStatusGlyph(true);
standardConfigList.add(statusFamily_BuildStatus);
for(ComponentConfig componentConfig : standardConfigList){
config.addComponent(componentConfig);
}
config.setNavBarName("general");
config.setTabSet("acmePartInfoPageTabSet");
config.setNavBarName("third_level_nav_part");
config.setHelpContext("part.view");
config.setView("/custom/acmeInfoPage.jsp");
return config;
}
}
2. 情報ページに表示するタブのセット acmePartInfoPageTabSet を定義します。これを行うには、その操作モデルを AcmePartClient-actionmodels.xml で作成します。必要なタブまたは操作を追加することによって情報ページを定義できます。
<model name="acmePartInfoPageTabSet" >
<submodel name="acmePartDetailsTab"/>
<action name="productStructureGWT" type="psb"/>
<submodel name="partInfoContentTab"/>
<submodel name="changesTab"/>
<submodel name="partInfoHistoryTab"/>
<submodel name="partInfoWhereUsedTab"/>
</model>
3. カスタム詳細タブ構造を定義する新しいモデル acmePartDetailsTab を作成します。これを情報ページのサブモデル acmePartInfoPageTabSet として追加します。
<model name="acmePartDetailsTab" resourceBundle="com.acme.custompart.CustomPartResource">
<action name="visualizationAndAttributes" type="object"/>
<action name="attributes" type="object"/>
<action name="viewCustomParts" type="custompart"/>
</model>
4. 詳細タブのリソースバンドルエントリ acmePartDetailsTabCustomPartResource.java に追加します。
@RBEntry("Acme Part Details")
public static final String ACME_PART_DETAILS = "object.acmePartDetailsTab.description";
5. 必要に応じて、visualization 委任を com.acme.infoPage に追加して、visualization コンポーネントをオーバーライドします。
package com.acme.infoPage;

import javax.servlet.ServletRequest;

import com.ptc.core.components.rendering.guicomponents.VisualizationComponent;
import com.ptc.core.components.visualization.AbstractVisualizationDelegate;

public class AcmeCustomVisualizationDelegate extends AbstractVisualizationDelegate {
@Override
public VisualizationComponent getVisualizationComponent(Object datum, ServletRequest request) {
String html = "<div id=wvs_pview_div class=vizComponent><IMG src='netmarkets/images/demodata/carambola.jpg'/></div>";
return new VisualizationComponent(html);
}
}
6. Windchill を再起動して、 をクリックすると情報ページが表示されるかどうかを確認します。
これは役に立ちましたか?