/**
* <p>Copyright: Copyright (c) 2009</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.ui.page;
import java.util.List;
import org.eclipse.core.commands.operations.IUndoContext;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.widgets.FormToolkit;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.ui.editor.AbstractHSFormEditor;
import com.hundsun.ares.studio.ui.grid.EditorComponent;
import com.hundsun.ares.studio.ui.util.EditorDirtyStatus;
import com.hundsun.ares.studio.ui.util.ImporveControlWithDitryStateContext;
public abstract class FromPageWithMyDirtySystem<T> extends HSComponentbasedFormPage {
/**
* ��״̬
*/
protected EditorDirtyStatus dirty = new EditorDirtyStatus();
/**
* ��������Դ
*/
protected IARESResource resource;
/**
* ��������������
*/
protected IUndoContext undoContext;
/**
* �༭��������ģ��
*/
protected T info;
public void setUndoContext(IUndoContext undoContext) {
this.undoContext = undoContext;
}
public IUndoContext getUndoContext() {
return undoContext;
}
public FromPageWithMyDirtySystem(FormEditor editor, String id, String title) {
super(editor, id, title);
if (editor instanceof AbstractHSFormEditor) {
resource = ((AbstractHSFormEditor) editor).getResource();
}
}
public FromPageWithMyDirtySystem(String id, String title) {
super(id, title);
}
public EditorDirtyStatus getDirtyStatus() {
return dirty;
}
public void setDirtyStatus(EditorDirtyStatus dirty) {
this.dirty = dirty;
}
@Override
public boolean isDirty() {
return dirty.getValue();
}
/**
* @return the resource
*/
public IARESResource getResource() {
return resource;
}
/**
* @param resource the resource to set
*/
public void setResource(IARESResource resource) {
this.resource = resource;
}
public T getInfo() {
return info;
}
public void setInfo(T info) {
this.info = info;
}
public Composite createEditorComponentComposite(EditorComponent component,List input,Composite parent,IManagedForm managedForm){
component.setDirty(dirty);
component.setResource(resource);
component.setInfo(info);
component.setInput(input);
component.setUndoContext(undoContext);
component.setManagedForm(managedForm);
getEditableComponent().add(component);
FormToolkit formToolkit = null;
if(managedForm != null){
formToolkit = managedForm.getToolkit();
}
return component.create(formToolkit, parent);
}
public String getHelpContextId() {
return null;
}
@Override
public void createPartControl(Composite parent) {
super.createPartControl(parent);
if(getHelpContextId() != null){
PlatformUI.getWorkbench().getHelpSystem().setHelp(getPartControl(), getHelpContextId());
}
}
public ImporveControlWithDitryStateContext createContext(Composite client,IManagedForm managedForm){
return new ImporveControlWithDitryStateContext(
client,
getDirtyStatus(),
managedForm.getToolkit(),
getUndoContext(),
managedForm.getMessageManager(),
info
);
}
}