O pacote org.eclipse.jface.dialogs faculta uma classe utilitária, DialogSettings, para armazenar e obter valores por chaves. Poderá utilizar esta classe para guardar e obter tipos de dados primitivos e valores de cadeia de caracteres que associe a nomes chave. As definições são carregadas e guardadas mediante ficheiro XML.
O AbstractUIPlugin proporciona suporte para definições de caixas de diálogo de plug-ins armazenadas num ficheiro XML no directório de plug-ins. Se determinado ficheiro de definições de caixa de diálogo não se encontrar no directório de plug-ins, serão criadas DialogSettings vazias para o utilizador. Quando o plug-in é encerrado, as definições que lhe tenham sido adicionadas serão guardadas num ficheiro XML e obtidas na ocasião seguinte em que ocorrer o arranque do plug-in.
Poderá aceder às definições de caixa de diálogo em qualquer ponto do código do plug-in. A porção seguinte mostra como obter as definições de caixa de diálogo para a ferramenta readme.
IDialogSettings settings = ReadmePlugin.getDefault().getDialogSettings();
Os valores são armazenados e obtidos com métodos get e put. Os métodos get são denominados segundo o tipo primitivo que esteja a ser acedido. Poderá armazenar e obter valores booleanos, longos, duplos, flutuantes, de número inteiro, de matriz e de cadeia de caracteres (boolean, long, double, float, int, array e string). A porção de código seguinte mostra como podemos utilizar definições de caixa de diálogo para inicializar valores de controlo numa caixa de diálogo.
protected Control createDialogArea(Composite parent) { IDialogSettings settings = ReadmePlugin.getDefault().getDialogSettings(); checkbox = new Button(parent,SWT.CHECK); checkbox.setText("Generate sample section titles"); // initialize the checkbox according to the dialog settings checkbox.setSelection(settings.getBoolean("GenSections")); }
O valor da definição pode ser armazenado mais tarde quando for premido o botão OK.
protected void okPressed() { IDialogSettings settings = ReadmePlugin.getDefault().getDialogSettings(); // store the value of the generate sections checkbox settings.put("GenSections", checkbox.getSelection()); super.okPressed(); }
Geralmente, a definição e a interpretação das definições da caixa de diálogo são da responsabilidade do plug-in. Contudo, existem algumas chaves de definições específicas da caixa de diálogo definidas no enquadramento da caixa de diálogo do JFace que são utilizadas para memorizar o último tamanho e a última posição de uma caixa de diálogo, de modo a que a mesma possa ser aberta com esse tamanho e essa posição na próxima invocação. O enquadramento irá consultar e armazenar o tamanho e a posição da caixa de diálogo, mas terá de ser o utilizador a implementar um método que forneça a instância IDialogSettings a ser utilizada para armazenar as informações sobre os contornos da caixa de diálogo. O seguinte fragmento apresenta a forma como a SectionsDialog deverá tomar partido desta função.
protected IDialogSettings getDialogBoundsSettings() { return ReadmePlugin.getDefault().getDialogSettings(); }
Ao implementar este método, o tamanho e a posição da SectionsDialog serão armazenados em chaves predefinidas nas definições da caixa de diálogo do plug-in, o que fará com que a caixa de diálogo abra na localização anterior.