Skip to content

Commit

Permalink
Add Helper Lines module to provide feedback and helper line manager (#…
Browse files Browse the repository at this point in the history
…306)

Helper Lines:
- Draw helper lines when bounds of given elements match with existing
- Draw selection bounds if more than one element is considered
- Use manager class to draw them on client-side move or bounds change

Integration:
- Create PointPositionSnapper for more fine-grained snapping
- Use PointPositionSnapper in PointPositionUpdater
- Use PointPositionUpdater wherever necessary

Other changes:
- Centralize unsnap-modifier as Shift key
- Ensure unsnapped moves are possible in keyboard tool
- Fix typo in 'SetBoundsFeebackCommand' and some file names
- Make popup mouse event transparent by default
- Ensure we export everything from dedicated indices files
- Use 'next' for workflow server standalone
- Add restructuring of tools to CHANGELOG
- Remove ghost feedback only after element is created
  • Loading branch information
martin-fleck-at authored Dec 15, 2023
1 parent 384cb84 commit 8691584
Show file tree
Hide file tree
Showing 101 changed files with 2,788 additions and 754 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
- [diagram] Ensure that the suggestion container position of the `AutoCompleteWidget` is rendered correctly [#304](https://github.com/eclipse-glsp/glsp-client/pull/304)
- [feature] Extend `ToolPalette`/`CreateOperation` API to support rendering of preview/ghost elements when creating new nodes [#301](https://github.com/eclipse-glsp/glsp-client/pull/301)
- [protocol] Fix a bug in `BaseJsonRpcClient` to ensure that it can handle multiple open diagram sessions [#307](https://github.com/eclipse-glsp/glsp-client/pull/307)
- [diagram] Restructure some tools to have a more common infrastructure and support helper lines [#306](https://github.com/eclipse-glsp/glsp-client/pull/306)

## [v2.0.0 - 14/10/2023](https://github.com/eclipse-glsp/glsp-client/releases/tag/v2.0.0)

Expand Down
11 changes: 6 additions & 5 deletions examples/workflow-glsp/src/workflow-diagram-module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,25 +19,26 @@ import {
DefaultTypes,
DeleteElementContextMenuItemProvider,
DiamondNodeView,
GCompartment,
GCompartmentView,
GEdge,
GGraph,
GLSPProjectionView,
GLabel,
GLabelView,
GridSnapper,
LogLevel,
RectangularNodeView,
RevealNamedElementActionProvider,
RoundedCornerNodeView,
GCompartment,
GCompartmentView,
GLabel,
GLabelView,
StructureCompartmentView,
TYPES,
bindAsService,
bindOrRebind,
configureDefaultModelElements,
configureModelElement,
editLabelFeature,
helperLineModule,
initializeDiagramContainer
} from '@eclipse-glsp/client';
import 'balloon-css/balloon.min.css';
Expand Down Expand Up @@ -81,5 +82,5 @@ export function createWorkflowDiagramContainer(...containerConfiguration: Contai
}

export function initializeWorkflowDiagramContainer(container: Container, ...containerConfiguration: ContainerConfiguration): Container {
return initializeDiagramContainer(container, workflowDiagramModule, directTaskEditor, ...containerConfiguration);
return initializeDiagramContainer(container, workflowDiagramModule, directTaskEditor, helperLineModule, ...containerConfiguration);
}
2 changes: 1 addition & 1 deletion examples/workflow-standalone/scripts/config.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"fileName": "workflow-server",
"version": "2.0.1"
"version": "next"
}
1 change: 1 addition & 0 deletions packages/client/css/glsp-sprotty.css
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
max-width: 400px;
min-width: 100px;
z-index: 1;
pointer-events: none;
}

.sprotty-popup > div {
Expand Down
33 changes: 33 additions & 0 deletions packages/client/css/helper-lines.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/********************************************************************************
* Copyright (c) 2023 EclipseSource and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the Eclipse
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
* with the GNU Classpath Exception which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
********************************************************************************/

.helper-line {
pointer-events: none;
stroke: red;
stroke-width: 1px;
opacity: 1;
}

.selection-bounds {
pointer-events: none;
fill: blue;
fill-opacity: 0.05;
stroke-linejoin: miter;
stroke-linecap: round;
stroke: darkblue;
stroke-width: 1px;
stroke-dasharray: 2;
}
20 changes: 20 additions & 0 deletions packages/client/src/base/auto-complete/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/********************************************************************************
* Copyright (c) 2023 EclipseSource and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the Eclipse
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
* with the GNU Classpath Exception which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
********************************************************************************/
export * from './auto-complete-actions';
export * from './auto-complete-widget';
export * from './autocomplete-suggestion-providers';
export * from './base-autocomplete-palette';
export * from './validation-decorator';
19 changes: 19 additions & 0 deletions packages/client/src/base/feedback/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/********************************************************************************
* Copyright (c) 2023 EclipseSource and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the Eclipse
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
* with the GNU Classpath Exception which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
********************************************************************************/
export * from './css-feedback';
export * from './feedback-action-dispatcher';
export * from './feedback-command';
export * from './update-model-command';
17 changes: 17 additions & 0 deletions packages/client/src/base/focus/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/********************************************************************************
* Copyright (c) 2023 EclipseSource and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the Eclipse
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
* with the GNU Classpath Exception which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
********************************************************************************/
export * from './focus-state-change-action';
export * from './focus-tracker';
31 changes: 31 additions & 0 deletions packages/client/src/base/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/********************************************************************************
* Copyright (c) 2023 EclipseSource and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the Eclipse
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
* with the GNU Classpath Exception which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
********************************************************************************/
export * from './action-dispatcher';
export * from './action-handler-registry';
export * from './args-feature';
export * from './auto-complete';
export * from './command-stack';
export * from './default.module';
export * from './drag-aware-mouse-listener';
export * from './editor-context-service';
export * from './feedback';
export * from './focus';
export * from './model';
export * from './ranked';
export * from './selection-clearing-mouse-listener';
export * from './selection-service';
export * from './tool-manager';
export * from './view';
19 changes: 19 additions & 0 deletions packages/client/src/base/model/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/********************************************************************************
* Copyright (c) 2023 EclipseSource and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the Eclipse
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
* with the GNU Classpath Exception which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
********************************************************************************/
export * from './diagram-loader';
export * from './glsp-model-source';
export * from './model-initialization-constraint';
export * from './model-registry';
17 changes: 17 additions & 0 deletions packages/client/src/base/tool-manager/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/********************************************************************************
* Copyright (c) 2023 EclipseSource and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the Eclipse
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
* with the GNU Classpath Exception which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
********************************************************************************/
export * from './tool-manager';
export * from './tool';
18 changes: 18 additions & 0 deletions packages/client/src/base/view/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/********************************************************************************
* Copyright (c) 2023 EclipseSource and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the Eclipse
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
* with the GNU Classpath Exception which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
********************************************************************************/
export * from './key-tool';
export * from './mouse-tool';
export * from './view-registry';
4 changes: 2 additions & 2 deletions packages/client/src/default-modules.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,11 @@ import { layoutModule } from './features/layout/layout-module';
import { navigationModule } from './features/navigation/navigation-module';
import { routingModule } from './features/routing/routing-module';
import { selectModule } from './features/select/select-module';
import { sourceModelWatcherModule } from './features/source-model-watcher/source-model-wacher-module';
import { sourceModelWatcherModule } from './features/source-model-watcher/source-model-watcher-module';
import { statusModule } from './features/status/status-module';
import { svgMetadataModule } from './features/svg-metadata/svg-metadata-module';
import { toolPaletteModule } from './features/tool-palette/tool-palette-module';
import { changeBoundsToolModule } from './features/tools/change-bounds/change-boounds-tool-module';
import { changeBoundsToolModule } from './features/tools/change-bounds/change-bounds-tool-module';
import { deletionToolModule } from './features/tools/deletion/deletion-tool-module';
import { edgeCreationToolModule } from './features/tools/edge-creation/edege-creation-module';
import { edgeEditToolModule } from './features/tools/edge-edit/edge-edit-module';
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/********************************************************************************
* Copyright (c) 2023 EclipseSource and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the Eclipse
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
* with the GNU Classpath Exception which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
********************************************************************************/
export * from './action';
export * from './edge-autocomplete-context';
export * from './edge-autocomplete-palette';
export * from './edge-autocomplete-tool';
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/********************************************************************************
* Copyright (c) 2023 EclipseSource and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the Eclipse
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
* with the GNU Classpath Exception which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
********************************************************************************/
export * from './diagram-navigation-tool';
export * from './element-navigation-module';
export * from './element-navigator';
export * from './left-right-top-bottom-navigator';
export * from './local-element-navigator';
export * from './position-navigator';
17 changes: 17 additions & 0 deletions packages/client/src/features/accessibility/focus-tracker/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/********************************************************************************
* Copyright (c) 2023 EclipseSource and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the Eclipse
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
* with the GNU Classpath Exception which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
********************************************************************************/
export * from './focus-tracker-module';
export * from './focus-tracker-tool';
30 changes: 30 additions & 0 deletions packages/client/src/features/accessibility/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/********************************************************************************
* Copyright (c) 2023 EclipseSource and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the Eclipse
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
* with the GNU Classpath Exception which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
********************************************************************************/
export * from './accessibility-module';
export * from './actions';
export * from './edge-autocomplete';
export * from './element-navigation';
export * from './focus-tracker';
export * from './global-keylistener-tool';
export * from './key-shortcut';
export * from './keyboard-grid';
export * from './keyboard-pointer';
export * from './keyboard-tool-palette';
export * from './move-zoom';
export * from './resize-key-tool';
export * from './search';
export * from './toast';
export * from './view-key-tools';
18 changes: 18 additions & 0 deletions packages/client/src/features/accessibility/key-shortcut/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/********************************************************************************
* Copyright (c) 2023 EclipseSource and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the Eclipse
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
* with the GNU Classpath Exception which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
********************************************************************************/
export * from './accessible-key-shortcut-tool';
export * from './accessible-key-shortcut';
export * from './di.config';
20 changes: 20 additions & 0 deletions packages/client/src/features/accessibility/keyboard-grid/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/********************************************************************************
* Copyright (c) 2023 EclipseSource and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the Eclipse
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
* with the GNU Classpath Exception which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
********************************************************************************/
export * from './action';
export * from './constants';
export * from './keyboard-grid-search-palette';
export * from './keyboard-grid';
export * from './keyboard-node-grid';
Loading

0 comments on commit 8691584

Please sign in to comment.