M6 Posted May 18, 2006 at 08:51 AM Report Share #28001 Posted May 18, 2006 at 08:51 AM Ando um bocado "às aranhas" com o SWT e necessito de ajuda. Por certo isto é fácil mas já perdi algum tempo de volta disto e não consigo encontrar a solução. 👍 Tenho um panel para fazer login, SystemLogin nl, onde tenho dois labels e respectivos texts para recolher o username e a password, extendido com uns métodos que não são relevantes para aqui. O meu problema, que acredito ser "básico", é que quando selecciono a opção de login na janela principal, a janela Shell nlShell aparece com o painel mas a aplicação congela aí. Do código que tenho, que listo abaixo, creio ser relevante apenas as seguintes linhas: Shell nlShell = new Shell(SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL | SWT.SHELL_TRIM); SystemLogin nl = new SystemLogin(nlShell, SWT.NORMAL); while (nl.getUsername().trim() == "") { nlShell.open(); } stLog.append("\n\tUsername: " + nl.getUsername()); stLog.append("\n\tPassword: " + nl.getPassword()); /** * Get the user network login if necessary * */ private void getLogin() { Shell nlShell = new Shell(SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL | SWT.SHELL_TRIM); nlShell.setText("Network Login"); nlShell.setLayout(null); nlShell.setSize(new Point(200, 200)); SystemLogin nl = new SystemLogin(nlShell, SWT.NORMAL); nlShell.setMinimized(false); nlShell.setMaximized(false); Rectangle parentSize = sShell.getBounds(); Rectangle mySize = nlShell.getBounds(); int locationX = (parentSize.width - mySize.width) / 2 + parentSize.x; int locationY = (parentSize.height - mySize.height) / 2 + parentSize.y; nlShell.setLocation(locationX, locationY); while (nl.getUsername().trim() == "") { nlShell.open(); } stLog.append("\n\tUsername: " + nl.getUsername()); stLog.append("\n\tPassword: " + nl.getPassword()); } 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
Knitter Posted May 18, 2006 at 03:34 PM Report Share #28078 Posted May 18, 2006 at 03:34 PM Nunca mexi com swt, para mim so swing 😄 e provavelmente nao vou ajudar muito... mas 'as vezes ate' e' bom dar opinioes estupidas 👍 Ja' verificaste se o teu codigo bloqueia no while? pode estar a entrar em ciclo... Dsc mas olhado para o que tens nao vejo nada de errado, nao usaria um objecto do tipo "Rectangle" para situar a tua "Shell" mas nao vejo ai erro, pelo menos de codigo... Verifica se "parentSize" possui um valor correcto e se o teu ciclo nao se esta' a tornar infinito, de resto sem mais codigo para testar nao vejo probs. Espero que por esta hora ja' tenhas resolvido o teu prob, ate'... Uma pergunta: porque nao permites passwords com espacos no inicio e no fim? Se nao o fazes espero que digas aos teus utilizadores 😛 Link to comment Share on other sites More sharing options...
Dabubble Posted May 18, 2006 at 04:13 PM Report Share #28088 Posted May 18, 2006 at 04:13 PM Bem esta caso e um pouco complexo. Nao sei se estas bem a par de como funciona SWT mas basicamente Shell e o pai de todos os composites (o SWT segue a composite design pattern) e é ele que detem a interaccao com o utilizador. Ora acontece que tu iniciate uma nova shell ou seja perdeste a anterior e nao consegues fazer com que anterior ganhe de novo a interaccao com o utilizador. O que tu provavelmente queres é abrir um Dialog onde pedes um login e nao uma nova Shell. Se precisares de exemplos eu tenho bastantes mas sao um pouco complexos. Boa sorte. BTW: SWT rula e mm muito mais simples para fazer os programas normais que fazemos, swing so tem a cena de poderes construir os teus proprios componentes. Link to comment Share on other sites More sharing options...
M6 Posted May 18, 2006 at 10:33 PM Author Report Share #28191 Posted May 18, 2006 at 10:33 PM Nunca mexi com swt, para mim so swing 😄 e provavelmente nao vou ajudar muito... mas 'as vezes ate' e' bom dar opinioes estupidas 😛 Ja' verificaste se o teu codigo bloqueia no while? pode estar a entrar em ciclo... Dsc mas olhado para o que tens nao vejo nada de errado, nao usaria um objecto do tipo "Rectangle" para situar a tua "Shell" mas nao vejo ai erro, pelo menos de codigo... Verifica se "parentSize" possui um valor correcto e se o teu ciclo nao se esta' a tornar infinito, de resto sem mais codigo para testar nao vejo probs. Espero que por esta hora ja' tenhas resolvido o teu prob, ate'... Uma pergunta: porque nao permites passwords com espacos no inicio e no fim? Se nao o fazes espero que digas aos teus utilizadores 😄 O código não bloqueia no while e ainda não tenho o problema resolvido. O rectangle e o parentSize não dão problemas, pois tenho outras janelas que usam essa técnica e funciona correctamente. Eu permito passwords com espaços no início e no fim, só não permito passwords só com espaços! 👍 De quaquer forma, obrigado. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
M6 Posted May 18, 2006 at 10:36 PM Author Report Share #28192 Posted May 18, 2006 at 10:36 PM Bem esta caso e um pouco complexo. Nao sei se estas bem a par de como funciona SWT mas basicamente Shell e o pai de todos os composites (o SWT segue a composite design pattern) e é ele que detem a interaccao com o utilizador. Ora acontece que tu iniciate uma nova shell ou seja perdeste a anterior e nao consegues fazer com que anterior ganhe de novo a interaccao com o utilizador. O que tu provavelmente queres é abrir um Dialog onde pedes um login e nao uma nova Shell. Se precisares de exemplos eu tenho bastantes mas sao um pouco complexos. Boa sorte. O que eu quero é que o painel apareça numa janela modal. Tenho outras janelas que constroem a sua própria shell e expandem o dialog, mas estou em crer que essas técnicas não estão correctas. Estou a cometer algum erro de desenho ou a violar alguma norma de SWT? BTW: SWT rula e mm muito mais simples para fazer os programas normais que fazemos, swing so tem a cena de poderes construir os teus proprios componentes. SWT e JFace são 5 estrelas! 👍 O Swing é muito giro e tal, mas quando é para trabalhar: SWT rules! 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
Dabubble Posted May 18, 2006 at 11:35 PM Report Share #28200 Posted May 18, 2006 at 11:35 PM Estas a viollar uma das regras, nao devias instanciar uma nova shell e sim passar a mesma como argumento se necessario. Os exemplos que eu tenho aqui sao demaidiado complexos e trabalham com titleareadialog mas amanha vou ver se encontro uma das primeiras aplicaccoes que fiz em SWT que tinha exactamente o que tu querias , ou seja aparecia uma pequena janela a pedir login e password. Link to comment Share on other sites More sharing options...
M6 Posted May 19, 2006 at 07:17 AM Author Report Share #28209 Posted May 19, 2006 at 07:17 AM Dabubble, obrigado pela explicação e pela ajuda. 😉 Fico a aguardar essa aplicação. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
Solution Dabubble Posted May 21, 2006 at 07:04 PM Solution Report Share #28662 Posted May 21, 2006 at 07:04 PM Atao vamos lah ver a minha aplicacao baseia-se numa versao umpouco antiga do SWT mas basicamente tens uma janela principal (que tem os menus e etc) e o que tu vais fazendo e trocando os composites interiores. Em algumas situacoes (como no caso da autenticacao) abre-se um novo dialog. Vou-te mandar o codigo completao das duas que tem outras coisas mas ja vai dar para perceber mais ou menos como funciona: /* * Created on May 19, 2004 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package pt.Transpinheiro.GUI; import java.io.File; import org.apache.torque.Torque; import org.apache.torque.TorqueException; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.action.ToolBarManager; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.window.ApplicationWindow; import org.eclipse.swt.SWT; import org.eclipse.swt.program.Program; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.TabFolder; import org.eclipse.swt.widgets.TabItem; import pt.Transpinheiro.GUI.Estatistica.EstatisticaComposite; import pt.Transpinheiro.GUI.Gestao.GestaoComposite; import pt.Transpinheiro.GUI.Oficina.OficinaComposite; import pt.Transpinheiro.GUI.Stocks.StockComposite; import pt.Transpinheiro.GUI.Utilitarios.ConfiguracaoDialog; import pt.Transpinheiro.GUI.Viagens.ViagensComposite; import pt.Transpinheiro.Gestores.Utilitarios.SemConfiguracaoException; import pt.Transpinheiro.Gestores.Utilitarios.TranspinheiroConfiguracao; import com.swtdesigner.ResourceManager; /** * Janela principal da aplicação.<br> * Esta janela mostra um painel com tabs que permite navegar pelas areas de gestão * da empresa e executar as accoes para as quais o utilizador tem permissões. * * @author p0thead */ public class TranspinheiroWindow extends ApplicationWindow { private Action acercaAction; private MenuManager contribMenu; //-- Configuracao da aplicação private TranspinheiroConfiguracao configuracao; //-- Tabs das areas de gestão da empresa private Action ajudaAction; private Action configurarAction; private Action sairAction; private TabItem estatisticaTab; private TabItem contabilidadeTab; private TabItem gestaoTab; private TabItem viagensTab; private TabItem stocksTab; private TabItem oficinaTab; //-- Paineis para as diferentes areas de gestao private GestaoComposite painelGestao; //private ContabilidadeComposite painelContabilidade; private EstatisticaComposite painelEstatistica; private OficinaComposite painelOficina; private StockComposite painelStock; private ViagensComposite painelViagens; //--------------------------------------- /** * Constroi a janela principal da aplicação. */ public TranspinheiroWindow() { super(null); createActions(); addToolBar(SWT.NONE); addMenuBar(); } /** * Constroi o conteudo da janela.<br> * Cria o painel com tabs com os paineis das areas de gestão da empresa. * @param parent O composito sobre o qual o painel será construido */ protected Control createContents(Composite parent) { //-- Cria a tabFolder TabFolder areaTabs = new TabFolder(parent, SWT.NONE); //-- E os paineis que a compoem oficinaTab = new TabItem(areaTabs, SWT.NONE); oficinaTab.setText("Oficina"); this.painelOficina = new OficinaComposite(areaTabs); oficinaTab.setControl(painelOficina); oficinaTab.setImage(ResourceManager.getImage("imgs/TransPinheiro_Icon_Oficina_Tab_blank_32x32.gif")); stocksTab = new TabItem(areaTabs, SWT.NONE); stocksTab.setText("Stocks"); this.painelStock = new StockComposite(areaTabs); stocksTab.setControl(painelStock); contribMenu.add(painelStock.getAccoes()); stocksTab.setImage(ResourceManager.getImage("imgs/TransPinheiro_Icon_Stock_Tab_blank_32x32.gif")); viagensTab = new TabItem(areaTabs, SWT.NONE); viagensTab.setText("Viagens"); this.painelViagens = new ViagensComposite(areaTabs); viagensTab.setControl(painelViagens); viagensTab.setImage(ResourceManager.getImage("imgs/TransPinheiro_Icon_Viagens_Tab_blank_32x32.gif")); gestaoTab = new TabItem(areaTabs, SWT.NONE); gestaoTab.setText("Gestão"); this.painelGestao = new GestaoComposite(areaTabs); gestaoTab.setControl(painelGestao); contribMenu.add(painelGestao.getAccoes()); gestaoTab.setImage(ResourceManager.getImage("imgs/TransPinheiro_Icon_Gestao_Tab_blank_32x32.gif")); contabilidadeTab = new TabItem(areaTabs, SWT.NONE); contabilidadeTab.setText("Contabilidade"); //this.painelContabilidade = new ContabilidadeComposite(areaTabs); //contabilidadeTab.setControl(painelContabilidade); contabilidadeTab.setImage(ResourceManager.getImage("imgs/TransPinheiro_Icon_Contabilidade_Tab_blank_32x32.gif")); estatisticaTab = new TabItem(areaTabs, SWT.NONE); estatisticaTab.setText("Estatistica"); this.painelEstatistica = new EstatisticaComposite(areaTabs); estatisticaTab.setControl(painelEstatistica); estatisticaTab.setImage(ResourceManager.getImage("imgs/TransPinheiro_Icon_Estatistica_Tab_blank_32x32.gif")); // DESIGNER: Add controls before this line. return areaTabs; } /** * Constroi as accoes desta janela, que serão mostradas no menu e na toolbar * desta janela. */ private void createActions() { //-- Acção para sair da aplicação sairAction = new Action() { public void run() { close(); } }; sairAction.setImageDescriptor(ResourceManager.getImageDescriptor("imgs/TransPinheiro_Icon_MainWindow_Sair_32x32.gif")); //sairAction.setImageDescriptor(ResourceManager.getImageDescriptor(TranspinheiroWindow.class, "imgs/remover.gif")); sairAction.setToolTipText("Sair da aplicação"); sairAction.setText("Sair"); //-- Configurar a aplicação configurarAction = new Action() { public void run() { ConfiguracaoDialog dConfig = new ConfiguracaoDialog(getShell(), configuracao); dConfig.open(); } }; configurarAction.setImageDescriptor(ResourceManager.getImageDescriptor("imgs/TransPinheiro_Icon_MainWindow_Configuracao_32x32.gif"));//ResourceManager.getImageDescriptor(TranspinheiroWindow.class, "imgs/TransPinheiro_Icon_MainWindow_Configuracao_32x32.gif")); configurarAction.setToolTipText("Configurar a aplicação"); configurarAction.setText("Configurar"); //-- Ver ajuda (Abre o manual de utilizador) ajudaAction = new Action() { public void run() { String path = configuracao.getConfiguracaoGeral().getString(TranspinheiroConfiguracao.UM_PATH); if(path != null && new File(path).exists()) { if(!Program.launch(path)) { MessageDialog.openError(getShell(), "Não abriu o Manual de Utilizador", "Não foi possivel abrir o Manual de Utilizador.\n" + "Provavelmente não tem uma aplicação que o consiga abrir instalada."); } } else MessageDialog.openError(getShell(), "Não abriu o Manual de Utilizador", "O caminho para o manual de Utilizador não está definido\n" + "Defina-o na janela de configuração da aplicação."); /*SelectorDataDialog dData = new SelectorDataDialog(getShell()); if(dData.open() == SelectorDataDialog.OK) MessageDialog.openInformation(getShell(), "Data seleccionada", "Data seleccionada : " + "" + dData.getDataSeleccionada().toLocaleString());*/ } }; ajudaAction.setImageDescriptor(ResourceManager.getImageDescriptor("imgs/TransPinheiro_Icon_MainWindow_Ajuda_32x32.gif")); ajudaAction.setToolTipText("Procurar ajuda"); ajudaAction.setText("Ajuda"); //-- Ecrã acerca da aplicação acercaAction = new Action() { public void run() { //AcercaDialog dAcerca = new AcercaDialog(getShell(), SWT.NONE); } }; acercaAction.setImageDescriptor(ResourceManager.getImageDescriptor("imgs/TransPinheiro_Icon_Oficina_Manutencoes_blank_48x48.gif")); acercaAction.setToolTipText("Abre o ecrã com informação da aplicação"); acercaAction.setText("Acerca"); } /** * Cria o menuManager que gera e gere o menu principal desta janela. * @return o MenuManager que gera e gere o menu principal desta janela. */ protected MenuManager createMenuManager() { MenuManager result = new MenuManager("menu"); final MenuManager fileMenu = new MenuManager("Ficheiro"); result.add(fileMenu); //-- Menu dinamico contribMenu = new MenuManager("Acções"); result.add(contribMenu); //-- Menu Ficheiro fileMenu.add(configurarAction); fileMenu.add(new Separator()); fileMenu.add(sairAction); //-- Menu Ajuda MenuManager ajudaMenu = new MenuManager("Ajuda"); ajudaMenu.add(ajudaAction); ajudaMenu.add(acercaAction); result.add(ajudaMenu); // DESIGNER: Add controls before this line. return result; } /** * Cria o ToolBarManager que irá gerar e gerir a barra de tarefas desta janela. * @return ToolBarManager que irá gerar e gerir a barra de tarefas desta janela. */ protected ToolBarManager createToolBarManager(int arg0) { ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT | SWT.WRAP); toolBarManager.add(sairAction); toolBarManager.add(configurarAction); toolBarManager.add(ajudaAction); // DESIGNER: Add controls before this line. return toolBarManager; } /** * Abre a janela e espera até que ela seja fechada pelo utilizador. * Antes de abrir a janela abre um dialogo de autenticação e caso não seja possivel * reconhecer o utilizador a janela da aplicação nunca chega a ser aberta. */ public void run() { //-- Inicia Torque e carrega configuração try { init(); } catch (TorqueException e) { e.printStackTrace(); MessageDialog.openError(getShell(), "Erro a iniciar o Torque", "Falhou a iniciar o motor de acesso a dados!\n" + "Mensagem de erro : " + e.getLocalizedMessage()); } catch (SemConfiguracaoException e) { //-- Mostra info de excepcao em stdout e.printStackTrace(); if(MessageDialog.openConfirm(getShell(), "Configuração inexistente.", e.getLocalizedMessage() + "\nQuer configurar agora a aplicação?")) { //-- Cria uma nova configuracao inicialmente vazia configuracao = new TranspinheiroConfiguracao(); //-- Abre o dialogo para configurara configuração inicial ConfiguracaoDialog dConfig = new ConfiguracaoDialog(getShell(), configuracao); dConfig.open(); //-- Tenta de novo iniciar a aplicação run(); return; } //-- Se não há configuração e não tentamos configurar //-- então saimos porque não temos acesso a dados else return; } //-- Autentica o utilizador //LoginDialog dLogin = new LoginDialog(getShell()); //-- Se o dialogo permitiu fechar entao temos um //-- utilizador reconhecido pelo sistema // if(dLogin.open() == LoginDialog.OK) // { //-- A janela devia ser construida para o utilizador // this.utilizador = dLogin.getUtilizador(); // open(utilizador); open(); //-- Liberta os recursos do SO alocados ResourceManager.dispose(); Display display = Display.getCurrent(); Shell shell = getShell(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } // } } /** * Inicializa a aplicação.<br> * Neste metodo serão carregadas as configuracoes da aplicacao e será iniciado * o motor do torque. Caso não haja ainda nenhuma configuracao será lancada uma * <code>SemConfiguracaoException</code>. */ private void init() throws TorqueException, SemConfiguracaoException { if(configuracao == null) //-- Tenta carregar a configuracao configuracao = TranspinheiroConfiguracao.load(); //-- Inicia o motor de acesso a dados Torque.init(configuracao.getConfiguracaoTorque()); } /** * Entrada da aplicação pelo Sistema Operativo. * @param args argumentos passados pelo sistema operativo na iniciação da aplicação */ public static void main(String args[]) { Display display = new Display(); TranspinheiroWindow window = new TranspinheiroWindow(); window.run(); } protected void configureShell(Shell newShell) { super.configureShell(newShell); newShell.setText("Transpinheiro"); newShell.setImage(ResourceManager.getImage("imgs/TransPinheiro_Icon_Oficina_Manutencoes_blank_48x48.gif")); } } e agora a classe de login: /* * Created on May 19, 2004 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package pt.Transpinheiro.GUI.Utilitarios; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import pt.Transpinheiro.AcessoADados.Utilizadores; import pt.Transpinheiro.Gestores.Pessoas.AutenticacaoException; import pt.Transpinheiro.Gestores.Pessoas.GestorPessoas; import com.swtdesigner.ResourceManager; /** * Dialogo de login da aplicação.<br> * Quando é mostrado este dialogo só pode ser fechado de uma de duas maneiras: * ou introduzindo dados válidos e clicando no butao OK fazendo a autenticação do utilizador no sistema,<br> * ou clicando no cancel fazendo com que não se faça a autenticação e o utilizador não é reconhecido. * * @author p0thead */ public class LoginDialog extends TitleAreaDialog { private Utilizadores utilizador; private Text passwordTxt; private Text usernameTxt; /** * Cria um dialogo de login sobre a janela <code>parentShell</code> * @param parentShell a janela sobre a qual o dialogo será mostrado. */ public LoginDialog(Shell parentShell) { super(parentShell); } /** * Cria a area principal do dialogo sobre <code>parent</code> */ protected Control createDialogArea(Composite parent) { Composite area = (Composite) super.createDialogArea(parent); Composite contents = new Composite(area, SWT.NONE); final GridLayout gridLayout = new GridLayout(); gridLayout.numColumns = 2; contents.setLayout(gridLayout); contents.setLayoutData(new GridData(GridData.FILL_BOTH)); final Label usernameL = new Label(contents, SWT.NONE); usernameL.setText("Nome de utilizador :"); usernameTxt = new Text(contents, SWT.BORDER); usernameTxt.setToolTipText("Preencha com o seu nome de utilizador do sistema"); final GridData gridData = new GridData(GridData.GRAB_HORIZONTAL); gridData.widthHint = 100; usernameTxt.setLayoutData(gridData); final Label passwordL = new Label(contents, SWT.NONE); passwordL.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); passwordL.setText("Password :"); passwordTxt = new Text(contents, SWT.BORDER); passwordTxt.setEchoChar('*'); passwordTxt.setToolTipText("Preencha com a sua password"); final GridData gridData_1 = new GridData(); gridData_1.widthHint = 100; passwordTxt.setLayoutData(gridData_1); setTitle("Login no sistema Transpinheiro"); setMessage("Introduza os seus dados de autenticação."); setTitleImage(ResourceManager.getImage(LoginDialog.class, "/imgs/TransPinheiro_Icon_Login.gif")); return area; } /** * Verifica se os dados introduzidos são validos e caso sejam fecha o dialogo. * Caso contrário é mostrada a mensagem de erro e é permitido ao utilizador * corrigir esse erro.<br> * Este metodo é chamado quando o utilzador clica num dos botoes do dialogo. * @return true se poder fechar o dialogo e false caso contrario */ public boolean close() { String msgErro = null; // Se o utilizador clicou OK os dados tem de ser validados // antes de se fechar o dialogo if(getReturnCode() == OK) { // Se os dados n sao validos mostra a mensagem de erro if( (msgErro = getErro()) != null) { setErrorMessage(msgErro); return false; } } return super.close(); } /** * Tenta validar os dados do utilizador e caso não sejam validos devolve * uma mensagem de erro apropriada, * @return mensagem de erro ou null caso não haja */ private String getErro() { String username = usernameTxt.getText(); String password = passwordTxt.getText(); // Campo de user n preenchido correctamente if( username == null || username.length() < 4) return "O campo de nome de utilizador tem ter pelo menos 4 caracteres!"; else if(password == null || password.length() < 4) return "O campo da password tem ter pelo menos 4 caracteres!"; // Se os dados estao validos entao tentamos autenticar no sistema try { this.utilizador = GestorPessoas.autenticaUtilizador(username, password); } catch(AutenticacaoException aX) { return aX.getMessage(); } // Se chegámos até aqui entao o utilzador está autenticado // perante o sistema e não há erros a reportar return null; } /** * Cria os butoes que aparecem no fim da janela de dialogo. * @parent o composito sobre o qual os butoes vão ser construidos */ protected void createButtonsForButtonBar(Composite parent) { createButton( parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true); createButton( parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false); } /** * Depois do utilizador inserir os seus dados de autenticacao e clicar em ok o dialogo * autentica qual o utilizador em questão. Este metodo devolve o utilizador autenticado * @return o utilizador autenticado */ public Utilizadores getUtilizadorAutenticado() { return this.utilizador; } protected void configureShell(Shell newShell) { super.configureShell(newShell); newShell.setSize(285, 187); } } como ves tens de passar a shell a um dialog para que o anterior nao perca a interaccao com o utilizador Link to comment Share on other sites More sharing options...
M6 Posted May 22, 2006 at 11:23 AM Author Report Share #28825 Posted May 22, 2006 at 11:23 AM Obrigado. 😛 Dei uma olhadela e parece-me extremamente útil. Quando puder vejo isto com mais atenção. 😄 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
Dabubble Posted May 22, 2006 at 11:51 AM Report Share #28828 Posted May 22, 2006 at 11:51 AM BTW como viste a funcionaldade de login esta comentada, mas isso era so para desenvolvimento porque esta a funcionar. outra coisa na altura ainda nao sabia design patterns por isso onde estao GestorXXX leia-se XXXDAO. Link to comment Share on other sites More sharing options...
M6 Posted May 22, 2006 at 12:00 PM Author Report Share #28833 Posted May 22, 2006 at 12:00 PM Ok. 😄 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now