실행 취소 / 다시 실행 스택이 포함 된 Java 앱을 구현하고 있습니다. 일부 응용 프로그램 (예 : Mac OS X의 TextEdit)에서는 일부 텍스트를 입력 한 후 편집 메뉴에서 "입력 취소"를 선택할 수 있습니다. 그런 종류의 일을 내 응용 프로그램에도 구현하고 싶지만 작동 방법에 대한 지침을 찾는 데 어려움을 겪고 있습니다.
시행 착오를 겪으면서 TextEdit의 Undo Typing이 어떻게 작동하는지에 대한 최선의 추측은 다음과 같습니다.
- 사용자가 새 문자를 입력 할 때 (또는 삭제 키를 입력 할 때) 다음 중 하나가 발생하지 않는 한 실행 취소 스택의 맨 위에 있으면 이전 실행 취소 입력 항목으로 병합합니다.
- 15 초 이상 활동이 없으면 사용자가 입력을 계속 한 후 항상 새로운 입력 취소 항목을 작성하십시오
- 사용자가 장시간 입력 한 후 일부 조건이 충족 된 후 항상 새로운 입력 취소 입력 항목을 작성하십시오 (시간 기반인지 문자 수 기반인지 파악할 수 없음).
- 텍스트를 선택한 다음 삭제하거나 덮어 쓸 때 항상 새로운 입력 취소 입력 항목을 만듭니다 (텍스트를 선택하고 변경하지 않은 다음 원래 삽입 점으로 돌아가서 계속 입력해도이 트리거되지 않음)
실제로 Apple의 전략은 효과가있는 것 같지만 (적어도 입력하면 효과가 있습니다) 마지막 시점에서 언급했듯이 실제로 규칙을 파악할 수 없었습니다. 또한 다른 프로그램이 Microsoft Word와 같은 다른 규칙을 따르는 것처럼 보입니다. Google은 Undo Typing 구현에 대해 정의 된 규칙 목록을 작성하지 않았으며 동작 방식에 대한 모범 사례를 보지 못했습니다. 어떻게 동작해야합니까? 아니면 프로그래머의 변덕에 달려 있습니까?
편집 : 명확히하기 위해 지금 구현 세부 사항에 관심이 없습니다. 권위있는 참조 (예 : 모범 사례 또는 사용자 인터페이스 문서)가이 설명 또는 여러 제품에서 구현되는 방법에 대한 설명이 있는지 여부에 대해 특히 궁금합니다.
124<delete>3
취소 및 다시 실행하면 결과가 나타납니다 123
. 이것의 장점은 위의 제안과 같이 사용자의 최종 텍스트 상태가된다는 것입니다.