Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A estrutura da Faixa de Opções do Windows oferece suporte à reconfiguração dinâmica e à exposição de elementos principais da interface do usuário da Faixa de Opções em tempo de execução, com base no estado do aplicativo (também conhecido como contexto). Declarados e associados a elementos específicos na marcação, os vários estados suportados por um aplicativo são chamados de modos de aplicativo.
- Introdução
- Interface de usuário contextual
- Implementando modos de aplicação
- Observações
- Tópicos relacionados
Introdução
Os modos de aplicativo consistem em grupos lógicos de controles que expõem algumas funcionalidades principais do aplicativo na interface do usuário da Faixa de Opções. Esses modos são ativados ou desabilitados dinamicamente pelo aplicativo por meio de uma chamada para o método framework IUIFramework::SetModes, que ativa ou desativa a visibilidade de um ou mais modos de aplicativo.
Interface de usuário contextual
A estrutura da Faixa de Opções fornece uma experiência de usuário rica, incorporando controles dinâmicos que respondem perfeitamente à interação do usuário e ao contexto do aplicativo. Essa interface do usuário contextual avançada é fornecida por meio de uma combinação dos seguintes mecanismos:
- Galerias - controles baseados em coleções que suportam a manipulação dinâmica de suas coleções de itens.
- Separadores contextuais - separadores da barra de ferramentas que têm a sua visibilidade determinada por uma alteração no contexto da área de trabalho, como a seleção de uma imagem num documento.
- Modos de aplicativo - funcionalidade principal do aplicativo que depende do contexto do aplicativo.
Em alguns aspetos, os modos de aplicação parecem-se funcionalmente com os separadores contextuais. No entanto, a distinção fundamental reside na intenção e no alcance de cada um.
Os controles contextuais são ativados em resposta a uma mudança de contexto dentro de um aplicativo. Por exemplo, no Microsoft Paint para Windows 7, uma guia contextual que contém grupos de comandos relacionados a texto é exibida quando um usuário insere uma área de texto no espaço de trabalho. Essa guia contextual não contém comandos principais para o aplicativo e só é exposta na interface do usuário porque o contexto dentro o aplicativo foi alterado. A funcionalidade principal do aplicativo (os comandos de edição de imagem) ainda é relevante e está disponível para o usuário, mesmo com a guia contextual visível.
Os modos de aplicativo diferem dos controles contextuais porque reconfiguram a funcionalidade em resposta a alterações no contexto em que o aplicativo está operando. Os modos de aplicação situam-se num nível mais elevado de abstração; eles fornecem uma maneira de reconfigurar a funcionalidade principal de um aplicativo em vez de expor temporariamente a funcionalidade que não é um componente principal da interface do usuário. Por exemplo, no Microsoft Paint para Windows 7, uma alteração no modo de aplicação ocorre quando o comando Pré-visualização de impressão é invocado. Quando o Microsoft Paint alterna para a visualização de impressão Print preview, o contexto em que o aplicativo está operando muda de edição para visualização. Como resultado, a funcionalidade principal da aplicação muda até que a visualização de impressão seja cancelada e a aplicação entre no contexto de edição novamente.
Um cenário de modo de aplicativo simples
O cenário a seguir demonstra como os modos de aplicativo são usados, em um aplicativo chamado RibbonApp, para expor aspetos discretos da funcionalidade principal.
Dois modos de aplicativo são definidos no RibbonApp:
- modo simples expõe comandos básicos em toda a interface do usuário da Faixa de Opções. Esses comandos aparecem o tempo todo, independentemente do modo de aplicativo ativo.
- modo avançado expõe comandos complexos destinados a usuários experientes do aplicativo. Esses comandos avançados aparecem em toda a interface do usuário da Faixa de Opções, além dos comandos simples.
Por padrão, o RibbonApp é definido para abrir no modo Simples , e os comandos exigidos por usuários iniciantes são exibidos no Menu do Aplicativo e no separador Página Inicial . As capturas de tela a seguir mostram o Menu do Aplicativo do RibbonApp e o separador Página Inicial no modo Simples , destacando os controles modais.
Embora esses comandos possam ser suficientes para utilizadores iniciantes, o RibbonApp também oferece suporte a utilizadores experientes por meio de um modo Avançado que, quando ativado ao clicar no botão Alternar para o Modo Avançado no Menu de Aplicação , exibe funcionalidades principais adicionais.
Esse cenário é facilmente implementado ligando vários elementos na marcação a modos de aplicativo discretos que podem ser ativados e desativados conforme necessário. As capturas de ecrã a seguir mostram o Menu do Aplicativo RibbonApp e o separador Home no modo Avançado , destacando os controlos modais.
Implementação de Modos de Aplicação
Esta seção descreve os três passos normalmente necessários para a implementação dos modos de aplicação do framework Ribbon. RibbonApp é usado para fornecer um exemplo para cada etapa.
Identifique os modos
Cada modo em um aplicativo deve representar um conjunto lógico de funcionalidades que depende do contexto em que um aplicativo é capaz de operar. Por exemplo, se uma aplicação exibe controlos que só são relevantes quando é detectada uma conexão de rede, esses controlos operam dentro de um contexto de rede que pode justificar a criação de um modo de rede .
O RibbonApp tem dois contextos que podem estar ativos a qualquer momento: Simple e Advanced. Portanto, RibbonApp requer dois modos: Simple e Advanced.
Atribuir controles aos modos de aplicativo
Depois que os modos de aplicativo tiverem sido identificados, atribua cada controle do Ribbon a um modo declarando um atributo ApplicationModes na marcação para os elementos de controle que oferecem suporte aos modos de aplicativo.
O Modo de Exibição da Faixa permite especificar modos nos seguintes elementos de controlo:
Elementos principais Tab.
Grupo elementos que são elementos filhos de um elemento principal Tab elemento.
Button, SplitButtone DropDownButton elementos atribuídos a um MenuGroup dentro do Menu da Aplicação.
Observação
Button, SplitButtone DropDownButton elementos não podem ser atribuídos a um modo, a menos que hospedados no Menu do Aplicativo.
Na estrutura da Faixa de Opções, esses elementos de controle são chamados de controles modais. Eles aparecem somente se um modo ao qual eles estão vinculados estiver ativo na interface do usuário.
Os elementos de controle contidos em um controle modal herdam o comportamento do modo de aplicativo. Por exemplo, se um controle modaldo Grupofor atribuído a um modo Avançado de e o modo Avançado de não estiver ativo, então esse Grupo e quaisquer controles nele, modais ou não, não serão visíveis na Faixa de Opções.
Com o uso do atributo ApplicationModes, os modos são atribuídos a controles modais em uma relação 1:N (um-para-muitos), onde um único controle modal pode ser associado a vários modos.
A estrutura da Faixa de Opções refere-se aos modos numericamente, de 0 a 31, com o modo 0 considerado o modo padrão que é ativado automaticamente quando um aplicativo da Faixa de Opções é iniciado. Qualquer controlo modal que não especifique um atributo ApplicationModes é considerado parte do modo padrão.
No RibbonApp, Simple é o modo padrão, com a funcionalidade do modo Advanced exibida somente quando é iniciada pelo utilizador.
O exemplo a seguir demonstra a marcação necessária para RibbonApp.
<Application.Views>
<Ribbon>
<!--Application Menu-->
<Ribbon.ApplicationMenu>
<ApplicationMenu CommandName='cmdAppMenu'>
<MenuGroup>
<Button CommandName='cmdSave'/>
<Button CommandName='cmdExportMetadata' ApplicationModes='1'/>
</MenuGroup>
<MenuGroup>
<Button CommandName='cmdSwitchModes' ApplicationModes ='0,1'/>
<Button CommandName='cmdExit'/>
</MenuGroup>
</ApplicationMenu>
</Ribbon.ApplicationMenu>
<!--Tabs-->
<Ribbon.Tabs>
<!--Home Tab-->
<Tab CommandName='cmdHomeTab'>
<!--Scaling Policy for Home tab-->
<Tab.ScalingPolicy>
<ScalingPolicy>
<ScalingPolicy.IdealSizes>
<Scale Group='cmdSimpleControlsGroup' Size='Medium'/>
</ScalingPolicy.IdealSizes>
</ScalingPolicy>
</Tab.ScalingPolicy>
<!--Simple Controls Group-->
<Group CommandName='cmdSimpleControlsGroup' SizeDefinition='ThreeButtons-OneBigAndTwoSmall'>
<Button CommandName="cmdPaste" />
<Button CommandName='cmdCut'/>
<Button CommandName='cmdCopy'/>
</Group>
</Tab>
<!--Advanced Tab-->
<Tab CommandName='cmdAdvancedTab' ApplicationModes='1'>
<!--Advanced Controls Group-->
<Group CommandName='cmdMetadataGroup' ApplicationModes='1' SizeDefinition='TwoButtons'>
<Button CommandName='cmdEditMetadata' />
<Button CommandName='cmdCheckErrors' />
</Group>
</Tab>
</Ribbon.Tabs>
</Ribbon>
</Application.Views>
Este exemplo demonstra o seguinte:
- O modo padrão 0 não precisa ser declarado explicitamente. Como os controles modais que não especificam o atributo ApplicationModes são automaticamente vinculados ao modo 0 (modo simples no exemplo RibbonApp), não há necessidade de declarar explicitamente o atributo para controles modais padrão.
- Os controles podem ser vinculados a vários modos. Para RibbonApp, a única necessidade para o atributo ApplicationModes em um controle de modo simples é o botão
cmdSwitchModes, uma vez que ele faz parte dos modos simples e avançado. Se qualquer um dos modos estiver ativo, esse controle aparecerá no Menu do aplicativo. - Os controlos modais não herdam dos pais. A guia Avançado do RibbonApp contém um grupo de Metadados; ambos os controlos modais estão atribuídos ao modo 1 (modoAvançado). A atribuição da guia Advanced ao modo 1 não atribui automaticamente controlos subordinados, como o grupo Metadados, ao modo 1. Isso permite que qualquer grupo dentro de uma guia seja habilitado ou desabilitado de forma independente em tempo de execução.
- Os controles não modais ainda podem contar com comutadores de modo. Os botões Editar metadados e Verificar erros do RibbonApp são para usuários avançados e estão disponíveis somente quando o usuário alterna para modo de avançado. Os controlos de botão que não estão hospedados dentro do menu de aplicativo não são modais; no entanto, como estes botões são hospedados dentro de um controlo modal (o grupo de metadados ), eles ficam visíveis quando o grupo está visível. Portanto, esses botões aparecem quando o modo avançado é ativado e o grupo Metadados é exposto na interface do usuário da Barra de Ferramentas.
Alternar Modos em Tempo de Execução
Depois que os modos são definidos na marcação, eles podem ser facilmente ativados ou desativados em resposta a eventos contextuais. Como mencionado anteriormente, os aplicativos da Faixa de Opções sempre iniciam no modo padrão 0. Depois que o aplicativo for inicializado e o modo 0 estiver ativo, o conjunto de modos ativos pode ser alterado chamando a funçãoIUIFramework::SetModes. Esta função usa um inteiro de 32 bits como uma representação bit a bit dos modos que devem estar ativos; o bit menos significativo representa o modo 0 e o bit mais significativo representa o modo 31. Se um bit estiver definido para zero, o modo não estará ativo na interface da Faixa de Opções.
No RibbonApp, quando um usuário habilita modo de Avançado, os comandos avançados são exibidos ao lado dos comandos simples. O manipulador de comandos para o botão Alternar para o Modo Avançado chama IUIFramework::SetModes para definir os modos 0 (Simple) e 1 (Advanced) como ativos na interface do usuário. O exemplo a seguir é o código RibbonApp para esta chamada de função:
const int SIMPLE_MODE = 0;
const int ADVANCED_MODE = 1;
pFramework->SetModes( UI_MAKEAPPMODE(SIMPLE_MODE) | UI_MAKEAPPMODE(ADVANCED_MODE) );
Observação
A estrutura da Faixa de Opções com a macro UI_MAKEAPPMODE simplifica a tarefa de definir corretamente esses bits em preparação para a chamada para IUIFramework::SetModes.
Este exemplo demonstra o seguinte:
- Use a macro UI_MAKEAPPMODE para criar um conjunto de modos.
- Os modos são definidos explícita e atomicamente. O valor inteiro que é passado para IUIFramework::SetModes representa os modos que estarão ativos após o retorno da função. Embora o modo simples de estivesse ativo anteriormente, IUIFramework::SetModes deve indicar que o modo simples permanece ativo quando o modo Advanced é ativado.
- O modo padrão pode ser removido. Embora no RibbonApp o modo padrão (modo 0) nunca seja removido, ele pode ser removido com a seguinte chamada:
g_pFramework->SetModes(UI_MAKEAPPMODE(ADVANCED_MODE)), expondo apenas os comandos avançados na interface do usuário.
Observação
Quando os modos de um aplicativo são reconfigurados, a Faixa de Opções tentará preservar a guia selecionada anteriormente na interface do usuário. Se o novo conjunto de modos não contiver mais a guia selecionada antes da chamada, a Faixa de Opções selecionará a guia em seu layout mais próxima do Menu Aplicativo. Este separador destina-se a conter os comandos mais relevantes para o utilizador. Para obter mais informações, consulte Diretrizes de experiência do usuário da interface de fita.
Comentários
A Faixa de Opções deve ter pelo menos um modo ativo sempre. Se um aplicativo tentar desativar todos os modos chamando IUIFramework::SetModes com um valor de modo 0, E_FAIL será retornado e o conjunto de modo ativo permanecerá inalterado.
A estrutura requer que pelo menos uma guia exista na interface do usuário da Faixa de Opções o tempo todo. Como resultado, deve haver pelo menos uma guia exposta pelo modo padrão (modo 0) e após cada opção de modo.
Nem todas as áreas da interface do usuário da Faixa de Opções são afetadas pelos modos de aplicação. Por exemplo, se a desativação de um modo causar o desaparecimento de botões da Faixa de Opções que foram adicionados anteriormente à Barra de Ferramentas de Acesso Rápido , esses botões permanecerão na Barra de Ferramentas de Acesso Rápido, permitindo que os usuários executem os Comandos vinculados aos botões. Como regra geral, se um Comando pertencer a um ou mais modos inativos, esse Comando também deverá ser desativado definindo a propriedade UI_PKEY_Enabled como 0 (VARIANT_FALSE).
Tópicos relacionados