mirror of
https://github.com/google/blockly.git
synced 2026-01-10 10:27:08 +01:00
* Add skeleton for workspace comments * XML parsing and encoding of workspace comments. * Minor fix: piping the height and width from xml to newWorkspaceComment * Move height and width into workspace_comment_svg * rename newWorkspaceComment to newComment * minor refactoring. PR changes * Functions for managing the comment's lifecycle * Add initial tests * Add another test * Add basic rendering of a comment. * Cleanup remaining highlighting steps from render * Fix lint * Fix aslant * Add basic comment translate * Simplify render code into one setPath method * Move steps to setPath_ * Remove svg elements when disposing of a comment; some code cleanup * Add a workspace comment on context menu click and position it where the initial context menu was clicked. * Minor rendering changes, fixes RTL. Fix positioning of new (context menu) comments while workspace is scaled. * PR feedback * Gesture code for dragging comments * Add comment (block drag) surface methods * minor comment fix * Comment fixes * Add comment dragger * Making rendered private * Require CommentDragger * Make basic comment dragging work * Increase the border around the comment to make a bigger drag handle * Remove typo * Allow comments to be selected. Highlight selected comment. Only edit comment on click. Updated comment rendering. * minor refactor: remove commented out code * PR comments * lint and rebuild * Fix renamed function call * Fix workspace getMetrics by storing comment size as a number, not a string * Enable comment deletion when dragging over the toolbox or trash can * Give issue references to some todos * Create a helper function for workspace comment creation * Integrate sam's workspace comments, using the bubble dragger * Remove comment_dragger references * Remove comment dragger.js * Remove pointer handling * Fix lint * Move comment XML functions into the comment files. * Fix tests * Fix type annotations * Fix comments on comments * Fix compiler errors related to visibility. * Fix merge issues and add an issue number to a TODO * Add a new message for default text on workspace comments, and rebuild * Add support for a context menu on workspace comment showing delete and duplication options. Add copy and paste support. * PR comment feedback * Show a delete icon on the comment when selected. Delete icon deletes the comment. Comment can be deleted if dragged onto the toolbox or the trash icon. A normal bubble cannot be deleted that way. * use isDeletable instead * Support drag of the comment during editing mode using the top handle. * Add skeletons for all workspace comment events * Rebuild with new comments * Get rid of confused TODO * JSDoc on a function * Fix broken tests * More PR feedback * Fix lint * Delete comment on mouse out, highlight on mouse down. * Fix lint. * Show delete hand cursor when dragging a comment to delete over the toolbox * Focus textarea on select * Add delete events * Remove workspace comment create event, and add TODO placeholder * Provide default values if comment height and width are missing in XML * Set comment handle fill to none by default * Rebuild * Comment de/serialization should include location. * Add comment move events, with undo and redo * Add comment change events * Move files up to core * Add package/private annotations wherever possible * Move the workspace comment events up to core and into a single file * Mark things package or private where possible * Get rid of unnecessary changes to messge files * Fix lint * Fix some review feedback * Make changes to the comment db happen in addTopComment and removeTopComment * Add css classes for toggling comment focus * Clean up css for comment focus * Rebuild
87 lines
3.1 KiB
JavaScript
87 lines
3.1 KiB
JavaScript
/**
|
|
* @license
|
|
* Blockly Tests
|
|
*
|
|
* Copyright 2017 Google Inc.
|
|
* https://developers.google.com/blockly/
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
'use strict';
|
|
|
|
goog.require('goog.testing');
|
|
|
|
var workspace;
|
|
|
|
function workspaceCommentTest_setUp() {
|
|
workspace = new Blockly.Workspace();
|
|
}
|
|
|
|
function workspaceCommentTest_tearDown() {
|
|
workspace.dispose();
|
|
}
|
|
|
|
function test_noWorkspaceComments() {
|
|
workspaceCommentTest_setUp();
|
|
try {
|
|
assertEquals('Empty workspace: no comments (1).', 0, workspace.getTopComments(true).length);
|
|
assertEquals('Empty workspace: no comments (2).', 0, workspace.getTopComments(false).length);
|
|
workspace.clear();
|
|
assertEquals('Empty workspace: no comments (3).', 0, workspace.getTopComments(true).length);
|
|
assertEquals('Empty workspace: no comments (4).', 0, workspace.getTopComments(false).length);
|
|
} finally {
|
|
workspaceCommentTest_tearDown();
|
|
}
|
|
}
|
|
|
|
function test_oneWorkspaceComment() {
|
|
workspaceCommentTest_setUp();
|
|
try {
|
|
var comment = new Blockly.WorkspaceComment(workspace, 'comment text', 0, 0, 'comment id');
|
|
assertEquals('One comment on workspace (1).', 1, workspace.getTopComments(true).length);
|
|
assertEquals('One comment on workspace (2).', 1, workspace.getTopComments(false).length);
|
|
assertEquals('Comment db contains this comment.', comment, workspace.commentDB_['comment id']);
|
|
workspace.clear();
|
|
assertEquals('Cleared workspace: no comments (3).', 0, workspace.getTopComments(true).length);
|
|
assertEquals('Cleared workspace: no comments (4).', 0, workspace.getTopComments(false).length);
|
|
assertFalse('Comment DB does not contain this comment.', 'comment id' in workspace.commentDB_);
|
|
} finally {
|
|
workspaceCommentTest_tearDown();
|
|
}
|
|
}
|
|
|
|
function test_getWorkspaceCommentById() {
|
|
workspaceCommentTest_setUp();
|
|
try {
|
|
var comment = new Blockly.WorkspaceComment(workspace, 'comment text', 0, 0, 'comment id');
|
|
assertEquals('Getting a comment by id.', comment, workspace.getCommentById('comment id'));
|
|
assertEquals('No comment found.', null, workspace.getCommentById('not a comment'));
|
|
comment.dispose();
|
|
assertEquals('Can\'t find the comment.', null, workspace.getCommentById('comment id'));
|
|
} finally {
|
|
workspaceCommentTest_tearDown();
|
|
}
|
|
}
|
|
|
|
function test_disposeWsCommentTwice() {
|
|
workspaceCommentTest_setUp();
|
|
try {
|
|
var comment = new Blockly.WorkspaceComment(workspace, 'comment text', 0, 0, 'comment id');
|
|
comment.dispose();
|
|
// Nothing should go wrong the second time dispose is called.
|
|
comment.dispose();
|
|
}finally {
|
|
workspaceCommentTest_tearDown();
|
|
}
|
|
}
|