Rational Developer para System z


Lição 9: Criar o Código para a Classe CheckboxOptionControl

A classe CheckboxOptionControl alterará o campo de texto padrão do CARMA para uma caixa de opção no parâmetro Opção. Desde que esse parâmetro seja um sim ou não, uma caixa de opção será mais conveniente para o usuário.
  1. Na visualização Package Explorer, abra a classe CheckboxOptionControl criada navegando por com.ibm.carma.plugin.howto > src > com.ibm.carma.plugin.howto.action e dando um clique duplo na classe.
  2. Primeiro inclua o objeto do botão da caixa de opção como os dados de instância na classe. Isso permite que o botão da caixa de opção e todos os seus metadados fiquem disponíveis para a classe CheckboxOptionControl. Inclua a seguinte linha de código: Button theButton;
  3. Em seguida, substitua o método createControl para criar o botão da caixa de opção e retorne-o em vez do campo de texto padrão. O pseudocódigo a seguir demonstra o que você quer que esse método faça:
    Create theButton with the checkbox style
    Give the theButton some text
    Return the theButton
    Use o código de amostra a seguir para substituir esse método:
    /* Create a checkbox for the yes/no option */
    public Control createControl(Composite parent, 
                                 RepositoryManager repositoryManager,
                                 Parameter param, 
                                 Action action,
                                 CustomActionAccepter custActionAccepter,
                                 Object defaultValue) 
    {
       theButton = new Button(parent, SWT.CHECK);
       theButton.setText("Check me!");
       return theButton;
    }
  4. Agora substitua o método getValue. Esse método retorna o valor dos parâmetros. Uma vez está sendo usada uma caixa de opção em vez de um campo de texto, o código gravado terá que converter o status de marcado ou desmarcado da caixa de opção no formato de cadeia esperado. O pseudocódigo a seguir demonstra isso:
    if the checkbox is checked
    	return "Y" for yes
    else
    	return "N" for no
    Use o código de amostra a seguir para substituir esse método:
    public Object getValue() 	{
    		if(theButton.getSelection())
    			return "Y";
    		else
    			return "N";
    	}
  5. O último método que precisará ser substituído é o isUsingDefaultLabel. Se estiver configurado como falso, esse método não exibirá o rótulo padrão fornecido ao incluir o parâmetro no RAM. Se estiver configurado como verdadeiro, o rótulo será exibido como normal. Para essa amostra, o código usará o rótulo padrão. Use o código de amostra a seguir para substituir o método:
    public boolean isUsingDefaultLabel()
    {
       return true;
    }
  6. Finalmente, é necessário garantir que todas as importações requeridas estão listadas. Inclua qualquer uma das instruções de importação a seguir que não esteja listada em sua classe:
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.widgets.*;
    
    import com.ibm.carma.model.*;
    
    import com.ibm.carma.ui.action.custom.AbstractCustomParameterControl;
  7. Salve a origem e depure qualquer erro.
Seu código completo para o CheckBoxOptionControl deve ser similar a:
package com.ibm.carma.plugin.howto.action;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;

import com.ibm.carma.model.*;

import com.ibm.carma.ui.action.custom.AbstractCustomParameterControl;

public class CheckboxOptionAction extends AbstractCustomParameterControl {
   //Add the button to the instance data
   Button theButton;
   
   /* Create a check box for the yes/no option */
   public Control createControl(Composite parent, 
                                RepositoryManager repositoryManager,
                                Parameter param, 
                                Action action, 
                                CustomActionAccepter customActionAccepter, 
                                Object defaultValue) 	{
      theButton = new Button(parent, SWT.CHECK);
      theButton.setText("Check me!");
      return theButton;
   }

   @Override
   public Object getValue() 	{
      if(theButton.getSelection())
	      return "Y";
      else
         return "N";
   }

   @Override 
   public boolean isUsingDefaultLabel() 	{
      return true;
   }
}

Termos de Uso | Feedback



Este centro de informações foi desenvolvido com a tecnologia Eclipse. (http://www.eclipse.org)