/** * @version $Id: TemplateLink.java 1839 2014-04-16 02:33:51Z yukihiro-kinjyo $ * * 2012/11/28 17:57:50 * @author s.takuro * * Copyright 2011-2014 TIDAコンソーシアム All Rights Reserved. */ package com.tida_okinawa.corona.correction.template; import java.util.List; import java.util.Set; import com.tida_okinawa.corona.io.IoActivator; import com.tida_okinawa.corona.io.model.dic.ITemplateItem; /** * @author s.takuro * #187 構文パターン自動生成 */ public class TemplateLink extends VariableTemplate { /** * 未登録 */ public static final int NO_ID = -1; /** * 参照 * * @param parent * 親要素 */ public TemplateLink(TemplateContainer parent) { super(parent); id = NO_ID; label = ""; //$NON-NLS-1$ } private int id; private String label; private ITemplateItem linkTemplate; /** * 参照するひな型のID取得 * * @return ひな型のID */ public int getId() { return id; } void setId(int id) { if (this.id == id) { return; } this.id = id; propertyChanged(); } /** * 参照するひな型名の取得 * * @return ひな型名 */ public String getLabel() { ITemplateItem template = getLinkTemplate(); if (template != null) { return template.getName(); } return label; } /** * 参照するひな型名の設定 * * @param label * ひな型名 */ public void setLabel(String label) { label = (label == null) ? "" : label; //$NON-NLS-1$ if (this.label.equals(label)) { return; } this.label = label; propertyChanged(); } /** * 参照するひな型アイテムの設定 * * @param iTemplateItem * ひな型アイテム */ public void setLinkTemplate(ITemplateItem iTemplateItem) { this.linkTemplate = iTemplateItem; if (iTemplateItem != null) { setId(iTemplateItem.getTemplateId()); setLabel(iTemplateItem.getName()); } else { setId(-1); setLabel(""); //$NON-NLS-1$ } } /** * 参照するひな型アイテムの取得 * * @return ひな型 */ public ITemplateItem getLinkTemplate() { boolean finded = false; if ((id != ITemplateItem.DEFAULT_ID) && (linkTemplate == null)) { List<ITemplateItem> items = IoActivator.getTemplateFactory().getItems(); for (ITemplateItem item : items) { /* TEMPLATE_IDに格納された値が一致した場合 */ if (item != null && item.getTemplateId() == id) { linkTemplate = item; finded = true; break; } } } /* items内で見つからなかった場合 */ if (finded != true && (linkTemplate == null)) { Set<ITemplateItem> items = IoActivator.getTemplateFactory().getAddItems(); for (ITemplateItem item : items) { /* TEMPLATE_IDに格納された値が一致した場合 */ if (item != null && item.getTemplateId() == id) { linkTemplate = item; finded = true; break; } } } return linkTemplate; } @Override public String toString() { return getLabel() + Messages.TEMPLATE_LINK_STRING; } }