| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- /**
- * @fileoverview
- * Tool '내어쓰기' Source,
- * Class Trex.Tool.Outdent 와 configuration을 포함
- *
- */
- TrexConfig.addTool(
- "outdent",
- {
- sync: _FALSE,
- status: _FALSE,
- hotKey: { // shift + tab - 내어쓰기
- shiftKey: _TRUE,
- keyCode: 9
- }
- }
- );
- Trex.Tool.Outdent = Trex.Class.create({
- $const: {
- __Identity: 'outdent'
- },
- $extend: Trex.Tool,
- oninitialized: function(config) {
- this.weave(new Trex.Button(this.buttonCfg), _NULL, this.handler);
- this.createHandlers();
- if ($tx.opera == _FALSE) {
- this.observeBackspace();
- }
- this.bindKeyboard(config.hotKey, this.shiftTabKeyHandler.bind(this));
- },
- handler: function() {
- var self = this;
- this.canvas.execute(function(processor) {
- self.onOutdentClicked.handle(processor);
- });
- },
- shiftTabKeyHandler: function() {
- var self = this;
- this.canvas.execute(function(processor) {
- self.onShiftTabPressed.handle(processor);
- });
- },
- observeBackspace: function() {
- var canvas = this.canvas;
- var self = this;
- canvas.observeKey({ keyCode: Trex.__KEY.BACKSPACE }, function() {
- canvas.query(function(processor) {
- self.onBackspace.handle(processor);
- });
- });
- },
- createHandlers: function() {
- var IndentTool = Trex.Tool.Indent;
- var Judge = IndentTool.Judge;
- var Operation = IndentTool.Operation;
- var Handler = IndentTool.Handler;
- var Chain = Trex.ChainHandler;
- var onDefaultOutdent = Chain.connect([
- new Chain(Judge.ListItem, Operation.OutdentListItem),
- new Chain(Judge.BlockNode, Operation.OutdentBlockNode)
- ]);
- var propagate = Chain.connect([
- new Chain(Judge.AlwaysTrue, Operation.Propagate)
- ]);
- var onCollapsedShiftTabPressed = Chain.connect([
- new Chain(Judge.ListItem, Operation.OutdentListItem),
- new Chain(Judge.ChildOfFirstTableCell, Operation.GoToAboveTable),
- new Chain(Judge.ChildOfTableCell, Operation.GoToPreviousCell),
- new Chain(Judge.BlockNode, Operation.OutdentBlockNode)
- ]);
- var onCollapsedBackspace = Chain.connect([
- new Chain(Judge.And(Judge.HeadOfParagraph, Judge.OneDepthList), Operation.Propagate),
- new Chain(Judge.And(Judge.HeadOfParagraph, Judge.ListItem), Operation.OutdentListItem),
- new Chain(Judge.And(Judge.HeadOfParagraph, Judge.IndentedBlockNode), Operation.OutdentBlockNode),
- new Chain(Judge.AlwaysTrue, Operation.Propagate)
- ]);
- this.onShiftTabPressed = new Handler(onCollapsedShiftTabPressed, onDefaultOutdent, onDefaultOutdent);
- this.onOutdentClicked = new Handler(onDefaultOutdent, onDefaultOutdent, onDefaultOutdent);
- this.onBackspace = new Handler(onCollapsedBackspace, propagate, propagate);
- }
- });
|