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.
- 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.
- 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;
- 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;
}
- 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";
}
- 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;
}
- 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.
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;
}
}