View Javadoc
1   package org.argeo.connect.ui.parts;
2   
3   import javax.jcr.Node;
4   
5   import org.argeo.cms.ui.eclipse.forms.AbstractFormPart;
6   import org.argeo.cms.util.CmsUtils;
7   import org.argeo.connect.ui.ConnectEditor;
8   import org.eclipse.swt.widgets.Composite;
9   
10  /**
11   * Extends the usual Abstract form part to ease the management of panel that
12   * must totally be redrawn on each refresh, typically to display different
13   * layouts depending on the linked editor state
14   */
15  public abstract class AbstractPanelFormPart extends AbstractFormPart {
16  
17  	private ConnectEditor editor;
18  	private Boolean isEditing;
19  	private final Composite parent;
20  	private final Node entity;
21  
22  	public AbstractPanelFormPart(Composite parent, ConnectEditor editor, Node entity) {
23  		this.parent = parent;
24  		this.entity = entity;
25  		this.editor = editor;
26  	}
27  
28  	@Override
29  	public void refresh() {
30  		super.refresh();
31  		if (parent == null || parent.isDisposed())
32  			return;
33  		// if (editor == null)
34  		// editor = ((ConnectManagedForm) getManagedForm()).getEditor();
35  
36  		if ((isEditing == null) || isEditing != editor.isEditing()) {
37  			isEditing = editor.isEditing();
38  			CmsUtils.clear(parent);
39  			reCreateChildComposite(parent, entity);
40  			parent.layout();
41  		} else
42  			refreshContent(parent, entity);
43  	}
44  
45  	protected boolean isEditing() {
46  		return isEditing;
47  	}
48  
49  	abstract protected void reCreateChildComposite(Composite parent, Node entity);
50  
51  	abstract protected void refreshContent(Composite parent, Node entity);
52  }