Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 50 → Rev 51

/trunk/src/org/tela_botanica/client/CoelMediateur.java
File deleted
/trunk/src/org/tela_botanica/client/interfaces/Rafraichissable.java
File deleted
/trunk/src/org/tela_botanica/client/controleurs/InstitutionControleur.java
New file
0,0 → 1,72
package org.tela_botanica.client.controleurs;
 
import java.util.List;
 
import org.tela_botanica.client.AppEvenements;
import org.tela_botanica.client.vues.InstitutionMenuVue;
import org.tela_botanica.client.vues.InstitutionVue;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.mvc.AppEvent;
import com.extjs.gxt.ui.client.mvc.Controller;
import com.extjs.gxt.ui.client.mvc.Dispatcher;
import com.google.gwt.user.client.rpc.AsyncCallback;
 
public class InstitutionControleur extends Controller {
 
//private MailServiceAsync service;
private InstitutionMenuVue institutionMenuVue;
private InstitutionVue institutionVue;
 
public InstitutionControleur() {
registerEventTypes(AppEvenements.Init);
registerEventTypes(AppEvenements.NavInstitution);
registerEventTypes(AppEvenements.VoirInstitutionListe);
registerEventTypes(AppEvenements.VoirInstitutionDetail);
}
 
@Override
public void handleEvent(AppEvent event) {
switch (event.type) {
case AppEvenements.Init:
forwardToView(institutionMenuVue, event);
break;
case AppEvenements.NavInstitution:
forwardToView(institutionMenuVue, event);
forwardToView(institutionVue, event);
break;
case AppEvenements.VoirInstitutionListe:
//onViewMailItems(event);
break;
case AppEvenements.VoirInstitutionDetail:
forwardToView(institutionVue, event);
break;
}
}
/*
private void onViewMailItems(final AppEvent<Folder> event) {
final Folder f = event.data;
if (f != null) {
service.getMailItems(f, new AsyncCallback<List<MailItem>>() {
 
public void onSuccess(List<MailItem> result) {
AppEvent ae = new AppEvent(event.type, result);
ae.setData("folder", f);
forwardToView(institutionVue, ae);
}
 
public void onFailure(Throwable caught) {
Dispatcher.forwardEvent(AppEvenements.Error, caught);
}
 
});
}
}*/
 
public void initialize() {
//service = (MailServiceAsync) Registry.get(Mail.SERVICE);
 
institutionMenuVue = new InstitutionMenuVue(this);
institutionVue = new InstitutionVue(this);
}
}
/trunk/src/org/tela_botanica/client/controleurs/AppControleur.java
New file
0,0 → 1,61
package org.tela_botanica.client.controleurs;
 
import org.tela_botanica.client.AppEvenements;
import org.tela_botanica.client.vues.AppVue;
 
import com.extjs.gxt.ui.client.mvc.AppEvent;
import com.extjs.gxt.ui.client.mvc.Controller;
 
public class AppControleur extends Controller {
 
private AppVue appVue;
 
public AppControleur() {
registerEventTypes(AppEvenements.Init);
registerEventTypes(AppEvenements.Login);
registerEventTypes(AppEvenements.Error);
}
 
public void handleEvent(AppEvent event) {
switch (event.type) {
case AppEvenements.Init:
onInit(event);
break;
case AppEvenements.Login:
onLogin(event);
break;
case AppEvenements.Error:
onError(event);
break;
}
}
 
public void initialize() {
appVue = new AppVue(this);
}
 
protected void onError(AppEvent ae) {
System.out.println("Erreur: " + ae.data);
}
 
private void onInit(AppEvent event) {
forwardToView(appVue, event);
/*// Utilisation des services Jrest
service = (MailServiceAsync) Registry.get(Mail.SERVICE);
service.getMailFolders("darrell", new AsyncCallback<Folder>() {
public void onFailure(Throwable caught) {
Dispatcher.forwardEvent(AppEvents.Error, caught);
}
 
public void onSuccess(Folder result) {
Dispatcher.forwardEvent(AppEvents.NavMail, result);
}
});*/
 
}
 
private void onLogin(AppEvent event) {
forwardToView(appVue, event);
}
 
}
/trunk/src/org/tela_botanica/client/Coel.java
1,20 → 1,37
package org.tela_botanica.client;
 
import org.tela_botanica.client.controleurs.AppControleur;
import org.tela_botanica.client.controleurs.InstitutionControleur;
 
import com.extjs.gxt.ui.client.GXT;
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.mvc.Dispatcher;
import com.extjs.gxt.ui.client.util.Theme;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.RootPanel;
 
/**
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class Coel implements EntryPoint {
 
/**
* This is the entry point method.
*/
public void onModuleLoad() {
// Création du médiateur
CoelMediateur coelMediateur = CoelMediateur.Instance();
// Appel static au panneau principal
RootPanel.get().add(coelMediateur.getPanneauPrincipal());
}
}
public static final String APPLI_NOM = "Application Nom";
public void onModuleLoad() {
GXT.setDefaultTheme(Theme.GRAY, true);
GXT.hideLoadingPanel("loading");
Registry.register(APPLI_NOM, "Coel");
Dispatcher dispatcher = Dispatcher.get();
dispatcher.addController(new AppControleur());
//dispatcher.addController(new RechercheControleur());
dispatcher.addController(new InstitutionControleur());
//dispatcher.addController(new CollectionControleur());
//dispatcher.addController(new PersonneControleur());
//dispatcher.addController(new PublicationControleur());
dispatcher.dispatch(AppEvenements.Login);
}
}
/trunk/src/org/tela_botanica/client/vues/PanneauPrincipalVue.java
File deleted
\ No newline at end of file
/trunk/src/org/tela_botanica/client/vues/PanneauMenu.java
New file
0,0 → 1,109
package org.tela_botanica.client.vues;
 
import org.tela_botanica.client.CoelMediateur;
 
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.Style.Orientation;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Info;
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.FormPanel;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
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.FlowLayout;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
import com.extjs.gxt.ui.client.widget.layout.RowData;
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
 
public class PanneauMenu extends ContentPanel {
public PanneauMenu(CoelMediateur coelMediateur) {
setHeaderVisible(false);
setLayout(new RowLayout());
// Panneau de Recherche Globale
FormPanel simple = new FormPanel();
simple.setHeading("Recherche globale");
simple.setFrame(true);
simple.setCollapsible(true);
simple.setButtonAlign(HorizontalAlignment.CENTER);
simple.setLayout(new FlowLayout());
 
LayoutContainer main = new LayoutContainer();
//main.setWidth(450);
main.setLayout(new ColumnLayout());
LayoutContainer left = new LayoutContainer();
FormLayout layout = new FormLayout();
layout.setLabelAlign(LabelAlign.LEFT);
left.setLayout(layout);
TextField<String> first = new TextField<String>();
first.setFieldLabel("Rechercher");
left.add(first);
LayoutContainer right = new LayoutContainer();
layout = new FormLayout();
layout.setLabelAlign(LabelAlign.LEFT);
right.setLayout(layout);
Button ok = new Button("OK");
right.add(ok);
main.add(left, new ColumnData(.8));
main.add(right, new ColumnData(.2));
 
simple.add(main);
add(simple, new RowData(1, -1, new Margins(0)));
// Panneau de menu
ContentPanel panneauMenu = new ContentPanel();
panneauMenu.setHeading("Menu");
panneauMenu.setLayout(new RowLayout(Orientation.VERTICAL));
panneauMenu.setFrame(true);
panneauMenu.setCollapsible(false);
SelectionListener listener = new SelectionListener<ComponentEvent>() {
public void componentSelected(ComponentEvent ce) {
Button btn = (Button) ce.component;
//btn.disable();
Info.display("Évènement", "Chargement des '{0}' en cours.", btn.getText());
}
};
Button institution = new Button("Institutions", listener);
panneauMenu.add(institution, new RowData(20, -1, new Margins(4)));
Button collection = new Button("Collections", listener);
panneauMenu.add(collection, new RowData(20, -1, new Margins(4)));
 
Button personne = new Button("Personnes", listener);
panneauMenu.add(personne, new RowData(20, -1, new Margins(4)));
Button publication = new Button("Publications", listener);
panneauMenu.add(publication, new RowData(20, -1, new Margins(4)));
add(panneauMenu, new RowData(1, 1, new Margins(0)));
}
private void addTab(String nom) {
/*
TabItem item = new TabItem();
item.setText(nom);
item.setClosable(index != 1);
item.addText("Tab Body " + index);
item.addStyleName("pad-text");
advanced.add(item);//*/
}
}
/trunk/src/org/tela_botanica/client/vues/InstitutionMenuVue.java
New file
0,0 → 1,99
package org.tela_botanica.client.vues;
 
import org.tela_botanica.client.AppEvenements;
import org.tela_botanica.client.modeles.Folder;
 
import com.extjs.gxt.ui.client.Events;
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.binder.TreeBinder;
import com.extjs.gxt.ui.client.data.BaseTreeLoader;
import com.extjs.gxt.ui.client.data.LoadEvent;
import com.extjs.gxt.ui.client.data.Loader;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.data.TreeLoader;
import com.extjs.gxt.ui.client.data.TreeModelReader;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.LoadListener;
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
import com.extjs.gxt.ui.client.mvc.AppEvent;
import com.extjs.gxt.ui.client.mvc.Controller;
import com.extjs.gxt.ui.client.mvc.Dispatcher;
import com.extjs.gxt.ui.client.mvc.View;
import com.extjs.gxt.ui.client.store.TreeStore;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.layout.AccordionLayout;
import com.extjs.gxt.ui.client.widget.tree.Tree;
 
public class InstitutionMenuVue extends View {
 
private Tree tree;
private TreeStore<Folder> store;
private TreeBinder<Folder> binder;
private TreeLoader<Folder> loader;
 
public InstitutionMenuVue(Controller controleur) {
super(controleur);
}
 
protected void initialize() {
 
}
 
protected void initUI() {
ContentPanel panneauOuest = (ContentPanel) Registry.get(AppVue.PANNEAU_OUEST);
panneauOuest.setLayout(new AccordionLayout());
 
ContentPanel mail = new ContentPanel();
mail.setHeading("Mail");
mail.addListener(Events.Expand, new Listener<ComponentEvent>() {
public void handleEvent(ComponentEvent be) {
Dispatcher.get().dispatch(AppEvenements.NavInstitution);
}
});
 
tree = new Tree();
tree.getStyle().setLeafIconStyle("tree-folder");
 
loader = new BaseTreeLoader(new TreeModelReader());
store = new TreeStore<Folder>(loader);
 
binder = new TreeBinder<Folder>(tree, store);
binder.setDisplayProperty("name");
binder.setAutoSelect(true);
binder.addSelectionChangedListener(new SelectionChangedListener<ModelData>() {
public void selectionChanged(SelectionChangedEvent se) {
Folder f = (Folder) se.getSelection().get(0);
AppEvent evt = new AppEvent(AppEvenements.VoirInstitutionListe, f);
fireEvent(evt);
}
});
 
mail.add(tree);
 
panneauOuest.add(mail);
}
 
protected void handleEvent(AppEvent event) {
switch (event.type) {
case AppEvenements.Init:
initUI();
break;
}
 
if (event.type == AppEvenements.NavInstitution) {
Folder f = (Folder) event.data;
if (f != null) {
loader.addListener(Loader.Load, new LoadListener() {
@Override
public void loaderLoad(LoadEvent le) {
loader.removeLoadListener(this);
}
});
loader.load(f);
}
 
}
}
}
/trunk/src/org/tela_botanica/client/vues/AppVue.java
New file
0,0 → 1,115
package org.tela_botanica.client.vues;
 
import org.tela_botanica.client.AppEvenements;
import org.tela_botanica.client.widgets.IdentificationFenetre;
 
import com.extjs.gxt.ui.client.Events;
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.WindowEvent;
import com.extjs.gxt.ui.client.mvc.AppEvent;
import com.extjs.gxt.ui.client.mvc.Controller;
import com.extjs.gxt.ui.client.mvc.Dispatcher;
import com.extjs.gxt.ui.client.mvc.View;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.HtmlContainer;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
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.FitLayout;
import com.google.gwt.user.client.ui.RootPanel;
 
public class AppVue extends View {
public static final String VIEWPORT = "viewport";
public static final String PANNEAU_OUEST = "ouest";
public static final String PANNEAU_CENTRE = "centre";
private Viewport viewport;
private ContentPanel panneauOuest;
private LayoutContainer panneauCentre;
 
public AppVue(Controller controleur) {
super(controleur);
}
 
protected void initialize() {
IdentificationFenetre dialog = new IdentificationFenetre();
dialog.setClosable(false);
dialog.addListener(Events.Hide, new Listener<WindowEvent>() {
public void handleEvent(WindowEvent be) {
Dispatcher.forwardEvent(AppEvenements.Init);
}
});
dialog.show();
}
 
private void initUI() {
viewport = new Viewport();
viewport.setLayout(new BorderLayout());
 
creerPanneauNord();
creerPanneauOuest();
creerPanneauCentral();
 
// Registry utile car présent partout!
Registry.register(VIEWPORT, viewport);
Registry.register(PANNEAU_OUEST, panneauOuest);
Registry.register(PANNEAU_CENTRE, panneauCentre);
 
RootPanel.get().add(viewport);
}
 
private void creerPanneauNord() {
StringBuffer sb = new StringBuffer();
sb.append("<div id='demo-header' class='x-small-editor'><div id='demo-theme'></div><div id='demo-title'>Coellections en Ligne Demo</div></div>");
 
HtmlContainer panneauNord = new HtmlContainer(sb.toString());
panneauNord.setEnableState(false);
BorderLayoutData regionNord = new BorderLayoutData(LayoutRegion.NORTH, 100);
regionNord.setCollapsible(true);
regionNord.setFloatable(true);
regionNord.setSplit(false);
regionNord.setMargins(new Margins(5, 5, 0, 5));
viewport.add(panneauNord, regionNord);
}
 
private void creerPanneauOuest() {
BorderLayoutData regionOuest = new BorderLayoutData(LayoutRegion.WEST, 200);
regionOuest.setSplit(true);
regionOuest.setCollapsible(true);
regionOuest.setMargins(new Margins(5));
 
panneauOuest = new ContentPanel();
panneauOuest.setBodyBorder(false);
panneauOuest.setLayoutOnChange(true);
panneauOuest.setHeading("Menu");
panneauOuest.setLayout(new FitLayout());
 
viewport.add(panneauOuest, regionOuest);
}
 
private void creerPanneauCentral() {
panneauCentre = new LayoutContainer();
panneauCentre.setLayout(new FitLayout());
 
BorderLayoutData regionCentre = new BorderLayoutData(LayoutRegion.CENTER);
regionCentre.setMargins(new Margins(5, 5, 5, 0));
 
viewport.add(panneauCentre, regionCentre);
}
 
protected void handleEvent(AppEvent event) {
switch (event.type) {
case AppEvenements.Init:
initUI();
break;
 
}
}
}
/trunk/src/org/tela_botanica/client/vues/InstitutionVue.java
New file
0,0 → 1,83
package org.tela_botanica.client.vues;
 
import java.util.List;
 
import org.tela_botanica.client.AppEvenements;
import org.tela_botanica.client.modeles.Folder;
import org.tela_botanica.client.modeles.Institution;
import org.tela_botanica.client.widgets.InstitutionDetailPanneau;
import org.tela_botanica.client.widgets.InstitutionListePanneau;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.mvc.AppEvent;
import com.extjs.gxt.ui.client.mvc.Controller;
import com.extjs.gxt.ui.client.mvc.View;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
 
public class InstitutionVue extends View {
private LayoutContainer container;
private InstitutionListePanneau panneauInstitutionListe;
private InstitutionDetailPanneau panneauInstitutionDetail;
 
public InstitutionVue(Controller controleur) {
super(controleur);
}
 
protected void handleEvent(AppEvent event) {
if (event.type == AppEvenements.NavInstitution) {
LayoutContainer wrapper = (LayoutContainer) Registry.get(AppVue.PANNEAU_CENTRE);
wrapper.removeAll();
wrapper.add(container);
wrapper.layout();
}
 
if (event.type == AppEvenements.VoirInstitutionListe) {
LayoutContainer wrapper = (LayoutContainer) Registry.get(AppVue.PANNEAU_CENTRE);
 
Folder f = (Folder) event.getData("folder");
panneauInstitutionListe.setHeading(f.getName());
 
ListStore<Institution> store = panneauInstitutionListe.getStore();
store.removeAll();
store.add((List) event.data);
 
wrapper.layout();
 
List items = (List) event.data;
if (items.size() > 0) {
panneauInstitutionListe.getBinder().setSelection((Institution) items.get(0));
} else {
panneauInstitutionDetail.showItem(null);
}
}
 
if (event.type == AppEvenements.VoirInstitutionDetail) {
Institution item = (Institution) event.data;
panneauInstitutionDetail.showItem(item);
}
}
 
@Override
protected void initialize() {
container = new LayoutContainer();
 
BorderLayout layout = new BorderLayout();
layout.setEnableState(false);
container.setLayout(layout);
 
panneauInstitutionListe = new InstitutionListePanneau();
container.add(panneauInstitutionListe, new BorderLayoutData(LayoutRegion.CENTER));
 
panneauInstitutionDetail = new InstitutionDetailPanneau();
BorderLayoutData southData = new BorderLayoutData(LayoutRegion.SOUTH, .5f, 200, 1000);
southData.setSplit(true);
southData.setMargins(new Margins(5, 0, 0, 0));
container.add(panneauInstitutionDetail, southData);
}
 
}
/trunk/src/org/tela_botanica/client/widgets/IdentificationFenetre.java
New file
0,0 → 1,118
package org.tela_botanica.client.widgets;
 
/*
* Ext GWT - Ext for GWT
* Copyright(c) 2007, 2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.KeyListener;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.button.StatusButtonBar;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
import com.google.gwt.user.client.Timer;
 
public class IdentificationFenetre extends Dialog {
 
protected StatusButtonBar buttonBar;
protected TextField<String> userName;
protected TextField<String> password;
protected Button reset;
protected Button login;
 
public IdentificationFenetre() {
FormLayout layout = new FormLayout();
layout.setLabelWidth(90);
layout.setDefaultWidth(155);
setLayout(layout);
 
setButtons("");
setIconStyle("user");
setHeading("Collections en ligne - Identification");
setModal(true);
setBodyBorder(true);
setBodyStyle("padding: 10px;background: none");
setWidth(300);
setResizable(false);
 
KeyListener keyListener = new KeyListener() {
public void componentKeyUp(ComponentEvent event) {
validate();
}
 
};
 
userName = new TextField<String>();
userName.setMinLength(4);
userName.setFieldLabel("Courriel");
userName.addKeyListener(keyListener);
add(userName);
 
password = new TextField<String>();
password.setMinLength(4);
password.setPassword(true);
password.setFieldLabel("Mot de passe");
password.addKeyListener(keyListener);
add(password);
 
setFocusWidget(userName);
 
buttonBar = new StatusButtonBar();
setButtonBar(buttonBar);
 
}
 
@Override
protected void createButtons() {
reset = new Button("Réinitialiser");
reset.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
userName.reset();
password.reset();
validate();
userName.focus();
}
 
});
 
login = new Button("Valider");
login.disable();
login.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
onSubmit();
}
});
 
buttonBar.add(reset);
buttonBar.add(login);
}
 
protected void onSubmit() {
buttonBar.getStatusBar().showBusy("Chargement en cours ...");
buttonBar.disable();
Timer t = new Timer() {
 
@Override
public void run() {
IdentificationFenetre.this.hide();
}
 
};
t.schedule(2000);
}
 
protected boolean hasValue(TextField<String> field) {
return field.getValue() != null && field.getValue().length() > 0;
}
 
protected void validate() {
login.setEnabled(hasValue(userName) && hasValue(password) && password.getValue().length() > 3);
}
 
}
/trunk/src/org/tela_botanica/client/widgets/InstitutionListePanneau.java
New file
0,0 → 1,81
package org.tela_botanica.client.widgets;
 
import java.util.ArrayList;
import java.util.List;
 
import org.tela_botanica.client.AppEvenements;
import org.tela_botanica.client.modeles.Institution;
 
import com.extjs.gxt.ui.client.Style.SelectionMode;
import com.extjs.gxt.ui.client.binder.TableBinder;
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
import com.extjs.gxt.ui.client.mvc.AppEvent;
import com.extjs.gxt.ui.client.mvc.Dispatcher;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.table.Table;
import com.extjs.gxt.ui.client.widget.table.TableColumn;
import com.extjs.gxt.ui.client.widget.table.TableColumnModel;
import com.extjs.gxt.ui.client.widget.toolbar.TextToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
 
public class InstitutionListePanneau extends ContentPanel {
private Table table;
private ListStore<Institution> store;
private TableBinder<Institution> binder;
 
public InstitutionListePanneau() {
ToolBar toolBar = new ToolBar();
TextToolItem create = new TextToolItem("Create");
create.setIconStyle("icon-email-add");
toolBar.add(create);
 
TextToolItem reply = new TextToolItem("Reply");
reply.setIconStyle("icon-email-reply");
toolBar.add(reply);
 
setTopComponent(toolBar);
 
List<TableColumn> columns = new ArrayList<TableColumn>();
columns.add(new TableColumn("sender", "Sender", .2f));
columns.add(new TableColumn("email", "Email", .3f));
columns.add(new TableColumn("subject", "Subject", .5f));
 
TableColumnModel cm = new TableColumnModel(columns);
 
table = new Table(cm);
table.setSelectionMode(SelectionMode.MULTI);
table.setBorders(false);
 
add(table);
 
store = new ListStore<Institution>();
 
binder = new TableBinder<Institution>(table, store);
binder.setAutoSelect(true);
binder.addSelectionChangedListener(new SelectionChangedListener<Institution>() {
public void selectionChanged(SelectionChangedEvent<Institution> event) {
Institution m = event.getSelectedItem();
showMailItem(m);
}
});
 
setLayout(new FitLayout());
}
 
public ListStore<Institution> getStore() {
return store;
}
 
public TableBinder<Institution> getBinder() {
return binder;
}
 
private void showMailItem(Institution item) {
AppEvent evt = new AppEvent(AppEvenements.VoirInstitutionDetail, item);
Dispatcher.forwardEvent(evt);
}
}
/trunk/src/org/tela_botanica/client/widgets/InstitutionDetailPanneau.java
New file
0,0 → 1,55
package org.tela_botanica.client.widgets;
 
import org.tela_botanica.client.modeles.Institution;
 
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.util.Format;
import com.extjs.gxt.ui.client.util.Params;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Html;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
 
public class InstitutionDetailPanneau extends ContentPanel {
 
private ContentPanel content;
private Html header;
private String headerHTML = "<div class=mail-item-detail><h1>{0}</h1><h2><b>From:</b> {1}</h2><h3><b>To:</b> {2}</h3></div>";
 
public InstitutionDetailPanneau() {
setHeaderVisible(false);
setLayout(new FitLayout());
 
content = new ContentPanel();
content.setBodyBorder(false);
content.setHeaderVisible(false);
content.setScrollMode(Scroll.AUTO);
 
header = new Html();
header.setStyleName("mail-item-detail");
content.setTopComponent(header);
 
add(content);
}
 
public void showItem(Institution item) {
if (item != null) {
Params p = new Params();
p.add(item.getSubject());
p.add(item.getSender());
p.add(item.getEmail());
 
String s = Format.substitute(headerHTML, p);
header.getElement().setInnerHTML(s);
 
content.removeAll();
content.addText("<div style='padding: 12px;font-size: 12px'>" + item.getBody() + "</div>");
 
layout();
 
} else {
header.setHtml("");
content.removeAll();
}
}
 
}
/trunk/src/org/tela_botanica/client/modeles/Institution.java
New file
0,0 → 1,49
package org.tela_botanica.client.modeles;
 
import com.extjs.gxt.ui.client.data.BaseModel;
 
public class Institution extends BaseModel {
 
public Institution() {
 
}
 
public Institution(String sender, String email, String subject) {
setSender(sender);
setEmail(email);
setSubject(subject);
}
 
public Institution(String sender, String email, String subject, String body) {
this(sender, email, subject);
set("body", body);
}
 
public String getSender() {
return (String) get("sender");
}
 
public void setSender(String sender) {
set("sender", sender);
}
 
public void setEmail(String email) {
set("email", email);
}
 
public String getEmail() {
return (String) get("email");
}
 
public String getBody() {
return (String) get("body");
}
 
public void setSubject(String subject) {
set("subject", subject);
}
 
public String getSubject() {
return (String) get("subject");
}
}
/trunk/src/org/tela_botanica/client/modeles/Folder.java
New file
0,0 → 1,33
package org.tela_botanica.client.modeles;
 
import java.io.Serializable;
 
import com.extjs.gxt.ui.client.data.BaseTreeModel;
import com.extjs.gxt.ui.client.data.TreeModel;
 
public class Folder extends BaseTreeModel<TreeModel> implements Serializable {
 
public Folder() {
 
}
 
public Folder(String name) {
set("name", name);
}
 
public Folder(String name, BaseTreeModel[] children) {
this(name);
for (int i = 0; i < children.length; i++) {
add(children[i]);
}
}
 
public String getName() {
return (String) get("name");
}
 
public String toString() {
return getName();
}
 
}
/trunk/src/org/tela_botanica/client/AppEvenements.java
New file
0,0 → 1,23
package org.tela_botanica.client;
 
public class AppEvenements {
 
public static final int Init = 0;
 
public static final int Login = 2;
 
public static final int Error = 5;
 
public static final int NavInstitution = 10;
 
public static final int NavTasks = 20;
 
public static final int NavContacts = 30;
 
public static final int ViewMailFolders = 12;
 
public static final int VoirInstitutionListe = 14;
 
public static final int VoirInstitutionDetail = 16;
 
}