123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- import 'package:fis_common/event/event_type.dart';
- import 'package:fis_measure/interfaces/enums/items.dart';
- import 'package:fis_measure/interfaces/process/calculators/calculator.dart';
- import 'package:fis_measure/interfaces/process/items/item.dart';
- import 'package:fis_measure/interfaces/process/items/item_feature.dart';
- import 'package:fis_measure/interfaces/process/workspace/point_info.dart';
- import 'package:flutter/foundation.dart';
- import 'item_feature.dart';
- abstract class MeasureItem<T extends MeasureItemFeature> extends IMeasureItem {
- late final ItemMeta _meta;
- late final IMeasureItem? _parent;
- ItemStates _state = ItemStates.waiting;
- ICalculator? _calculator;
- T? _feature;
- final List<IMeasureItemFeature> _measuredFeatures = [];
- MeasureItem(ItemMeta meta, [IMeasureItem? parent]) {
- _parent = parent;
- _meta = meta;
- }
- @override
- String get briefAnnotation => meta.getItem("BriefAnnotation");
- @override
- String get description => meta.getItem("Description");
- @override
- T? get feature => _feature;
- @protected
- set feature(T? value) {
- if (value != _feature) {
- _feature = value;
- }
- }
- @override
- String get workingFormular => meta.getItem("WorkingFormular");
- @override
- ICalculator? get calculator => _calculator;
- @protected
- set calculator(ICalculator? value) {
- if (value != _calculator) {
- _calculator = value;
- }
- }
- @override
- IMeasureItem? get parent => _parent;
- @override
- ItemMeta get meta => _meta;
- @override
- ItemStates get state => _state;
- @protected
- set state(ItemStates value) {
- if (value != _state) {
- _state = value;
- }
- }
- @override
- late final featureUpdated = FEventHandler<IMeasureItemFeature?>();
- @override
- bool execute(PointInfo args) {
- bool result = false;
- if (state == ItemStates.waiting ||
- state == ItemStates.running ||
- state == ItemStates.finished) {
- switch (args.pointType) {
- case PointInfoType.mouseUp:
- case PointInfoType.mouseDown:
- case PointInfoType.mouseMove:
- result = onExecuteMouse(args);
- break;
- case PointInfoType.touchUp:
- case PointInfoType.touchDown:
- case PointInfoType.touchMove:
- result = onExecuteTouch(args);
- break;
- }
- }
- if (result) {
- /// 通知刷新
- doFeatureUpdate();
- }
- return result;
- }
- @override
- void clear() {
- feature = null;
- if (calculator != null) {
- calculator!.finishOnce();
- calculator!.outputs.clear();
- }
- measuredFeatures.clear();
- }
- @protected
- void doFeatureUpdate() {
- featureUpdated.emit(this, feature);
- }
- @protected
- void doFeatureFinish() {
- if (feature != null) {
- feature!.isActive = false;
- measuredFeatures.add(feature!);
- calculator?.finishOnce();
- }
- feature = null;
- state = ItemStates.finished;
- }
- @protected
- void doCalculate() {
- calculator?.calculate();
- // print(calculator?.output?.description);
- }
- @protected
- bool onExecuteMouse(PointInfo args);
- @protected
- bool onExecuteTouch(PointInfo args);
- @override
- List<IMeasureItemFeature> get measuredFeatures => _measuredFeatures;
- }
|