Сделайте края не кликабельными в визуализации Roassal из браузера Glamour
Я рисую динамический вызов с Roassal из браузера Glamour в Pharo 2.0.
По умолчанию не только узлы, но и края кликабельны.
Поскольку у меня нет дополнительной информации для отображения краев, я хочу, чтобы они не были кликабельными. Как убрать "кликабельность"?
Вот как я рисую коллграф из браузера Glamour:
methodsUnderTestAsCallGraphIn: constructor
constructor roassal
painting: [ :view :testFailure |
view shape rectangle
size: 30;
fillColor: ThreeColorLinearNormalizer new.
view nodes: (tests methodsUnderTest: testFailure).
view shape arrowedLine.
view edges: (tests methodsUnderTest: testFailure) from: #yourself toAll: #outgoingCalls.
view treeLayout ];
title: 'Callgraph of methods under test'
Я думаю, что GLMRoassalPresentation>>renderOn: отвечает за добавление "кликабельности":
[...]
self shouldPopulateSelection ifTrue: [
aView raw allElementsDo: [:each |
each on: ROMouseClick do: [:event | self selection: each model ]] ].
[...]
Я хочу сохранить это поведение для узлов, но не для краев.
3 ответа
Это помогает иметь самостоятельный пример, чтобы уточнить поведение, которое вы хотите, поэтому я перефразировал ваш вопрос.
С двумя закомментированными строками, я думаю, это поведение, которое вам не нужно. Предоставляет ли расация эти две строки поведение, которое вы хотите?
browser := GLMTabulator new.
browser column: #myRoassal ; column: #mySelection.
browser transmit
to: #myRoassal ;
andShow:
[ : aGLMPresentation |
aGLMPresentation roassal
painting:
[ : view : numbers | |edges|
view shape rectangle ; withText ; size: 30.
view nodes: numbers.
view interaction noPopup.
view edges: numbers from: [ :x | x / 2] to: [ :x | x ].
" view edges do: [ :edge | edge model:#doNotSelectMe ]."
view treeLayout.
].
].
browser transmit
to: #mySelection ;
from: #myRoassal ;
" when: [ :selection | selection ~= #doNotSelectMe ] ;"
andShow:
[ : aGLMPresentation |
aGLMPresentation text
display: [ : selectedItem | selectedItem asString ]
].
browser openOn: (1 to: 10).
К сожалению, в настоящее время это невозможно, поскольку щелчок жестко закодирован в GLMRoassalPresentation. Однако вы правы, что мы должны найти решение, поэтому я открыл проблему: http://code.google.com/p/moose-technology/issues/detail?id=981
Я не уверен, что вы подразумеваете под "кликабельностью". У вас нет определенного взаимодействия, поэтому по умолчанию это простое всплывающее окно. Если вы хотите удалить всплывающее окно, просто вставьте "noPopup просмотра взаимодействия". Попробуйте это в свежем мольберте Roassal:
view shape rectangle size: 40.
view nodes: #(1 2).
view interaction noPopup.
view edgesFrom: 1 to: 2.