package demo5.client;
import java.util.*;
import org.openswing.swing.mdi.client.*;
import org.openswing.swing.util.client.ClientSettings;
import org.openswing.swing.internationalization.java.EnglishOnlyResourceFactory;
import org.openswing.swing.util.client.*;
import org.openswing.swing.permissions.client.*;
import java.awt.Image;
import javax.swing.*;
import org.openswing.swing.internationalization.java.Language;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.DefaultMutableTreeNode;
import org.openswing.swing.mdi.java.ApplicationFunction;
import org.openswing.swing.internationalization.java.XMLResourcesFactory;
import org.openswing.swing.domains.java.Domain;
import org.openswing.swing.internationalization.java.*;
import org.openswing.swing.message.receive.java.*;
import org.openswing.swing.permissions.java.ButtonsAuthorizations;
import org.openswing.swing.message.receive.java.UserAuthorizationsResponse;
/**
* <p>Title: OpenSwing Demo</p>
* <p>Description: Used to start application from main method:
* it creates an MDI Frame web app.</p>
* <p>Copyright: Copyright (C) 2006 Mauro Carniel</p>
* <p> </p>
* @author Mauro Carniel
* @version 1.0
*/
public class ClientApplication implements MDIController,LoginController {
private DemoClientFacade clientFacade = null;
private Hashtable domains = new Hashtable();
private String username = null;
public ClientApplication() {
ClientUtils.setObjectSender(new HessianObjectSender());
clientFacade = new DemoClientFacade();
LoginDialog d = new LoginDialog(null,false,this);
}
/**
* @return client facade, invoked by the MDI Frame tree/menu
*/
public ClientFacade getClientFacade() {
return clientFacade;
}
/**
* Method used to destroy application.
*/
public void stopApplication() {
ClientUtils.getData("closeApplication",Boolean.TRUE);
System.exit(0);
}
/**
* Defines if application functions must be viewed inside a tree panel of MDI Frame.
* @return <code>true</code> if application functions must be viewed inside a tree panel of MDI Frame, <code>false</code> no tree is viewed
*/
public boolean viewFunctionsInTreePanel() {
return true;
}
/**
* Defines if application functions must be viewed in the menubar of MDI Frame.
* @return <code>true</code> if application functions must be viewed in the menubar of MDI Frame, <code>false</code> otherwise
*/
public boolean viewFunctionsInMenuBar() {
return true;
}
/**
* @return <code>true</code> if the MDI frame must show a login menu in the menubar, <code>false</code> no login menu item will be added
*/
public boolean viewLoginInMenuBar() {
return true;
}
/**
* @return application title
*/
public String getMDIFrameTitle() {
return "Demo";
}
/**
* @return text to view in the about dialog window
*/
public String getAboutText() {
return
"This is an MDI Frame demo application\n"+
"\n"+
"Copyright: Copyright (C) 2006 Mauro Carniel\n"+
"Author: Mauro Carniel";
}
/**
* @return image name to view in the about dialog window
*/
public String getAboutImage() {
return "about.jpg";
}
/**
* @param parentFrame parent frame
* @return a dialog window to logon the application; the method can return null if viewLoginInMenuBar returns false
*/
public JDialog viewLoginDialog(JFrame parentFrame) {
JDialog d = new LoginDialog(parentFrame,true,this);
return d;
}
/**
* @return maximum number of failed login
*/
public int getMaxAttempts() {
return 3;
}
/**
* Method called by MDI Frame to authenticate the user.
* @param loginInfo login information, like username, password, ...
* @return <code>true</code> if user is correcly authenticated, <code>false</code> otherwise
*/
public boolean authenticateUser(Map loginInfo) throws Exception {
username = (String) loginInfo.get("username");
String password = (String) loginInfo.get("password");
if (username == null || password == null)
return false;
username = username.toUpperCase();
password = password.toUpperCase();
loginInfo.put("username",username);
loginInfo.put("password",password);
Response response = ClientUtils.getData("login",new String[]{username,password});
if (response.isError())
throw new Exception(response.getErrorMessage());
String languageId = ((TextResponse)response).getMessage();
ButtonsAuthorizations buttonsAuthorizations = (ButtonsAuthorizations)((VOResponse)ClientUtils.getData("getButtonAuthorizations",new Object[0])).getVo();
Hashtable xmlFiles = new Hashtable();
xmlFiles.put("EN","Resources_en.xml");
xmlFiles.put("IT","Resources_it.xml");
ClientSettings clientSettings = new ClientSettings(
new XMLResourcesFactory(xmlFiles,true),
domains,
buttonsAuthorizations,
false
);
ClientSettings.PERC_TREE_FOLDER = "folder3.gif";
ClientSettings.BACKGROUND = "background4.jpg";
ClientSettings.TREE_BACK = "treeback2.jpg";
ClientSettings.getInstance().setLanguage(languageId);
return true;
}
public static void main(String[] argv) {
new ClientApplication();
}
/**
* Method called after MDI creation.
*/
public void afterMDIcreation(MDIFrame frame) {
GenericStatusPanel userPanel = new GenericStatusPanel();
userPanel.setColumns(12);
MDIFrame.addStatusComponent(userPanel);
userPanel.setText(username);
MDIFrame.addStatusComponent(new Clock());
}
/**
* @see JFrame getExtendedState method
*/
public int getExtendedState() {
return JFrame.MAXIMIZED_BOTH;
}
/**
* Method called by LoginDialog to notify the sucessful login.
* @param loginInfo login information, like username, password, ...
*/
public void loginSuccessful(Map loginInfo) {
Domain orderStateDomain = new Domain("ORDERSTATE");
orderStateDomain.addDomainPair("O","opened");
orderStateDomain.addDomainPair("S","suspended");
orderStateDomain.addDomainPair("D","delivered");
orderStateDomain.addDomainPair("ABC","closed");
domains.clear();
domains.put(
orderStateDomain.getDomainId(),
orderStateDomain
);
MDIFrame mdi = new MDIFrame(this);
}
/**
* @return <code>true</code> if the MDI frame must show a change language menu in the menubar, <code>false</code> no change language menu item will be added
*/
public boolean viewChangeLanguageInMenuBar() {
return true;
}
/**
* @return list of languages supported by the application
*/
public ArrayList getLanguages() {
ArrayList list = new ArrayList();
list.add(new Language("EN","English"));
list.add(new Language("IT","Italiano"));
return list;
}
/**
* @return application functions (ApplicationFunction objects), organized as a tree
*/
public DefaultTreeModel getApplicationFunctions() {
return (DefaultTreeModel)((VOResponse)ClientUtils.getData("getFunctionAuthorizations",new Object[0])).getVo();
}
/**
* @return <code>true</code> if the MDI frame must show a panel in the bottom, containing last opened window icons, <code>false</code> no panel is showed
*/
public boolean viewOpenedWindowIcons() {
return true;
}
/**
* @return <code>true</code> if the MDI frame must show the "File" menu in the menubar of the frame, <code>false</code> to hide it
*/
public boolean viewFileMenu() {
return true;
}
}