O elemento modelo único representou várias vezes na interface do usuário… Como implementar no GEF?
-
27-09-2019 - |
Pergunta
Eu tenho um modelo em que um objeto de modelo é representado várias vezes no gráfico exibido. Considere o seguinte modelo:
- Existem muitas partições
- Cada partição tem X Sourceports e Y DestinationPorts
- Cada fonte de origem pode estar conectado a uma porto de destino
- Uma partição é selecionada
Quero visualizar isso de modo que a partição selecionada esteja no centro:
- À esquerda, há todas as partições visíveis com todos os portos -fonte pintados
- No centro, há a partição selecionada com todas as portas pintadas
- À direita, todas as partições são visíveis com todas as portas de destino pintadas
- Todas as conexões entre as portas são pintadas
- O usuário pode manipular as portas e conexões (adicione/remover portas e conexões)
Portanto, meu modelo de uma partição mapeia para várias figuras. Uma partição comum é pintada duas vezes (uma vez à esquerda e uma vez à direita) e a partição selecionada três vezes.
Como implementar isso no GEF? Devo criar um editpart por partição e deixá -la retornar um ifigre para todas as representações gráficas? Ou todas as instâncias que são atraídas para a tela têm seu próprio editpart? Ou é benífico criar um modelo extra em que uma partição é representada através de várias instâncias de modelo?
Solução
Sugiro criar um modelo diferente que contenha todos os dados do VisualizAzion: dessa maneira, você pode vincular um elemento do modelo de dados a múltiplas instâncias dos elementos do modelo de visualização e resolver seu problema de maneira simples e elegante. Além disso, você não "polui" o modelo de dados com todos os dados necessários para a visualização, ou seja, a coordenada dos elementos no diagrama.
Saluti