/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/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/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/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; |
} |