Skip to content

Commit

Permalink
[3166] Fix Label Edit Tool on outside Labels
Browse files Browse the repository at this point in the history
Bug: #3166
Signed-off-by: Axel RICHARD <axel.richard@obeo.fr>
  • Loading branch information
AxelRICHARD committed Feb 27, 2024
1 parent d02067c commit 9975113
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 15 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.adoc
Expand Up @@ -86,6 +86,7 @@ Having `Viewer` as a type did not bring any additional value and it created some
- https://github.com/eclipse-sirius/sirius-web/issues/3127[#3127] [diagram] Fix an issue with handles position
- https://github.com/eclipse-sirius/sirius-web/issues/3143[#3143] [diagram] Fix an issue where the default icon was consistently being used for EdgeTool
The implemented fix does not allow to evaluate an AQL expression, but only to retrieve a static value.
- https://github.com/eclipse-sirius/sirius-web/issues/3166[#3166] [diagram] Fix an issue where label edit tool did nothing on nodes with outside label.

=== New Features

Expand Down
Expand Up @@ -39,19 +39,27 @@ export const useDiagramDirectEdit = (): UseDiagramDirectEditValue => {
event.preventDefault();
const validFirstInputChar =
!event.metaKey && !event.ctrlKey && key.length === 1 && directEditActivationValidCharacters.test(key);
let currentlyEditedLabelId: string | undefined | null = getNodes().find((node) => node.selected)?.data.insideLabel
?.id;
let isLabelEditable: boolean = getNodes().find((node) => node.selected)?.data.labelEditable || false;
if (!currentlyEditedLabelId) {
currentlyEditedLabelId = getEdges().find((edge) => edge.selected)?.data?.label?.id;
isLabelEditable = getEdges().find((edge) => edge.selected)?.data?.centerLabelEditable || false;
}

if (currentlyEditedLabelId && isLabelEditable) {
if (validFirstInputChar) {
setCurrentlyEditedLabelId('keyDown', currentlyEditedLabelId, key);
} else if (key === 'F2') {
setCurrentlyEditedLabelId('F2', currentlyEditedLabelId, null);
let currentlyEditedLabelId: string | undefined | null;
const nodeData: NodeData | undefined = getNodes().find((node) => node.selected)?.data;
if (nodeData) {
if (nodeData.insideLabel) {
currentlyEditedLabelId = nodeData.insideLabel.id;
} else if (nodeData.outsideLabels.BOTTOM_MIDDLE) {
currentlyEditedLabelId = nodeData.outsideLabels.BOTTOM_MIDDLE.id;
}
let isLabelEditable: boolean = nodeData.labelEditable;
if (!currentlyEditedLabelId) {
currentlyEditedLabelId = getEdges().find((edge) => edge.selected)?.data?.label?.id;
isLabelEditable = getEdges().find((edge) => edge.selected)?.data?.centerLabelEditable || false;
}

if (currentlyEditedLabelId && isLabelEditable) {
if (validFirstInputChar) {
setCurrentlyEditedLabelId('keyDown', currentlyEditedLabelId, key);
} else if (key === 'F2') {
setCurrentlyEditedLabelId('F2', currentlyEditedLabelId, null);
}
}
}
},
Expand Down
Expand Up @@ -94,6 +94,16 @@ export const FreeFormNode = memo(({ data, id, selected }: NodeProps<FreeFormNode

useRefreshConnectionHandles(id, data.connectionHandles);

const getLabelId = (data: FreeFormNodeData): string | null => {
let labelId: string | null = null;
if (data.insideLabel) {
labelId = data.insideLabel.id;
} else if (data.outsideLabels.BOTTOM_MIDDLE) {
labelId = data.outsideLabels.BOTTOM_MIDDLE.id;
}
return labelId;
};

return (
<>
<Resizer data={data} selected={selected} />
Expand All @@ -107,9 +117,7 @@ export const FreeFormNode = memo(({ data, id, selected }: NodeProps<FreeFormNode
onDrop={handleOnDrop}
data-testid={`FreeForm - ${data?.targetObjectLabel}`}>
{data.insideLabel && <Label diagramElementId={id} label={data.insideLabel} faded={data.faded} transform="" />}
{selected ? (
<DiagramElementPalette diagramElementId={id} labelId={data.insideLabel ? data.insideLabel.id : null} />
) : null}
{selected ? <DiagramElementPalette diagramElementId={id} labelId={getLabelId(data)} /> : null}
{selected ? <ConnectionCreationHandles nodeId={id} /> : null}
<ConnectionTargetHandle nodeId={id} nodeDescription={data.nodeDescription} />
<ConnectionHandles connectionHandles={data.connectionHandles} />
Expand Down

0 comments on commit 9975113

Please sign in to comment.