workspace/src/main/java/org/gcube/portlets/user/workspace/client/view/GxtDetailsContainer.java

234 lines
6.9 KiB
Java

package org.gcube.portlets.user.workspace.client.view;
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.Text;
import com.extjs.gxt.ui.client.widget.VerticalPanel;
import com.extjs.gxt.ui.client.widget.Viewport;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
import com.extjs.gxt.ui.client.widget.form.TextArea;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.layout.FormData;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
/**
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
*
*/
public class GxtDetailsContainer extends Viewport{
private TextField<String> txfName = new TextField<String>();
private TextArea txtDescription = new TextArea();
private Text txtLabelOwner = new Text("Owner:");
private Text txtLabelCreationTime = new Text("Creation Time:");
private Text txtLabelDimension = new Text("Dimension:");
private Text txtOwner = new Text("Empty");
private Text txtCreationTime = new Text("Empty");
private Text txtDimension = new Text("Empty");
private ContentPanel west = new ContentPanel();
private ContentPanel center = new ContentPanel();
public GxtDetailsContainer(){
this.initBorderLayout();
this.initItemsPropertiesLayout();
this.initItemsDetailsLayout();
}
private void initItemsDetailsLayout() {
LayoutContainer itemsDetails = new LayoutContainer();
itemsDetails.setLayout(new ColumnLayout());
VerticalPanel vp = new VerticalPanel();
vp.setStyleAttribute("padding", "5px");
vp.setLayout(new FitLayout());
Text txtTitle = new Text("Items-Details");
txtTitle.setStyleAttribute("font-weight", "bold");
vp.add(txtTitle);
LayoutContainer left = new LayoutContainer();
left.setStyleAttribute("paddingRight", "20px");
HorizontalPanel hpOwner = new HorizontalPanel();
hpOwner.setSpacing(5);
txtLabelOwner.setStyleAttribute("padding-left", "5px");
hpOwner.add(txtLabelOwner);
hpOwner.add(txtOwner);
HorizontalPanel hpCreationTime = new HorizontalPanel();
hpCreationTime.setSpacing(5);
txtLabelCreationTime.setStyleAttribute("padding-left", "5px");
hpCreationTime.add(txtLabelCreationTime);
hpCreationTime.add(txtCreationTime);
HorizontalPanel hpDimension = new HorizontalPanel();
hpDimension.setSpacing(5);
txtLabelDimension.setStyleAttribute("padding-left", "5px");
hpDimension.add(txtLabelDimension);
hpDimension.add(txtDimension);
LayoutContainer right = new LayoutContainer();
right.setStyleAttribute("paddingLeft", "20px");
itemsDetails.add(left, new ColumnData(.5));
itemsDetails.add(right, new ColumnData(.5));
vp.add(hpOwner);
vp.add(hpCreationTime);
vp.add(hpDimension);
vp.add(itemsDetails);
center.add(vp);
}
private void initBorderLayout(){
BorderLayout bl = new BorderLayout();
setLayout(bl);
west.setHeaderVisible(false);
BorderLayoutData westData = new BorderLayoutData(LayoutRegion.WEST, 400);
westData.setCollapsible(false);
westData.setFloatable(false);
westData.setSplit(false);
westData.setMargins(new Margins(3, 0, 3, 3));
center.setHeaderVisible(false);
BorderLayoutData centerData = new BorderLayoutData(LayoutRegion.CENTER);
centerData.setMargins(new Margins(3));
centerData.setCollapsible(false);
centerData.setFloatable(true);
centerData.setSplit(true);
add(west, westData);
add(center, centerData);
}
private void initItemsPropertiesLayout() {
LayoutContainer itemsDetails = new LayoutContainer();
itemsDetails.setLayout(new ColumnLayout());
VerticalPanel vp = new VerticalPanel();
vp.setStyleAttribute("padding", "5px");
vp.setLayout(new FitLayout());
Text txtTitle = new Text("Items-Properties");
txtTitle.setStyleAttribute("font-weight", "bold");
vp.add(txtTitle);
FormPanel formPanel = new FormPanel();
// formPanel.setFrame(true);
formPanel.setHeaderVisible(false);
formPanel.setBodyBorder(false);
FormData formData = new FormData("100%");
LayoutContainer left = new LayoutContainer();
left.setStyleAttribute("paddingRight", "20px");
FormLayout layout = new FormLayout();
layout.setLabelAlign(LabelAlign.TOP);
// layout.setLabelWidth(40);
left.setLayout(layout);
// txtName.setEnabled(false);
txfName.setReadOnly(true);
txfName.setFieldLabel("Name");
left.add(txfName, formData);
LayoutContainer right = new LayoutContainer();
right.setStyleAttribute("paddingLeft", "20px");
layout = new FormLayout();
// layout.setLabelWidth(40);
layout.setLabelAlign(LabelAlign.TOP);
right.setLayout(layout);
// txtDescription.setEnabled(false);
txtDescription.setReadOnly(true);
txtDescription.setHeight(50);
txtDescription.setFieldLabel("Description");
right.add(txtDescription, formData);
itemsDetails.add(left, new ColumnData(.5));
itemsDetails.add(right, new ColumnData(.5));
formPanel.add(itemsDetails,new FormData("100%"));
west.add(vp);
west.add(formPanel);
}
public TextField<String> getTxtName() {
return txfName;
}
public void setTxtName(TextField<String> txtName) {
this.txfName = txtName;
}
public TextArea getTxtDescription() {
return txtDescription;
}
public void setTxtDescription(TextArea txtDescription) {
this.txtDescription = txtDescription;
}
public Text getTxtOwner() {
return txtOwner;
}
public void setTxtOwner(Text txtOwner) {
this.txtOwner = txtOwner;
}
public Text getTxtCreationTime() {
return txtCreationTime;
}
public void setTxtCreationTime(Text txtCreationTime) {
this.txtCreationTime = txtCreationTime;
}
public Text getTxtDimension() {
return txtDimension;
}
public void setTxtDimension(Text txtDimension) {
this.txtDimension = txtDimension;
}
public void resetDetails(){
this.txtDimension.setText("");
this.txtCreationTime.setText("");
this.txfName.reset();
this.txtDescription.reset();
this.txtOwner.setText("");
}
public void setDetails(String itemName, String description, String dimension, String creationTime, String owner){
this.resetDetails();
this.txtDimension.setText(dimension);
this.txtCreationTime.setText(creationTime);
this.txfName.setValue(itemName);
this.txtDescription.setValue(description);
this.txtOwner.setText(owner);
}
}