/**
* @version $Id: ClaimDataEditorInput.java 1839 2014-04-16 02:33:51Z yukihiro-kinjyo $
*
* 2011/09/29 13:44:17
* @author kousuke-morishima
*
* Copyright 2011-2014 TIDAコンソーシアム All Rights Reserved.
*/
package com.tida_okinawa.corona.ui.editors;
import org.eclipse.core.resources.IResource;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IPersistableElement;
import org.eclipse.ui.views.properties.IPropertySource;
import com.tida_okinawa.corona.internal.ui.views.model.IUIClaim;
import com.tida_okinawa.corona.internal.ui.views.model.IUIWork;
import com.tida_okinawa.corona.io.model.IClaimData;
import com.tida_okinawa.corona.ui.Icons;
/**
* @author kousuke-morishima
*/
public class ClaimDataEditorInput implements IEditorInput {
private IUIClaim uiClaim;
private IClaimData claim;
private boolean isMistakes;
private String productName;
private String name;
private IUIWork uiWork;
public ClaimDataEditorInput(IUIClaim uiClaim, String name) {
this(uiClaim.getObject(), name);
this.uiClaim = uiClaim;
}
public ClaimDataEditorInput(IClaimData claim, String name) {
this.claim = claim;
this.name = name;
this.isMistakes = false;
}
/**
* @param claim
* @param uiWork
* 誤記補正結果を保持している中間データ
* @param productName
* このターゲットのレコードのみ表示する場合に指定する。nullなら制限しない。
* @param name
* must not null
*/
public ClaimDataEditorInput(IClaimData claim, IUIWork uiWork, String productName, String name) {
if (claim == null) {
throw new IllegalArgumentException("IClaimData must not null");
}
this.uiWork = uiWork;
this.claim = claim;
this.isMistakes = (uiWork != null);
this.productName = productName;
this.name = name;
}
/**
* @return may be null
*/
public IUIClaim getUIClaim() {
return uiClaim;
}
/**
* @return may be null
*/
public IUIWork getUIWork() {
return uiWork;
}
/**
* @return not null
*/
public IClaimData getClaim() {
return claim;
}
/**
* 誤記補正済みデータを表示するためのEditorInputならtrueを返す
* この値がtrueなら、{@link #getUIClaim()}は必ずnullを返す
*
* @return
*/
public boolean isMistakesData() {
return isMistakes;
}
/**
* この値がnullでなければ、このターゲット名のレコードのみ表示することを期待されている
*
* @return may be null.
*/
public String getProductName() {
return productName;
}
@Override
public boolean equals(Object obj) {
if (super.equals(obj))
return true;
if (!(obj instanceof ClaimDataEditorInput))
return false;
ClaimDataEditorInput e2 = (ClaimDataEditorInput) obj;
if (uiClaim != null) {
if (e2.uiClaim != null) {
return uiClaim.equals(e2.uiClaim);
}
return false;
} else {
if (e2.uiClaim != null) {
return false;
}
}
if (uiWork != null) {
if (e2.uiWork != null) {
return uiWork.equals(e2.uiWork);
}
return false;
} else {
if (e2.uiWork != null) {
return false;
}
}
if (claim.equals(e2.claim)) {
if (name.equals(e2.name)) {
return true;
}
return false;
}
return false;
}
@Override
public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
if (adapter.equals(IPropertySource.class)) {
return uiClaim.getEditableValue();
}
return null;
}
@Override
public boolean exists() {
return false;
}
@Override
public ImageDescriptor getImageDescriptor() {
return Icons.INSTANCE.getDescriptor(Icons.IMG_CLAIM);
}
@Override
public String getName() {
if (name != null) {
if (uiWork != null) {
return name + "(" + claim.getFileName() + ")";
}
return claim.getFileName();
}
if (uiClaim != null) {
return uiClaim.toString();
}
return claim.getFileName();
}
@Override
public IPersistableElement getPersistable() {
return null;
}
@Override
public String getToolTipText() {
if (uiClaim != null) {
IResource res = uiClaim.getResource();
return res.getProject().getName() + "/" + res.getProjectRelativePath().toString();
}
if (uiWork != null) {
IResource res = uiWork.getResource();
return res.getProject().getName() + "/" + res.getProjectRelativePath().toString();
}
return claim.getName();
}
}