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

263 lines
7.9 KiB
Java

package org.gcube.portlets.user.workspace.client.view.panels;
import org.gcube.portlets.user.workspace.client.model.ScopeModel;
import org.gcube.portlets.user.workspace.client.view.GxtComboBox;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.util.Padding;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
import com.extjs.gxt.ui.client.widget.Label;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.TabItem;
import com.extjs.gxt.ui.client.widget.TabPanel;
import com.extjs.gxt.ui.client.widget.Text;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.extjs.gxt.ui.client.widget.form.DateField;
import com.extjs.gxt.ui.client.widget.form.FormButtonBinding;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.SimpleComboBox;
import com.extjs.gxt.ui.client.widget.form.TextField;
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.RowLayout;
import com.extjs.gxt.ui.client.widget.layout.VBoxLayout;
import com.extjs.gxt.ui.client.widget.layout.VBoxLayout.VBoxLayoutAlign;
import com.extjs.gxt.ui.client.widget.layout.VBoxLayoutData;
import com.google.gwt.user.client.Window;
/**
* This class is not used
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
*
*/
public class GxtBasicTabPanel extends LayoutContainer {
//Tab View
private TabItem tabView = null;
private TabItem tabSearch = null;
private TabPanel tabPanel = null;
private Text txtPath = new Text("PATH:");
private Label labelPath = new Label("");
private GxtComboBox comboBoxGxt = null;
private ComboBox<ScopeModel> cbViewScope = null;
// private Text txtSwitch = new Text("Explorer View:");
private Text txtViewScope = new Text("View Scope:");
public enum viewSwitchType {TREE,SHORTCUT};
private final String EMPTY = "EMPTY";
//Tab Search
private final TextField<String> textSearch = new TextField<String>();
private Button bSearch = new Button("Search");
private Button bCancel = new Button("Cancel");
private TextField<String> textFull = new TextField<String>();
private DateField fromDate = new DateField();
private DateField toDate = new DateField();
private final String FIELDVALIDATEERROR = "The field must be alphanumeric";
private SimpleComboBox<String> cbNameFilter = null;
// TableData tdContentView = null;
public GxtBasicTabPanel() {
// Log.trace("Initializing GxtBasicTabPanel");
setLayout(new FitLayout());
setBorders(true);
setId("ContentPanelTab");
this.tabPanel = new TabPanel();
this.tabView = new TabItem("View");
this.tabSearch = new TabItem("Search");
this.comboBoxGxt = new GxtComboBox();
this.cbViewScope = this.comboBoxGxt.getComboViewScope();
this.cbNameFilter = this.comboBoxGxt.getComboStringFilter();
this.initTabView();
this.initTabSearch();
}
private void initTabView() {
ContentPanel cp = new ContentPanel();
cp.setHeaderVisible(false);
cp.setLayout(new RowLayout());
cp.setBorders(false);
cp.setBodyBorder(false);
// cp.setStyleAttribute("margin-top", "20px");
tabPanel.setBorders(false);
tabPanel.setBodyBorder(false);
tabPanel.setStyleAttribute("margin-top", "10px");
tabPanel.setTabMargin(10);
tabPanel.setTabWidth(250);
tabPanel.setBorderStyle(false);
tabPanel.setPlain(true);
VBoxLayout vBoxLayout = new VBoxLayout();
vBoxLayout.setPadding(new Padding(5));
vBoxLayout.setVBoxLayoutAlign(VBoxLayoutAlign.LEFT);
VBoxLayoutData flex = new VBoxLayoutData(new Margins(30, 10, 10, 10));
txtPath.addStyleName("pad-text");
txtPath.setStyleAttribute("backgroundColor", "white");
txtPath.setAutoWidth(true);
HorizontalPanel hpPath = new HorizontalPanel();
hpPath.setLayout(new FitLayout());
hpPath.setBorders(true);
hpPath.add(txtPath);
this.labelPath.setEnabled(false);
this.setLabelPath("");
this.labelPath.setStyleAttribute("margin-left", "20px");
hpPath.add(this.labelPath);
HorizontalPanel hpScope = new HorizontalPanel();
hpScope.setLayout(new FitLayout());
hpScope.add(txtViewScope);
//Select in combo the first element of store
this.cbViewScope.addListener(Events.Attach, new Listener<BaseEvent>(){
public void handleEvent(BaseEvent be) {
cbViewScope.setValue(cbViewScope.getStore().getAt(0));
}
});
this.cbViewScope.addSelectionChangedListener(new SelectionChangedListener<ScopeModel>() {
@Override
public void selectionChanged(SelectionChangedEvent<ScopeModel> se) {
}
});
this.cbViewScope.setStyleAttribute("margin-left", "20px");
hpScope.add(this.cbViewScope);
cp.add(hpPath,flex);
cp.add(hpScope,flex);
// cp.add(hpRadio, flex);
this.tabView.add(cp);
tabPanel.add(tabView);
add(tabPanel);
}
private void initTabSearch() {
ContentPanel cp = new ContentPanel();
cp.setHeaderVisible(false);
cp.setLayout(new RowLayout());
cp.setBorders(false);
cp.setBodyBorder(false);
FormPanel formPanel = new FormPanel();
formPanel.setHeaderVisible(false);
formPanel.setBodyBorder(false);
// formPanel.setFrame(true);
formPanel.setWidth(350);
FormData formData = new FormData("-20");
cbNameFilter.setFieldLabel("Name Filter");
// combo.setDisplayField("name");
formPanel.add(cbNameFilter, formData);
textSearch.setFieldLabel("Item Name");
textSearch.setAllowBlank(false);
textSearch.setRegex("^[ a-zA-Z0-9_-]*$");
// textSearch.getMessages().setRegexText(FIELDVALIDATEERROR);
formPanel.add(textSearch, formData);
fromDate.setName("date");
fromDate.setFieldLabel("From");
formPanel.add(fromDate);
toDate.setName("date");
toDate.setFieldLabel("To");
formPanel.add(toDate);
textFull.setFieldLabel("Full Text");
textFull.setAllowBlank(true);
formPanel.add(textFull, formData);
this.tabSearch.add(formPanel);
bSearch.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
if (textSearch.getValue() == null || textSearch.getValue() == "" || !textSearch.isValid()) {
// textSearch.fireEvent(Events.ValidateEdit);
textSearch.markInvalid(FIELDVALIDATEERROR);
// textSearch.forceInvalid("The field must be alphanumeric");
} else {
Window.alert("submit"); //TODO aysnc ws
// HistoryExample.addItem("search");
}
}
});
this.bCancel.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
resetFieldsInTabSearch();
}
});
formPanel.setButtonAlign(HorizontalAlignment.LEFT);
formPanel.addButton(this.bSearch);
formPanel.addButton(this.bCancel);
FormButtonBinding binding = new FormButtonBinding(formPanel);
binding.addButton(this.bSearch);
tabPanel.add(tabSearch);
add(tabPanel);
}
public void resetFieldsInTabSearch(){
this.textSearch.reset();
this.textFull.reset();
this.fromDate.reset();
this.toDate.reset();
this.cbNameFilter.reset();
}
public LayoutContainer getTabs() {
return this;
}
public String getValueComboNameFilter(){
return this.cbViewScope.getRawValue();
}
public void setLabelPath(String path){
if(path != null && !path.isEmpty())
this.labelPath.setText(path);
else
this.labelPath.setText(EMPTY);
}
}