package net.autosauler.ballance.client.gui;
import java.util.ArrayList;
import java.util.List;
import net.autosauler.ballance.client.gui.messages.M;
import net.autosauler.ballance.client.model.DocumentationModel;
import com.extjs.gxt.ui.client.Style.SelectionMode;
import com.extjs.gxt.ui.client.event.MenuEvent;
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.store.ListStore;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.menu.Menu;
import com.extjs.gxt.ui.client.widget.menu.MenuBar;
import com.extjs.gxt.ui.client.widget.menu.MenuBarItem;
import com.extjs.gxt.ui.client.widget.menu.MenuItem;
public class DocumentationPanel extends ContentPanel implements IPaneWithMenu,
IReloadMsgReceiver {
private static DocumentationPanel impl = null;
public static DocumentationPanel get() {
if (impl == null) {
impl = new DocumentationPanel();
}
return impl;
}
private Grid<DocumentationModel> grid;
private ListStore<DocumentationModel> store;
private GridSelectionModel<DocumentationModel> sm;
/**
* Instantiates a new users panel.
*/
private DocumentationPanel() {
super(new FitLayout());
setHeaderVisible(false);
buildPane();
}
private void buildPane() {
sm = new GridSelectionModel<DocumentationModel>();
sm.setSelectionMode(SelectionMode.SINGLE);
sm.addSelectionChangedListener(new SelectionChangedListener<DocumentationModel>() {
@Override
public void selectionChanged(
SelectionChangedEvent<DocumentationModel> se) {
DocumentationModel record = se.getSelectedItem();
if ((record != null) && (record.get("name") != null)) {
new DocumentationEditor((String) record.get("name"),
DocumentationPanel.this);
sm.deselectAll();
}
}
});
List<ColumnConfig> columns = new ArrayList<ColumnConfig>();
ColumnConfig column = new ColumnConfig();
column = new ColumnConfig();
column.setId("name");
column.setHeader("Documentation name");
column.setWidth(150);
column.setRowHeader(true);
columns.add(column);
ColumnModel cm = new ColumnModel(columns);
store = new ListStore<DocumentationModel>();
reloadList();
grid = new Grid<DocumentationModel>(store, cm);
grid.setSelectionModel(sm);
grid.setAutoExpandColumn("name");
grid.setBorders(true);
add(grid);
}
@Override
public List<MenuItem> getHelpItems() {
return null;
}
@Override
public MenuBar getPaneMenu() {
MenuBar menubar = new MenuBar();
Menu menu = new Menu();
menu.add(new MenuItem("Create new", new SelectionListener<MenuEvent>() {
@Override
public void componentSelected(MenuEvent ce) {
sm.deselectAll();
new DocumentationEditor("", DocumentationPanel.this);
}
}));
menu.add(new MenuItem(M.structure.menuReload(),
new SelectionListener<MenuEvent>() { // reload users list
@Override
public void componentSelected(MenuEvent ce) {
loadList();
}
}));
menubar.add(new MenuBarItem(M.menu.itemDocumentation(), menu));
return menubar;
}
protected void loadList() {
store.removeAll();
DocumentationModel.load(store);
sm.deselectAll();
}
@Override
public void reloadList() {
loadList();
}
}