Support en ligne du Framework Graphique
Cette page contient les solutions de problèmes liés au Framework ainsi qu'une
section de type FAQ répondant aux questions les plus fréquemment posées.
Questions fréquemment posées à Doc Graph:
Lisez dans cette section les questions les plus couramment posées et
leurs réponses:
Q) Que se passe-t-il après la période de souscription de 12 mois?
R)
Il n'est pas nécessaire d'étendre votre souscription au delà
de cette période. Vous avez en revanche la possibilité
de souscrire à nouveau pour bénéficier des mises à jours
du Framework et du support.
Q) Quand ai-je besoin du support de type Premium?
R)
Un support de type Premium assure des délais de réponse plus rapides ainsi que des réponses de meilleurs
qualités en terme de précision par exemple. Il est généralement approprié pour les projets et clients
importants.
Q) Puis-je intégrer mes propres composants dans l'interface d'utilisateur graphique du Framework?
R) Selon son type (classique ou docking) vous pouvez ajouter à l'interface d'utilisateur graphique un nombre
limité ou illimité de composants dits "Custom Containers". Simples boutons ou menuitems peuvent être
facilement ajoutés aux barres d'outils et aux menus de l'application grâce aux "Launch Tasks".
Q) Comment définir les éléments pouvant être utilisés dans les graphiques?
R) Les éléments sont définis grâce à des fichiers XML contenant les géométries, les styles et les règles
les définissant. Ces fichiers sont facilement lisibles et compréhensibles et offrent la possibilité de définir
des éléments différents pour chaque application. La flexibilité de cette approche est parfaitement
illustrée dans le GraphDesigner où les éléments peuvent être importés lors de l'exécution du programme.
Q) Puis-je associer des informations personnaliséesaux éléments du graph?
R) Oui, et ce grâce en sélectionnant le menuitem "Custom Attribute..." du menu "Insert" ou du menu contextuel des éléments.
La boîte de dialogue apparaissant alors vous permet d'ajouter une liste d'attributs en précisant le nom
et le type de chacun. Les types supportés dans le GraphDesigner sont: String, Integer,
Double, Boolean, Web link, Enumeration, PaintFormat, StrokeFormat,
FontFormat ainsi que des ensembles d'attributs composés afin de créer des structures hiérarchiques.
Une autre possibilité est d'ajouter à l'élément ce qu'on appelle une NodeInfo ou une EdgeInfo.
Ceci est faisable par programmation par simple implémentation d'une interface, laquelle assure que
l'information soit transférée lors d'opérations du type copier-coller.
Q) Comment faire pour arranger un simple graphe?
R) L'exemple suivant montre comment utiliser un LayoutController afin d'arranger un graphe.
Dans ce cas nous utilisons la classe GraphLayoutController située dans le package Layout.
// Étape 1: Initialisation
// Créer une instance de GraphLayoutController:
GraphLayoutController layoutController = new GraphLayoutController();
// Informer la VisualGraphView du LayoutController à utiliser:
myVisualgraph.setLayoutController(layoutController);
// Étape 2: Arrangement
// retrouver la référence au LayoutController
LayoutController layoutCntr = myVisualgraph.getLayoutController();
// définir le contexte:
layoutCntr.setNodeLayoutContext(GraphLayoutController.Energy);
// Exécuter
if (!layoutCntr.apply())
{
System.err.println("Error: " + layoutCntr.getErrorMessage());
} |
Q) Quels algorithmes d'arragement sont disponibles?
R) Le Framework Graphique de Tensegrity propose des arrangements de type hiérarchique, en arbre,
en organigramme, circulaire ainsi que energy (en anglais) pour les noeuds et les liens des graphes.
Il propose également un algorithme spécial pour l'arrangement des liens pouvant être utilisé
pour raffiner leur arrangement après avoir appliqué un autre type d'arrangement.
Il maintient le cheminement courant des liens mais améliore leur arrangement par exemple en créant des
ponts aux points de croisement ou en dispersant ceux qui se superposent.
Il peut de plus être utilisé pour diriger les liens lors d'interactions de l'utilisateur.
Q) Comment faire pour configurer les arragements?
R) Le Layout Controller fournit les méthodes nécessaires à la configuration des algorithmes d'arrangements.
Les méthodes suivantes sont définies pour cela:
setLayoutAttribute(String layoutContext, String key, Object value)
setLayoutAttributeSet(String layoutContext, AttributeSet attributeSet)
Object getLayoutAttribute(String layoutContext, String key)
AttributeSet getLayoutAttributeSet(String layoutContext) |
Q) Quel est le but du "Layout Controller"?
R) La classe LayoutController est la principale classe à utiliser pour la gestion des algorithmes
d'arrangement
disponibles et leur application sur des graphes du Framework. Chaque classe implémentant un
algorithme d'arrangement doit être enregistrée auprès du Layout
Controller avant de pouvoir être utilisée par le Framework Graphique de Tensegrity.
Le Layout Controller rend donc possible l'approche dans laquelle les algorithmes d'arrangement
sont traités de manière uniforme.
Il propose un ensemble important de méthodes pour l'importation, l'exportation, l'animation et
la configuration de ces algorithmes. Il fournit également un grand nombre de méthodes dites callback
méthodes permettant l'injection de code spécifique à différents points stratégiques.
Q) Comment faire pour avoir des graphes constamment arrangés?
R) Pour ce faire le Layout Controller définit les méthodes suivantes:
enableDynamicNodeLayout(boolean layoutPermanent)
enableDynamicEdgeLayout(boolean layoutPermanent)
|
La méthode enableDynamicNodeLayout() peut être utilisée pour déterminer si le
Layout Controller doit arranger l'ensemble du graphe automatiquement après chaque
pertinente modification.
La méthode enableDynamicEdgeLayout() peut être utilisée pour déterminer si le
Layout Controller doit arranger les liens automatiquement après chaque
pertinente modification.
La méthode enableDynamicEdgeLayout() doit être utilisée lorsque l'utilisateur à la possibilité
de modifier le graphe. Le Layout Controller arrange alors automatiquement les liens dès que
nécessaire.