@itwin/measure-tools-react
Version:
Frontend framework and tools for measurements
122 lines • 6.33 kB
JavaScript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
import { IModelApp } from "@itwin/core-frontend";
import { SyncUiEventId, ToolItemDef } from "@itwin/appui-react";
import { MeasurementPreferences } from "../api/MeasurementPreferences.js";
import { MeasurementUIEvents } from "../api/MeasurementUIEvents.js";
import { ClearMeasurementsTool } from "./ClearMeasurementsTool.js";
import { MeasureAngleTool } from "./MeasureAngleTool.js";
import { MeasureAreaTool } from "./MeasureAreaTool.js";
import { MeasureDistanceTool } from "./MeasureDistanceTool.js";
import { MeasureLocationTool } from "./MeasureLocationTool.js";
import { MeasurePerpendicularTool } from "./MeasurePerpendicularTool.js";
import { MeasureRadiusTool } from "./MeasureRadiusTool.js";
import { ToggleDisplayMeasurementAxesTool } from "./ToggleDisplayMeasurementAxesTool.js";
import { MeasureTools } from "../MeasureTools.js";
import { ConditionalBooleanValue } from "@itwin/appui-abstract";
export class MeasureToolDefinitions {
static getMeasureDistanceToolCommand(allowedViewportCallback = (() => true), enableSheetMeasurements, formatting) {
return new ToolItemDef({
toolId: MeasureDistanceTool.toolId,
iconSpec: MeasureDistanceTool.iconSpec,
label: () => MeasureDistanceTool.flyover,
tooltip: () => MeasureDistanceTool.description,
execute: () => {
const tool = new MeasureDistanceTool(enableSheetMeasurements, allowedViewportCallback, formatting);
void tool.run();
},
});
}
static getMeasureAreaToolCommand(allowedViewportCallback = (() => true), enableSheetMeasurements, formatting) {
return new ToolItemDef({
toolId: MeasureAreaTool.toolId,
iconSpec: MeasureAreaTool.iconSpec,
label: () => MeasureAreaTool.flyover,
tooltip: () => MeasureAreaTool.description,
execute: () => {
const tool = new MeasureAreaTool(enableSheetMeasurements, allowedViewportCallback, formatting);
void tool.run();
},
});
}
static getMeasureLocationToolCommand(allowedViewportCallback = (() => true), enableSheetMeasurements, formatting) {
return new ToolItemDef({
toolId: MeasureLocationTool.toolId,
iconSpec: MeasureLocationTool.iconSpec,
label: () => MeasureLocationTool.flyover,
tooltip: () => MeasureLocationTool.description,
execute: () => {
const tool = new MeasureLocationTool(enableSheetMeasurements, allowedViewportCallback, formatting);
void tool.run();
},
});
}
static get clearMeasurementsToolCommand() {
return new ToolItemDef({
toolId: ClearMeasurementsTool.toolId,
iconSpec: ClearMeasurementsTool.iconSpec,
isHidden: !MeasurementUIEvents.isClearMeasurementButtonVisible,
label: () => ClearMeasurementsTool.flyover,
tooltip: () => ClearMeasurementsTool.description,
execute: () => {
void IModelApp.tools.run(ClearMeasurementsTool.toolId);
},
});
}
static get toggleDisplayMeasurementAxesToolCommand() {
return new ToolItemDef({
toolId: ToggleDisplayMeasurementAxesTool.toolId,
iconSpec: ToggleDisplayMeasurementAxesTool.iconSpec,
isHidden: !MeasurementUIEvents.isToggleMeasurementAxesButtonVisible,
label: () => MeasurementPreferences.current.displayMeasurementAxes
? MeasureTools.localization.getLocalizedString("MeasureTools:Generic.hideMeasurementAxes")
: MeasureTools.localization.getLocalizedString("MeasureTools:Generic.displayMeasurementAxes"),
tooltip: () => MeasurementPreferences.current.displayMeasurementAxes
? MeasureTools.localization.getLocalizedString("MeasureTools:Generic.hideMeasurementAxes")
: MeasureTools.localization.getLocalizedString("MeasureTools:Generic.displayMeasurementAxes"),
execute: () => {
void IModelApp.tools.run(ToggleDisplayMeasurementAxesTool.toolId);
},
});
}
static getMeasureRadiusToolCommand(allowedViewportCallback = (() => true), formatting) {
return new ToolItemDef({
toolId: MeasureRadiusTool.toolId,
iconSpec: MeasureRadiusTool.iconSpec,
label: () => MeasureRadiusTool.flyover,
tooltip: () => MeasureRadiusTool.description,
execute: () => {
const tool = new MeasureRadiusTool(allowedViewportCallback, formatting);
void tool.run();
},
});
}
static getMeasureAngleToolCommand(allowedViewportCallback = (() => true), formatting) {
return new ToolItemDef({
toolId: MeasureAngleTool.toolId,
iconSpec: MeasureAngleTool.iconSpec,
label: () => MeasureAngleTool.flyover,
tooltip: () => MeasureAngleTool.description,
execute: () => {
const tool = new MeasureAngleTool(allowedViewportCallback, formatting);
void tool.run();
},
});
}
static getMeasurePerpendicularToolCommand(allowedViewportCallback = (() => true), formatting) {
return new ToolItemDef({
toolId: MeasurePerpendicularTool.toolId,
iconSpec: MeasurePerpendicularTool.iconSpec,
label: () => MeasurePerpendicularTool.flyover,
tooltip: () => MeasurePerpendicularTool.description,
isHidden: new ConditionalBooleanValue(() => !!IModelApp.viewManager.selectedView?.view?.is2d(), [SyncUiEventId.ViewStateChanged]),
execute: () => {
const tool = new MeasurePerpendicularTool(allowedViewportCallback, formatting);
void tool.run();
},
});
}
}
//# sourceMappingURL=MeasureToolDefinitions.js.map