blob: edd3eafe33d9d247f857c61ab190dadca07e0036 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
import { inject, injectable } from "tsyringe";
import OperatorFactoryChain from "../OperatorFactoryChain";
import * as operations from "../../../shared/operations";
import Operator from "../Operator";
import TabPresenter from "../../presenters/TabPresenter";
import CloseTabOperator from "./CloseTabOperator";
import CloseTabRightOperator from "./CloseTabRightOperator";
import ReopenTabOperator from "./ReopenTabOperator";
import SelectTabPrevOperator from "./SelectTabPrevOperator";
import SelectTabNextOperator from "./SelectTabNextOperator";
import SelectFirstTabOperator from "./SelectFirstTabOperator";
import SelectLastTabOperator from "./SelectLastTabOperator";
import SelectPreviousSelectedTabOperator from "./SelectPreviousSelectedTabOperator";
import ReloadTabOperator from "./ReloadTabOperator";
import PinTabOperator from "./PinTabOperator";
import UnpinTabOperator from "./UnpinTabOperator";
import TogglePinnedTabOperator from "./TogglePinnedTabOperator";
import DuplicateTabOperator from "./DuplicateTabOperator";
@injectable()
export default class TabOperatorFactoryChain implements OperatorFactoryChain {
constructor(
@inject("TabPresenter")
private readonly tabPresenter: TabPresenter
) {}
create(op: operations.Operation): Operator | null {
switch (op.type) {
case operations.TAB_CLOSE:
return new CloseTabOperator(
this.tabPresenter,
false,
op.select === "left"
);
case operations.TAB_CLOSE_RIGHT:
return new CloseTabRightOperator(this.tabPresenter);
case operations.TAB_CLOSE_FORCE:
return new CloseTabOperator(this.tabPresenter, true, false);
case operations.TAB_REOPEN:
return new ReopenTabOperator(this.tabPresenter);
case operations.TAB_PREV:
return new SelectTabPrevOperator(this.tabPresenter);
case operations.TAB_NEXT:
return new SelectTabNextOperator(this.tabPresenter);
case operations.TAB_FIRST:
return new SelectFirstTabOperator(this.tabPresenter);
case operations.TAB_LAST:
return new SelectLastTabOperator(this.tabPresenter);
case operations.TAB_PREV_SEL:
return new SelectPreviousSelectedTabOperator(this.tabPresenter);
case operations.TAB_RELOAD:
return new ReloadTabOperator(this.tabPresenter, op.cache);
case operations.TAB_PIN:
return new PinTabOperator(this.tabPresenter);
case operations.TAB_UNPIN:
return new UnpinTabOperator(this.tabPresenter);
case operations.TAB_TOGGLE_PINNED:
return new TogglePinnedTabOperator(this.tabPresenter);
case operations.TAB_DUPLICATE:
return new DuplicateTabOperator(this.tabPresenter);
}
return null;
}
}
|