A classe CheckboxOptionControl altera o campo de texto padrão do CARMA para uma caixa de seleção no parâmetro Option Como este parâmetro é um parâmetro yes ou no, uma caixa de seleção é mais conveniente para o usuário.
Procedimento
- Na visualização Package Explorer , abra a classe
CheckboxOptionControl que você criou navegando com.ibm.carma.plugin.howto > src > com.ibm.carma.plugin.howto.action e clicando duas vezes sobre a classe.
- Primeiro, você incluirá o objeto do botão de caixa de seleção como dados de instância para a classe Isso permite que o botão da caixa de seleção e todos os seus metadados estejam disponíveis para a classe
CheckboxOptionControl . Inclua a seguinte linha de código: Button theButton;
- Em seguida, você substitui o método
createControl para criar o botão de caixa de seleção e retorná-lo em vez do campo de texto padrão. O pseudocódigo a seguir demonstra o que você deseja 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;
}
- Agora, você substitui o método
getValue . Esse método retorna o valor dos parâmetros. Como você está usando uma caixa de seleção em vez de um campo de texto, o código que você escrever terá que converter o status marcado ou desmarcado da caixa de seleção no formato de sequência 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";
}
- O último método que você precisa substituir é o método
isUsingDefaultLabel . Se estiver configurado para false, esse método não exibirá o rótulo padrão que você forneceu ao incluir o parâmetro no RAM. Se configurado para true, o rótulo será exibido normalmente. 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;
}
- 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;
- Salve a origem e depure qualquer erro.
Resultados
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 checkbox 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;
}
}