Sure... But beware, it still is pretty large
. Thanks for trying!!
Code:
package com.tensegrity.blueview.client;
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.ContentPanel;
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.Viewport;
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.MarginData;
import com.extjs.gxt.ui.client.widget.layout.RowData;
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.RootPanel;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class BlueViewBug implements EntryPoint {
private ContentPanel editorpanel;
private LayoutContainer viewport;
private static Viewport contentPane = null;
/**
* This is the entry point method.
*/
public void onModuleLoad() {
contentPane = new Viewport();
contentPane.setMonitorWindowResize(true);
contentPane.setSize("100%", "100%");
RootPanel.get().add(contentPane);
String par = Window.Location.getParameter("options");
boolean hideTitle = false;
boolean hideToolbar = false;
if (par != null) {
hideToolbar = par.indexOf("htb") != -1;
hideTitle = par.indexOf("hti") != -1;
}
RowLayout layout = new RowLayout();
ContentPanel content = new ContentPanel(layout);
content.setBodyBorder(false);
content.setHeaderVisible(false);
content.setCollapsible(false);
content.setScrollMode(Scroll.AUTO);
final boolean ht = hideTitle;
TabPanel panel = new TabPanel(){
protected void onRender(Element target, int index) {
super.onRender(target, index);
if (ht) {
el().getChild(0).removeFromParent();
}
}
};
panel.setTabScroll(true);
content.add(panel, new RowData(1, 1));
editorpanel = new ContentPanel();
editorpanel.setHeaderVisible(true);
editorpanel.setHeading("Views");
editorpanel.setMonitorWindowResize(true);
editorpanel.setLayoutOnChange(true);
editorpanel.setLayout(new RowLayout());
viewport = new LayoutContainer();
viewport.setSize("100%", "100%");
viewport.setLayout(new BorderLayout());
viewport.setMonitorWindowResize(true);
BorderLayoutData data = new BorderLayoutData(LayoutRegion.CENTER);
data.setMinSize(200);
data.setMargins(new Margins(5));
viewport.add(editorpanel, data);
contentPane.setVisible(false);
contentPane.removeAll();
contentPane.add(viewport, new MarginData(0));
contentPane.setVisible(true);
contentPane.layout();
editorpanel.add(content, new RowData(1, 1));
TabItem item = new TabItem("View");
item.setLayoutOnChange(true);
item.setLayout(new RowLayout());
item.setText("View");
item.setAutoHeight(true);
item.setAutoWidth(true);
item.setDeferHeight(true);
CubeViewEditor cve = new CubeViewEditor(hideToolbar);
cve.setWidth("100%");
cve.setHeight("100%");
item.add(cve);
cve.initialize();
item.setId("id0");
item.setClosable(true);
panel.add(item);
}
}
package com.tensegrity.blueview.client;
import com.extjs.gxt.ui.client.Events;
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.Style.Orientation;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.LabelField;
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.RowLayout;
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.TextToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.ToggleToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.Label;
public class CubeViewEditor extends LayoutContainer {
private final boolean hideToolbar;
public CubeViewEditor(boolean hideToolbar) {
this.hideToolbar = hideToolbar;
setLayout(new BorderLayout());
setMonitorWindowResize(true);
}
public void initialize() {
initDimensionPanel();
initViewPanel();
}
private final void initViewPanel() {
BorderLayoutData layoutData = new BorderLayoutData(LayoutRegion.CENTER);
layoutData.setSize(1.0f);
layoutData.setCollapsible(false);
layoutData.setFloatable(false);
layoutData.setHidden(false);
ContentPanel viewPanel = new ContentPanel();
viewPanel.clearState();
viewPanel.setLayout(new RowLayout());
viewPanel.setCollapsible(false);
viewPanel.setHideCollapseTool(true);
viewPanel.setHeading("View test");
ToolBar toolbar = new ToolBar();
TextToolItem save = new TextToolItem();
save.setId("SAVE");
save.setIconStyle("ten-icons-save");
save.setToolTip("Save view");
TextToolItem saveAs = new TextToolItem();
saveAs.setId("SAVE_AS");
saveAs.setIconStyle("ten-icons-save-as");
saveAs.setToolTip("Save view as...");
TextToolItem print = new TextToolItem();
print.setId("PRINT");
print.setIconStyle("ten-icons-print");
print.setToolTip("Print view");
ToggleToolItem hideEmptyCells = new ToggleToolItem();
hideEmptyCells.setId("HIDE_EMPTY");
hideEmptyCells.setIconStyle("ten-icons-hideEmpty");
hideEmptyCells.setToolTip("Hide empty rows and columns");
toolbar.add(hideEmptyCells);
ToggleToolItem reverseColumns = new ToggleToolItem();
reverseColumns.setId("REV_COLS");
reverseColumns.setIconStyle("ten-icons-reverseCols");
reverseColumns.setToolTip("Reverse display of expanded columns");
toolbar.add(reverseColumns);
// ~
ToggleToolItem reverseRows = new ToggleToolItem();
reverseRows.setId("REV_ROWS");
reverseRows.setIconStyle("ten-icons-reverseRows");
reverseRows.setToolTip("Reverse display of expanded rows");
toolbar.add(reverseRows);
ToggleToolItem showRules = new ToggleToolItem();
showRules.setId("SHOW_RULES");
showRules.setIconStyle("ten-icons-viewRules");
showRules.setToolTip("Mark cells that include rules");
toolbar.add(showRules);
toolbar.add(new SeparatorToolItem());
TextToolItem txtItem = new TextToolItem();
txtItem.setId("REFRESH");
txtItem.setIconStyle("icon-refresh-on");
txtItem.setToolTip("Refresh data");
toolbar.add(txtItem);
if (hideToolbar) {
viewPanel.setTopComponent(new LabelField(""));
} else {
viewPanel.setTopComponent(toolbar);
}
viewPanel.setHeaderVisible(false);
viewPanel.setLayoutData(viewPanel, layoutData);
add(viewPanel, new BorderLayoutData(LayoutRegion.CENTER));
viewPanel.expand();
}
private final void initRepositoryContainer() {
AbsolutePanel repositoryContainer = new AbsolutePanel();
repositoryContainer.setStyleName("static-filter");
Label emptyLabel = new Label("Drop to fill static filters");
emptyLabel.setStyleName("empty-label");
DOM.setStyleAttribute(emptyLabel.getElement(), "textAlign", "center");
}
private final void initDimensionPanel() {
BorderLayoutData dimRepoLayoutData = new BorderLayoutData(LayoutRegion.WEST);
dimRepoLayoutData.setMargins(new Margins(0,5,0,0));
dimRepoLayoutData.setSplit(true);
dimRepoLayoutData.setCollapsible(true);
dimRepoLayoutData.setFloatable(false); //true);
dimRepoLayoutData.setSize(160);
dimRepoLayoutData.setMinSize(40);
dimRepoLayoutData.setMinSize(220);
ContentPanel dimRepository = new ContentPanel();
dimRepository.setLayoutOnChange(true);
dimRepository.setScrollMode(Scroll.AUTOY);
dimRepository.setLayout(new RowLayout(Orientation.VERTICAL));
dimRepository.setHeight("100%");
dimRepository.setData("layout_region", LayoutRegion.WEST);
dimRepository.sinkEvents(Events.BeforeExpand);
dimRepository.addListener(Events.BeforeExpand, new Listener(){
public void handleEvent(BaseEvent be) {
be.doit = false;
}
});
dimRepository.setVisible(false);
initRepositoryContainer();
}
}