KR20130105879A - 사용자 인터페이스에서의 작업 공간 관리 - Google Patents

사용자 인터페이스에서의 작업 공간 관리 Download PDF

Info

Publication number
KR20130105879A
KR20130105879A KR1020137017298A KR20137017298A KR20130105879A KR 20130105879 A KR20130105879 A KR 20130105879A KR 1020137017298 A KR1020137017298 A KR 1020137017298A KR 20137017298 A KR20137017298 A KR 20137017298A KR 20130105879 A KR20130105879 A KR 20130105879A
Authority
KR
South Korea
Prior art keywords
application
space
user
api
windows
Prior art date
Application number
KR1020137017298A
Other languages
English (en)
Other versions
KR102004553B1 (ko
Inventor
바스 오딩
존 오. 로치
Original Assignee
애플 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 애플 인크. filed Critical 애플 인크.
Publication of KR20130105879A publication Critical patent/KR20130105879A/ko
Application granted granted Critical
Publication of KR102004553B1 publication Critical patent/KR102004553B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

가상 작업 공간들을 관리하기 위한 브리지 인터페이스의 제공이 기술된다. 복수의 작업 공간 이미지들이 사용자 인터페이스에서 제시되고, 각각의 작업 공간 이미지는 컴퓨터 시스템의 사용자에게 이용가능한 상이한 가상 작업 공간에 대응한다. 제시된 작업 공간 이미지의 선택을 나타내는 사용자 입력이 수신된다. 사용자 인터페이스는 선택된 가상 작업 공간과 연관된 복수의 애플리케이션 윈도우들을 디스플레이하도록 갱신된다. 디스플레이된 애플리케이션 윈도우들은 하나 이상의 클러스터들로 가시적으로 그룹화되고, 각각의 클러스터는 공통 특성을 공유하는 하나 이상의 애플리케이션 윈도우들에 대응한다.

Description

사용자 인터페이스에서의 작업 공간 관리{MANAGING WORKSPACES IN A USER INTERFACE}
<관련 출원 상호 참조>
본 출원은, 그 내용이 본 명세서에서 참조용으로 인용된, 2010년 10월 19일에 출원된, 미국 출원 일련 번호 제12/907,986호에 대한 우선권을 주장한다.
본 발명은 일반적으로 컴퓨팅 디바이스에서의 가상 작업 공간들의 관리에 관한 것이다.
현대의 그래픽 사용자 인터페이스들은, 다수의 그래픽 객체들 또는 항목들이 동시에 디스플레이 스크린에 디스플레이될 수 있게 한다. Apple Mac OS® 등의 선도 퍼스널 컴퓨터 운영 체제들은, 사용자 또는 애플리케이션의 필요에 따라 다수의 윈도우들이 디스플레이, 오버랩, 크기 조절, 이동, 구성, 및 재포맷될 수 있는 사용자 인터페이스들을 제공한다. 태스크바들, 메뉴들, 가상 버튼들 및 다른 사용자 인터페이스 요소들은, 다른 윈도우들 뒤에 숨겨질 때라도 윈도우들을 액세스 및 활성하기 위한 메커니즘들을 제공한다.
그 결과, 대부분의 컴퓨터들은 현재 매우 많은 상이한 프로그램들을 실행할 수 있다. 이는, 예를 들어, 인터넷을 통해, 원격 애플리케이션 서버에 컴퓨터를 연결함으로써, 또는 컴퓨터에 국부적으로 이용가능한 소프트웨어 코드를 실행하는 컴퓨터에 의해 실행될 수 있다. 애플리케이션 프로그램들의 일례들은 주로 기록 관리 프로그램들 및 회의 조직 프로그램들 등의 비즈니스 관련 소프트웨어, 워드 프로세서들 또는 전자 메일 애플리케이션들 등의 비즈니스용 또는 개인용으로 대안으로 사용되는 소프트웨어, 및 온라인 채팅 또는 음악 파일 관리 프로그램들 등의 개인 용도로 주로 의도된 소프트웨어를 포함한다.
다수의 상이한 애플리케이션들이 유효함에 따라, 컴퓨터들에서 다수의 항목들과 함께 작업하도록 사용자들에게 권장한다. 특정 타입의 파일들 등의 항목들의 일부 카테고리들은 특정 애플리케이션 프로그램에 의한 사용으로 제한될 수 있으며, 다른 항목 카테고리들이 수개의 프로그램들과 호환될 수 있다. 사용자의 필요에 따라, 일상적인 작업 루틴의 파트로서 제한된 시간 기간에 수개의 상이한 프로그램들을 사용하거나 또는 특정 목표를 달성할 필요가 있을 수 있다. 그 결과, 사용자들은 때때로 컴퓨터 디스플레이에 열려 있는 수개의 윈도우들을 동시에 가진다.
그러나, 한번에 다수의 윈도우들이 열려있음에 따라, 데스크탑은 클러터되어 개략적으로 살펴 보기가 어렵게 될 수 있다. 그 결과, 사용자가 필요할 때 특정 애플리케이션을 찾기가 어려울 수 있다. 또한, 다수의 윈도우들 및 실행 애플리케이션들을 효율적으로 조직 및 관리하기가 어려울 수 있다. 예를 들어, 사용자는 서로 연관된 애플리케이션 윈도우들을 신속하게 식별하는데 어려움을 가질 수 있다. 일부 인스턴스들에서, 사용자는 다수의 작업 공간들을 가질 수 있으며, 각각의 작업 공간은 그래픽 객체들 및 애플리케이션 윈도우들의 상이한 구성을 가진다. 사용자는 한 작업 공간으로부터 다음 작업 공간으로 신속히 이동할 필요가 있을 수 있으며, 요구되는 대로 작업 공간으로 동적으로 변경할 수 있을 필요가 있다.
일반적인 제1 양상에서, 가상 작업 공간들을 관리하는 방법이 기술된다. 복수의 작업 공간 이미지들이 사용자 인터페이스에서 제시되고, 각각의 작업 공간 이미지는 컴퓨터 시스템의 사용자에게 이용가능한 상이한 가상 작업 공간에 대응한다. 제시된 작업 공간 이미지의 선택을 나타내는 사용자 입력이 수신된다. 사용자 인터페이스는 선택된 가상 작업 공간과 연관된 복수의 애플리케이션 윈도우들을 디스플레이하도록 갱신된다. 디스플레이된 애플리케이션 윈도우들은 하나 이상의 클러스터들로 가시적으로 그룹화되고, 각각의 클러스터는 공통 특성을 공유하는 하나 이상의 애플리케이션 윈도우들에 대응한다.
구현들은 이하의 특징들 중 임의의 특징 또는 모든 특징들을 포함할 수 있다. 적어도 하나의 애플리케이션 윈도우 클러스터의 공유된 공통 특성은, 애플리케이션 윈도우들이 동일한 애플리케이션의 상이한 인스턴스들이라는 것이다. 적어도 하나의 애플리케이션 윈도우 클러스터의 공유된 공통 특성은, 또한, 애플리케이션 윈도우들이 적어도 일부 공통 기능을 공유하는 상이한 애플리케이션들의 인스턴스들이라는 것일 수 있다. 소정의 클러스터의 상이한 애플리케이션들의 공통 기능은 워드 프로세싱, 전자 메일, 웹 브라우징, 파일 브라우징, 시스템 유틸리티, 스프레드시트 조작, 드로잉, 디지털 사진 조작, 시스템 유틸리티, 및 인스턴트 메시징 중 적어도 하나를 포함한다. 본 방법은 각각의 클러스터에 대한 공통 특성 지시자를 디스플레이하는 단계를 더 포함할 수 있다. 공통 특성 지시자는 공통 특성을 나타내는 애플리케이션의 아이덴티티의 가시적인 표현을 포함할 수 있다. 공통 특성 지시자는 또한 공통 특성을 나타내는 기능의 가시적인 표현을 포함할 수 있다. 임의의 클러스터의 윈도우가 임의의 다른 클러스터의 임의의 다른 윈도우와 전혀 오버랩하지 않도록 복수의 클러스터들 각각이 디스플레이된다.
일반적인 제2 양상에서, 컴퓨터 프로그램 제품이 컴퓨터 판독 가능 저장 매체에서 유형적으로 구현되고, 실행될 때, 가상 작업 공간들을 제시하기 위한 그래픽 사용자 인터페이스를 디스플레이 디바이스에서 생성하고 이하의 동작들을 실행하는 명령들을 포함한다. 복수의 작업 공간 이미지들이 사용자 인터페이스에서 제시되며, 각각의 작업 공간 이미지는 컴퓨터 시스템의 사용자에게 이용가능한 상이한 가상 작업 공간에 대응한다. 제시된 작업 공간 이미지의 선택을 나타내는 사용자 입력이 수신된다. 사용자 인터페이스는 선택된 가상 작업 공간과 연관된 복수의 애플리케이션 윈도우들을 디스플레이하도록 갱신된다. 디스플레이된 애플리케이션 윈도우들은 하나 이상의 클러스터들로 가시적으로 그룹화되고, 각각의 클러스터는 공통 특성을 공유하는 하나 이상의 애플리케이션 윈도우들에 대응한다.
구현들은 이하의 특징들 중 임의의 특징 또는 모든 특징들을 포함할 수 있다. 적어도 하나의 애플리케이션 윈도우 클러스터의 공유된 공통 특성은, 애플리케이션 윈도우들이 동일한 애플리케이션의 상이한 인스턴스들이라는 것이다. 적어도 하나의 애플리케이션 윈도우 클러스터의 공유된 공통 특성은, 또한, 애플리케이션 윈도우들이 적어도 일부 공통 기능을 공유하는 상이한 애플리케이션들의 인스턴스들이라는 것일 수 있다. 소정의 클러스터의 상이한 애플리케이션들의 공통 기능은 워드 프로세싱, 전자 메일, 웹 브라우징, 파일 브라우징, 시스템 유틸리티, 스프레드시트 조작, 드로잉, 디지털 사진 조작, 시스템 유틸리티, 및 인스턴트 메시징 중 적어도 하나를 포함한다. 본 방법은 각각의 클러스터에 대한 공통 특성 지시자를 디스플레이하는 단계를 더 포함할 수 있다. 공통 특성 지시자는 공통 특성을 나타내는 애플리케이션의 아이덴티티의 가시적인 표현을 포함할 수 있다. 공통 특성 지시자는 또한 공통 특성을 나타내는 기능의 가시적인 표현을 포함할 수 있다. 임의의 클러스터의 윈도우가 임의의 다른 클러스터의 임의의 다른 윈도우와 전혀 오버랩하지 않도록 복수의 클러스터들 각각이 디스플레이된다.
사용자 인터페이스에서 항목들을 관리하는 하나 이상의 구현들의 세부 사항들이 첨부 도면들 및 이하의 설명에 기술된다. 다른 특징들, 양상들, 및 장점들은 설명, 도면들, 및 청구항들로부터 명백해질 것이다.
도 1은 가상 작업 공간들을 보고 관리하는 브리지 인터페이스를 보여주는 일례의 사용자 인터페이스를 도시한다.
도 2a는 작업 공간 이미지들의 렌더링을 보여주는 일례의 사용자 인터페이스를 도시한다.
도 2b는 브리지 인터페이스인 동안 한 활성 작업 공간으로부터 상이한 작업 공간으로의 전이를 보여주는 일례의 사용자 인터페이스를 도시한다.
도 2c는 애플리케이션 윈도우와 연관된 작업 공간의 변경을 보여주는 일례의 사용자 인터페이스를 도시한다.
도 2d는 적합한 드래그 앤 드롭 동작을 사용하는 새로운 작업 공간의 생성을 보여주는 일례의 사용자 인터페이스를 도시한다.
도 3a-3d는 애플리케이션 윈도우들의 한 클러스터에서 수행되는 일례의 동작들을 도시한다.
도 4는 새로운 가상 작업 공간의 생성을 보여주는 일례의 사용자 인터페이스를 도시한다.
도 5는 사용자 인터페이스에서 작업 공간들의 브리지 뷰를 디스플레이하는 일례의 프로세스의 흐름도이다.
도 6은 애플리케이션 윈도우와 연관된 가상 작업 공간을 변경하는 일례의 프로세스의 흐름도이다.
도 7은 한 활성 작업 공간으로부터 상이한 활성 작업 공간으로 변경하는 일례의 프로세스의 흐름도이다.
도 8은 애플리케이션 윈도우들의 한 클러스터를 확장하는 일례의 프로세스의 흐름도이다.
도 9a-9c는 도 1 내지 도 8을 참조해서 기술된 브리지 인터페이스 프로세스들을 구현하기 위한 일례의 소프트웨어 아키텍처를 도시한다.
도 10은 도 1 내지 도 9c를 참조해서 기술된 사용자 인터페이스들 및 프로세스들을 구현하기 위한 일례의 하드웨어 아키텍처의 블록도이다.
각종 도면들에서의 유사한 참조 부호들은 유사한 요소들을 나타낸다.
개요
퍼스널 컴퓨터, 핸드헬드 디바이스들, 스마트 폰들, 게임 디바이스들, 휴대형 컴퓨터들 등의 컴퓨팅 시스템들은, 프로세싱 유닛(예를 들어, 하나 이상의 프로세서들), 메모리, 및 각종 입력 및 출력 디바이스들(예를 들어, 디스플레이, 키보드, 마우스, 터치-센서티브 표면) 등의 하드웨어 컴포넌트들을 통상 포함한다. 소프트웨어 운영 체제(O/S)는 컴퓨팅 시스템에 설치될 수 있으며, 컴퓨팅 시스템의 동작들을 제어하도록 프로세싱 유닛에 의해 실행될 수 있다.
다수의 운영 체제들 및 소프트웨어 애플리케이션들은 기본 컴퓨팅 디바이스들 및/또는 애플리케이션 프로그램들의 동작 및 기능을 제어하기 위해, 그래픽 사용자 인터페이스(GUI)들을 사용해서, 사용자들에게 정보를 제시하고 사용자 입력을 수신한다. 운영 체제의 전형적인 2차원 GUI는 "데스크탑" 메타포(metaphor)로서 기술될 수 있다.
가시적으로, 운영 체제의 데스크탑은, 연결된 주변 장치들(예를 들어, 디스크 드라이브들, 네트워크 디바이스들, 프린터들 등), 설치된 프로그램들, 저장된 문서들, 애플리케이션 프로그램들을 실행하는 오픈 윈도우들, 파일 시스템 폴더들 등을 나타내는 아이콘들 등의 다른 그래픽 객체들이 제시될 수 있는 배경(예를 들어, 데스크탑 면(desktop plane))을 제공할 수 있다. 또한, 운영 체제의 일부 양상들과의 사용자 상호 동작을 허용하는 사용자 인터페이스 요소들이 또한 데스크탑의 각종 로케이션들에서 제시될 수 있다. 예를 들어, 데스크탑 환경의 기본 제어들을 보여주는 3차원 메뉴 바, 배경에서 실행중인 프로그램들을 보여주는 시스템 트레이, 자주 사용되는 애플리케이션 프로그램들로의 바로 가기를 위한 도킹 스테이션 등이 또한 데스크탑 면에서 제시될 수 있다.
컴퓨팅 디바이스의 운영 체제는 다수의 활성 애플리케이션들을 동시에 종종 지원할 수 있으며, 활성 애플리케이션들 각각은 데스크탑 면에 동시에 제시된 다수의 오픈 윈도우들을 가질 수 있다. 사용자는 자신이 액세스하기를 희망하는 윈도우를 선택(예를 들어, 클릭)함으로써, 활성 애플리케이션들 및 오픈 윈도우들 간에 스위칭할 수 있다. 사용자 선택 시에, 선택된 오픈 윈도우는 입력 포커스를 획득할 수 있으며, 데스크탑의 현재 활성 윈도우(또는 "탑 윈도우")가 된다. 사용자는 활성 윈도우를 제공하는 애플리케이션 프로그램에 의해 지시된 방식으로 현재 활성 윈도우와 상호 동작할 수 있다.
데스크탑에 현재 디스플레이된 윈도우들, 아이콘들, 애플리케이션 컴포넌트들, 태스크바들, 및 다른 그래픽 항목들은, 일부 예들에서, 사용자가 최근에 사용한 또는 사용하기로 계획한 컴포넌트들이다. 데스크탑에 디스플레이된 애플리케이션 윈도우들 및 그래픽 객체들의 수가 증가할 때, 사용자는 특정 애플리케이션 윈도우들을 서로 연관시키기를 선호할 수 있다. 예를 들어, 사용자는 동일한 시간 프레임 내에 사용된 또는 사용될 동일한 태스크 또는 애플리케이션 윈도우들과 관련된 애플리케이션 윈도우들을 함께 그룹화하기를 선호할 수 있다.
일부 구현들에서, 그래픽 객체들은 하나 이상의 가상 작업 공간들, 또는 "공간들(spaces)"로 함께 그룹화될 수 있다. 본 명세서에서 사용된, 공간(a space)은, 공간이 활성될 때 단일 공간의 프로그램(들)/애플리케이션(들)이 보일 수 있도록, 또한, 모든 공간들 및 그 콘텐츠의 뷰가 생성될 수 있도록, 다른 애플리케이션들 또는 윈도우들과 관련된, 하나 이상의 애플리케이션들, 또는 윈도우들의 그룹이다. 각각의 공간은, 연관된 공간이 활성될 때만 디스플레이되는 애플리케이션 윈도우들, 데스크탑 이미지들, 아이콘들, 또는 다른 그래픽 객체들을 포함하는, 상이한 데스크탑 구성을 도시할 수 있다. 사용자는, 윈도우들이 선택되지 않은 공간들의 윈도우들과 관련하여 GUI에서 확장되거나 또는 앞당겨지도록, 특정 선택 공간에서의 윈도우들의 뷰에 집중할 수 있다. 몇 가지 예를 들면, 애플리케이션 프로그램은 한 공간에 하나보다 더 많은 윈도우를 가질 수 있으며, 또는 애플리케이션은 하나보다 더 많은 공간에서 윈도우들을 가질 수 있다.
GUI의 브리지 인터페이스는 사용자가 상이한 공간들을 효율적으로 관리할 수 있게 하도록 사용자에게 현재 이용가능한 공간들의 개요를 제시할 수 있다. 본 명세서에서 사용된 바와 같이, 브리지 뷰 또는 브리지 인터페이스는 가상 작업 공간들 중 하나와 연관된 애플리케이션 윈도우들 중 적어도 일부와 동시에 디스플레이된 다수의 가상 작업 공간들의 사용자 인터페이스에서 디스플레이될 수 있다. 썸네일 이미지들이 각각의 공간을 나타내도록 디스플레이될 수 있으며, 공간이 활성될 때 보이는 것처럼 각각의 공간의 축소된 표현을 제공한다. 일부 구현들에서, 각각의 썸네일 이미지는 썸네일 이미지에 의해 표현된 공간과 연관된 애플리케이션 윈도우들의 상태의 라이브 묘사(live depiction)이다. 사용자는 상이한 사용자 입력들을 사용해서 특정 공간을 활성하도록 썸네일들을 네비게이트 및 선택할 수 있다. 브리지 인터페이스에서, 활성된 공간은 조직화된 포맷의 공간과 연관된 애플리케이션 윈도우들의 프리젠테이션을 포함하고, 사용자가 공통 특성을 공유하는 애플리케이션 윈도우들을 신속하게 식별 및 액세스할 수 있게 한다.
사용자 인터페이스에서의 데스크탑들의 뷰 및 관리를 위한 일례의 사용자 인터페이스들
도 1은 운영 체제의 데스크탑일 수 있는, 일례의 사용자 인터페이스(100)를 도시한다. 2차원 데스크탑 면은 기본 하드웨어 스크린의 디스플레이 표면과 거의 동일 평면이거나 또는 평행한 외관을 가진다. 운영 체제 환경에서 실행중인 애플리케이션이 새로운 윈도우를 생성할 때, 윈도우는 2차원 데스크탑 면의 상부에 디스플레이될 수 있다. 사용자 인터페이스(100)는 본 일례에서 데스크탑들 및 애플리케이션들의 브리지 뷰(100)에서 제시된 공간들을 포함할 수 있다. 도면은 그래픽 사용자 인터페이스 및 공간 요소들의 디스플레이에서 발견될 수 있는 요소들, 여기서는, 이용가능한 애플리케이션들의 디스플레이를 위한 도크(130), 오픈 애플리케이션 윈도우들(120, 122, 124, 126, 128)의 그룹들, 대시보드(104) 또는 캘린더(112) 등의 시스템 공간들, 및 썸네일들의 행(103)에 배열된 수개의 개별 공간들(106, 108, 110)을 포함하며, 각각의 썸네일은 상이한 공간을 나타낸다. 대시보드는 위젯으로 알려진 미니-애플리케이션들을 호스팅하는데 사용되는 애플리케이션일 수 있다. 일부 구현들에서, 대시보드는 (예를 들어, 아이콘을 클릭함으로써) 활성되지 않는 한 사용자에게 보이지 않는 반투명 층일 수 있다. 대시보드가 활성될 때, 사용자의 데스크탑이 흐릿해지고 위젯이 전경에 나타난다. 위젯은 기능 및/또는 정보를 제공할 수 있다. 위젯은 이동, 재배열, 삭제 및 재생성될 수 있다. 일부 구현들에서, 대시보드 위젯은 대시보드 내에 디스플레이된 HTML 파일들일 수 있다.
애플리케이션들 또는 운영 체제에 의해 제공된 툴바들이 컴퓨터의 디스플레이에 도시될 수 있다. 일부 구현들에서, 툴바는 브리지 뷰(100)의 디스플레이 중에는 뷰로부터 숨겨진다. 툴바는 메뉴들, 아이콘들, 및 정보 객체들 등의 항목들을 포함할 수 있다. 일부 메뉴들은, 파일 메뉴와 같이, 특정 애플리케이션에 특정하지 않으며 일반적일 수 있다. 다른 메뉴들은, 단말 메뉴와 같이, 애플리케이션 종속적일 수 있으며, 이 경우 대응 애플리케이션 윈도우가 활성 상태인지에 따라 툴바에 추가 또는 툴바로부터 제거될 수 있다. 일반적으로, "활성 애플리케이션 윈도우"는 키보드, 터치패드, 또는 터치 스크린 등의 입력 디바이스들의 사용자 입력의 주요 수신인으로서 지정된 프로그램 윈도우를 말한다. 사용자, 또는 운영 체제 등의 컴포넌트는, 상이한 프로그램 윈도우가 소정의 공간 내에서 활성 프로그램 윈도우로서 지정되게 야기할 수 있다. 아이콘들은, 상태 정보 등의 정보를 사용자에게 제시하는데 사용될 수 있고/있으며, 예를 들어, 다른 애플리케이션 윈도우를 오픈하기 위한 팝업 메뉴들 또는 커맨드들을 통해 기능들에 액세스하는데 사용될 수 있다. 디스플레이는, 흔히 사용되는 영역을 제공하는, 도킹 소자(130)를 또한 포함할 수 있으며, 또는 양호한 애플리케이션들이 도킹 소자(130)에 포함된 아이콘들의 선택을 통해 쉽게 액세스될 수 있으며, 각각의 아이콘은 상이한 애플리케이션과 연관된다.
다수의 공간들을 가진 컴퓨터 디스플레이가 도시되며, 제1 공간(106), 제2 공간(108), 및 제3 공간(110)을 포함한다. 도시된 브리지 뷰에서, 공간들은 디스플레이의 상부에 가까운 행(103)에 배열되며, 각각의 공간은, 예를 들어, 더 상세히 보여주도록 줌될 수 있는 더 큰 데스크탑의 일부분들을 보여준다. 일부 구현들에서, 공간들의 행(103)은 상이한 포맷들로 스크린에서 상이한 로케이션들에 배열될 수 있다. 예를 들어, 행(103)의 공간들은 공간이, 대시보드(104) 등의 시스템 공간인지, 또는 사용자 정의 공간인지에 기초하여 상이한 그룹들로 분리될 수 있다. 예를 들어, 시스템 공간들은 행(103)에 함께 디스플레이될 수 있으며, 사용자 정의 공간들은 시스템 공간들에 인접하여 디스플레이될 수 있다. 공간들 각각은 해당 공간 내에서 오픈된 애플리케이션 윈도우들의 응축된 표현으로 브리지 뷰에서 표현된다. 본 일례에서, 공간(106)은, 공간(106) 내에 오픈된 애플리케이션 윈도우들의 소형화 묘사를 포함해서, 가상 작업 공간 이미지(106), 또는 썸네일 이미지에 의해 공간들의 행(103)에 표현된다. 줌 모드에서, 단일 공간은 활성되어 더 큰 크기로 제시될 수 있으며, 다른 공간들에 포함된 애플리케이션 윈도우들은 숨겨지거나 또는 오직 부분적으로만 보인다. "활성" 공간은 컴포넌트들이 사용자에 의해 액세스되도록 쉽게 이용가능하고 가시적으로 되게 하는 선택된 공간이다. 특정 공간이 활성될 때, 다른 공간들과 연관된 가시적인 컴포넌트들은 뷰로부터 숨겨질 수 있다. 공간들은 즉시 디스플레이에 도시될 수 있는 것 보다 더 큰 데스크탑 표면을 나타낸다. 따라서, 애플리케이션 윈도우들은 공간에서 활성 윈도우들을 전부 또는 대부분을 보여줄 수 있도록 감소된 크기로 도시된다.
특정 구현들에서, 한 공간은 특정 애플리케이션 또는 애플리케이션들의 구성에 전용될 수 있다. 예를 들어, 도 1에 도시된 바와 같이, 공간은, 날씨 예보, 시계, 계산기, 또는 대시보드 애플리케이션들로서 지정된 다른 애플리케이션들 등, 흔히 사용되는 애플리케이션들의 대시보드(104)로서 작용할 수 있다. 공간들은 또한 공간(112)에 의해 표현된 캘린더 또는 플래너 등의 다른 용도들에 전용될 수 있다.
각각의 공간은 또한 데스크탑 바탕 화면(170) 등의 특정 이미지와 연관될 수 있다. 데스크탑 바탕 화면(170)은 데스크탑 인터페이스의 배경에 디스플레이된 이미지로서 작용한다. 따라서, 오픈 애플리케이션 윈도우들의 그룹과 연관되는 것 외에, 각각의 공간은, 공간이 활성될 때 배경에 디스플레이되는 특정 데스크탑 이미지 등의, 특정 디스플레이 세팅들과 연관될 수 있다. 본 인스턴스에서, 각각의 공간은 자신의 데스크탑으로서 작용하고, 사용자는 사용자의 선호에 따라 배경 이미지, 사용되는 애플리케이션 윈도우들, 또는 특정 공간의 다른 세팅들을 결정함으로써 각각의 공간을 개인화할 수 있다.
하나 이상의 애플리케이션 윈도우들은 한 공간 내에서 다수의 방법들로 배열될 수 있다. 애플리케이션 윈도우들은 서로 완전히 또는 부분적으로 오버랩하도록 배치될 수 있다. 애플리케이션 윈도우들은 사용자에게 맞추도록 공간들에서 이동하거나 크기 조정될 수 있다. 특히, 다수의 윈도우들이 즉시 오픈되어 공간들 간에 분산되는 동안, 일부 구현들에서, 특정 공간의 애플리케이션 윈도우(들)만이 해당 공간이 활성될 때 보일 수 있다. 일부 예들에서, 현재 활성되지 않은 다른 공간으로부터의 프로그램들 또는 윈도우들이 보일 수 있다. 예를 들어, 도 1에 도시된 브리지 뷰(100)에서, 모든 유효 공간들이 공간들의 행(103) 등의 조직화된 구성으로 도시될 수 있다. 다른 예들에서, 다른 공간의 작은 표현이 "화면 속 화면(picture-in-picture)" 효과를 달성하도록 브리지 뷰로부터 멀리 떨어져서 디스플레이에서 보일 수 있다. 일부 경우들에서, 애플리케이션 또는 윈도우는 공간이 디스플레이되지 않더라도 간략하게 나타날 수 있다; 예를 들어, 태스크 완료 등의 일부 이벤트들은, 제한된 시간 동안 또는 사용자가 윈도우를 해제할 때까지 프로그램 윈도우가 나타나게 야기할 수 있다.
공간이 활성될 때, 활성된 공간의 애플리케이션 윈도우들은 브리지 뷰(100)로 들어가기 전에 원래의 위치들로 복원된다. 디스플레이는 일부 구현들에서 브리지 뷰(100)를 빠져나올 수 있으며, 활성된 공간의 콘텐츠만을 제시할 수 있다. 공간과 연관된 배경 이미지가 데스크탑 바탕 화면으로서 디스플레이된다. 브리지 뷰(100)가 디스플레이될 때, 한 공간에 대한 애플리케이션 윈도우들이 스크린의 유효 영역들에서 함께 그룹화 또는 클러스터된다. 특정 예들에서, 윈도우들의 각각의 그룹은 특정 데스크탑에 대한 특정 애플리케이션과 연관된 모든 애플리케이션 윈도우들 또는 애플리케이션 인스턴스들을 포함한다. 또한, 윈도우들의 각각의 그룹은 애플리케이션 윈도우들의 한 "클러스터"로서 기술될 수 있다. 윈도우들의 그룹은, 또한, 상이한 애플리케이션들과 연관되지만 기능은 유사한 윈도우들 등, 다른 공유된 특성들에 기초할 수 있다. 예를 들어, 수개의 웹 브라우저 윈도우들이 한 특정 공간에서 오픈될 수 있다. 공간이 활성되면, 그 공간 내의 윈도우들은 디스플레이의 맨 앞으로 끌어 당겨지는 것처럼 확대된다. 그 공간의 웹 브라우저 윈도우들 각각은 스크린의 특정 영역에서 함께 그룹화될 수 있으며, 웹 브라우저 윈도우들의 한 클러스터를 형성한다. 윈도우들의 각각의 클러스터는 윈도우들의 특정 클러스터의 윈도우들과 연관된 특정 애플리케이션을 나타내는 아이콘과 연관될 수 있다. 따라서, 윈도우들의 특정 클러스터의 영역에 디스플레이된 아이콘에 기초하여, 사용자는 클러스터에서 발견된 윈도우들의 타입들을 식별할 수 있다. 또한, 사용자는 애플리케이션 윈도우들이 공통 특성을 공유하는지 또는 동일한 애플리케이션과 연관되는 지와 무관하게 클러스터로서 함께 그룹화하도록 애플리케이션 윈도우들을 마음대로 선택할 수 있다.
본 일례에서, 공간(106)이 현재 선택된다. 도 1에 도시된 바와 같이, 공간(106)과 연관된 애플리케이션 윈도우들(120, 122, 124, 126, 128)의 각각의 그룹은 공간(106)에 대한 선택된 데스크탑에 도시된다. 또한, 애플리케이션 윈도우들의 각각의 그룹은 특정 애플리케이션에 대한 또는 공통 특성을 공유하는 오픈 애플리케이션 윈도우들을 포함할 수 있다. 예를 들어, 웹 브라우저와 연관된 애플리케이션 윈도우들은 한 클러스터(128)에서 함께 그룹화될 수 있으며, 아이콘(128a)은 클러스터(128)의 애플리케이션 윈도우들이 웹 브라우저 애플리케이션과 연관됨을 사용자가 신속하게 결정할 수 있도록 클러스터(128)의 주변에 디스플레이될 수 있다. 웹 브라우저 애플리케이션과 연관된 개별적인 아이콘(128b)이 또한 웹 브라우저 애플리케이션의 추가 윈도우들의 쉬운 오픈을 위해 도킹 소자(130)에 도시될 수 있다. 유사하게, 클러스터들(120, 122, 124, 및 126) 등의 공간(106)의 각각의 클러스터는 상이한 애플리케이션과 연관된다. 일부 구현들에서, 임의의 클러스터의 윈도우가 상이한 클러스터의 임의의 다른 윈도우와 전혀 오버랩하지 않도록 클러스터들은 디스플레이된다. 도 1에 도시된 바와 같이, 클러스터들 각각은 사용자가 도킹 소자(130)로부터 선택할 수 있는 특정 애플리케이션들과 연관된 애플리케이션 윈도우들의 그룹이다. 도킹 소자(130)는 사용자에게 이용가능한 각각의 애플리케이션에 대한 아이콘들(120b, 122b, 124b, 126b, 128b, 180, 190)을 포함한다. 일부 구현들에서, 도크(130)가 현재 활성된 공간과 무관하게 사용자 인터페이스에서 디스플레이되어, 사용자가 선택된 공간을 손실하지 않고 도크(130)를 네비게이트할 수 있다.
윈도우들의 각각의 클러스터는 GUI의 동일한 영역에서 동일한 애플리케이션과 연관된 윈도우들을 함께 그룹화하도록 크기가 감소된 윈도우들을 포함할 수 있다. 특정 구현들에서, 모든 클러스터들에 걸친 애플리케이션 윈도우들은 공간들의 상대적인 비례를 유지하기 위해 동일한 비율 계수(scale factor)로 크기가 감소된다. 특정 클러스터가 활성되었으면, 또는 클러스터 내의 특정 윈도우가 선택되면, 윈도우(들)가 더 큰 크기로 확장될 수 있다. 다수의 윈도우들이 한 클러스터로 그룹화되면, 연속적인 배열(cascading arrangement) 또는 오버랩 배열 등의, 특정 순서로 배열될 수 있다. 일부 구현들에서, 순서 알고리즘이 클러스터의 윈도우들의 배열에 대한 특정 순서를 결정하는데 사용될 수 있다. 예를 들어, 순서 알고리즘은 한 클러스터의 윈도우들을 배열하는 순서를 결정하기 위해 각종 어림법(heuristics), 세팅들, 사용자 선호, 또는 다른 파라미터들을 사용할 수 있다. 순서 알고리즘에 의해 사용된 파라미터들은, 예를 들어, 각각의 윈도우와 연관된 크기들, 윈도우의 타입, 윈도우가 클러스터의 다른 윈도우들과 관련해서 얼마나 최근에 액세스됐는지, 윈도우의 일부분이 어떻게 인식될 수 있는지, 사용자의 선호와 관련된 경험적 데이터, 및 클러스터의 윈도우들의 적합한 배열을 결정하는데 사용된 다른 인자들을 포함할 수 있다. 또한, 각각의 클러스터 내에서, 최고 우선 순위를 가지는 윈도우들이 더 낮은 우선 순위를 가지는 윈도우들에 비해 가장 노출된 영역에 디스플레이되도록, 윈도우들이 배열될 수 있다. 각각의 윈도우의 우선 순위는, 예를 들어, 윈도우가 사용자에 의해 얼마나 최근에 액세스되었는지 등의 각종 요인들에 좌우될 수 있다. 예를 들어, 다수의 애플리케이션 윈도우들의 클러스터에서, 사용자가 가장 최근에 상호 동작(예를 들어, 클릭)한 특정 윈도우가 클러스터의 활성 윈도우로서 지정될 수 있다. 일부 구현들에서, 한 클러스터의 윈도우들은 GUI의 한 영역에서 함께 그룹화되며, 반드시 겹겹이 쌓이거나 오버랩되지는 않는다. 윈도우들의 클러스터들은 윈도우들이 클러스터되기 전에 윈도우들이 GUI에서 위치한 장소에 적어도 부분적으로 기초하여 특정 영역에서 그룹화될 수 있다.
도 1에 도시된 브리지 뷰는, 사용자가 이용가능한 공간들을 보고 어떤 공간을 사용할 것인지를 선택할 수 있게 한다. 일부 구현들에서, 사용자는, 키보드 입력 등의 특정 사용자 입력, 터치패드에서의 특정 제스처, 마우스 등의 입력 디바이스를 사용한 선택, 또는 임의의 다른 적합한 사용자 입력을 통해 브리지 뷰로 또는 브리지 뷰로부터 전이할 수 있다. 브리지 뷰 모드일 때, 애플리케이션들은 계속해서 실행될 수 있으며, 프로그램 윈도우들은, 예를 들어, 더 작은 스케일로, 정상 방식으로 디스플레이될 수 있다. 프로그램 윈도우들은 계속해서 갱신, 예를 들어, 애니메이션 디스플레이, 콘텐츠 재생 등을 할 수 있다. 애플리케이션 윈도우들의 계속적인 갱신은 행(103)의 썸네일 이미지들 및 브리지 뷰(100)의 윈도우들의 클러스터들 둘 다에 도시될 수 있다. 어떤 의미에서, 브리지 뷰(100) 모드는 모든 공간들 및 애플리케이션들의 가시적인 개요 및 각각의 공간 내의 가시적인 세팅들을 사용자에게 제공한다. 사용자들은, 마우스, 키보드 핫 키들, 키 조합들, 제스처들, 또는 다른 메커니즘들 등의 적합한 사용자 입력으로 공간들 간에 네비게이트할 수 있다. 예를 들어, 물리적 장애를 가진 사용자들을 위한 대안의 입력 기능을 제공하기 위한 디바이스들 등, 다른 디바이스들이 또한 입력을 위해 사용될 수 있다. 사용자가 공간들의 부집합에 줌 인할 수 있다. 일 구현에서, 시스템은 선정된 이벤트에 기초하여, 예를 들어, 특정 애플리케이션이 시작되거나 또는 애플리케이션이 특정 출력을 생성할 때, 한 공간으로부터 다른 공간으로 자동으로 스위칭할 수 있다.
브리지 뷰에서 공간들을 관리하는 일례의 동작들
도 2a-d는 브리지 뷰의 공간들에서 실행되는 상이한 동작들의 일례의 스크린샷들(200, 250, 280, 및 290)을 도시한다. 예를 들어, 도 2a에 도시된 바와 같이, 브리지(203)의 공간들은 사용자에 의해 또는 자동으로 컴퓨터 애플리케이션에 의해 재배열될 수 있다. 본 일례에서, 공간들은, 대시보드 공간(204)은 맨 왼쪽에, 그 다음 제1 공간(206), 제2 공간(208), 제3 공간(210), 및 캘린더 애플리케이션(212)이 맨 오른쪽에의 특정 순서로 초기에 배열된다. 사용자는 적합한 사용자 입력을 사용해서 공간들의 순서를 선택적으로 재배열할 수 있다. 예를 들어, 사용자는 썸네일들의 행(203)에 디스플레이된 공간들을 재배치하기 위해 마우스 또는 터치패드를 사용해서 드래그 앤 드롭 동작(a drag and drop action)을 실행할 수 있다. 다수의 운영 체제들은, 드래그 앤 드롭 동작이 GUI에서 현재 선택된 항목들에 대해 수행되게 할 수 있다. 드래그 앤 드롭 동작에서, 선택된 항목들의 표현들은 포인터(예를 들어, 마우스 커서 또는 터치-센서티브 표면에서의 포인팅 디바이스)의 이동에 이어 사용자 인터페이스에서 GUI의 한 영역으로부터 GUI의 다른 영역으로 이동(또는 "드래그")될 수 있다. 항목들이 희망 목표 영역의 드롭 지역 위에서 해제(또는 "드롭")될 때, 선택된 항목들은 희망 목표 영역의 콘텐츠 항목들이 된다.
본 일례에서, 사용자는 공간(208)을 한 로케이션으로부터 드래그 앤 드롭해서, 상이한 주변 공간들 사이 등의, 상이한 영역으로 공간을 삽입할 수 있다. 그러나, 특정 구현들에서, 일부 공간들은 이동될 수 있으며, 일부는 고정된다. 예를 들어, 공간(206) 등의 특정 데스크탑은 디폴트 공간으로서 지정될 수 있으며, 썸네일들의 행(203)에 고정된다. 도 2a에 도시된 바와 같이, 공간(208)은 공간들(206 및 210) 간의 원래의 위치로부터 추출되어, 공간들(210 및 212) 사이에서 오른쪽으로 더 삽입될 수 있다. 사용자가 공간들의 행(203)을 네비게이트함에 따라, 특정 공간 썸네일 위에서 슬라이딩하는 입력의 포인터 또는 다른 지시자는 사용자가 공간의 콘텐츠를 더 자세하게 볼 수 있게 하기 위해 공간 썸네일을 일시적으로 확대하는 애니메이션을 트리거할 수 있으며, 주변 공간들은 일시적인 확대를 수용하기 위해 크기가 감소된다. 공간이 다른 공간에 의해 이미 차지된 새로운 위치로 이동되면, 다른 공간은 이동된 공간을 위한 자리를 만들기 위해 자동으로 재배치될 수 있다. 또한, 재배치된 공간 또는 하나 이상의 다른 공간들이 빈 공간 위치를 채우기 위해 조정될 수 있다. 일부 구현들에서, 재배열 공간(208)의 애니메이션은 커서가 스크린의 상이한 영역으로 이동함에 따라, 커서에 이어, 사용자에 의해 제어된 커서에 의해 원래의 위치로부터 당겨지고, 사용자가 입력 디바이스에서 버튼을 해제하는 등의 입력을 입력한 후에 커서로부터 스크린의 한 영역으로 떼어지는 공간(208)의 묘사를 포함할 수 있다. 여기서, 공간(208)은 공간들(210 및 212) 사이에서 이동되고, 공간(210)은 행(203)에서 공간(208)의 원래의 위치라고 간주되는 왼쪽으로 이동한다. 사용자는 또한 공간 이동들을 처리하는 양호한 방법을 명시할 수 있다.
다른 동작들, 예를 들어, 특정 공간의 재 명명 또는 공간에 대한 새로운 바탕 화면의 선택 등이 한 공간에서 실행될 수 있다.
도 2b는 한 활성 공간으로부터 상이한 활성 공간으로의 전이의 일례의 스크린샷을 도시한다. 특정 구현들에서, 사용자는 제1 공간을 활성할 수 있으며, 그 후, 제1 공간으로부터 새롭게 활성된 제2 공간으로 매끄럽게 전이할 수 있다. 예를 들어, 사용자가 도 2b의 공간(206) 등의 공간을 활성할 때, 공간(206)과 연관된 애플리케이션 윈도우들의 클러스터들 및 데스크탑 바탕 화면이 작업 공간(260)에 디스플레이된다. 여기서, (애플리케이션 윈도우들 및 데스크탑 바탕 화면들의 응축된 버전들이 공간들(208 및 210)의 이미지들 등의, 상이한 공간들을 나타내는 이미지들의 행(203)의 썸네일 이미지들에서 보일 수 있더라도) 현재 활성되지 않은 공간들과 연관된 애플리케이션 윈도우들 및 데스크탑 바탕 화면들은 공간(206)의 주요 작업 공간(260)에 디스플레이되지 않는다.
사용자는, 적합한 입력을 사용해서 활성하기 위해, 공간(210) 등의 상이한 공간을 선택할 수 있다. 일부 예들에서, 사용자는 터치스크린에서 커서 또는 손가락을 사용해서 썸네일들의 행(203)에서 공간(210)을 나타내는 이미지를 클릭함으로써, 키보드에서 특정 입력을 입력함으로써, 또는 멀티-터치 입력 디바이스에서 사용자의 손가락들에 의한 특정 제스처를 사용해서 활성을 위한 공간(210)을 선택할 수 있다. 특정 제스처는, 예를 들어, 멀티-터치 입력 디바이스에 걸친 사용자의 손가락들의 스와이프를 포함할 수 있다. 활성을 위한 공간(210)의 사용자의 선택은 공간(210)과 연관된 작업 공간(270)의 활성 전에 공간(206)의 비활성을 야기한다. 전이는 임의의 적합한 애니메이션을 사용해서 도시될 수 있다. 예를 들어, 도 2b에 도시된 바와 같이, 전이는 스크린에 걸친 작업 공간들의 슬라이딩으로서 도시될 수 있다. 애니메이션은, 선택된 공간(210)과 연관된 데스크탑 바탕 화면 및 애플리케이션들의 클러스터를 포함해서, 새롭게 활성된 작업 공간(270)이 오른쪽으로부터 스크린으로 슬라이딩함에 따라 작업 공간(260)이 스크린 왼쪽으로 비활성되어 슬라이딩하는 것을 포함할 수 있다. 슬라이딩 작업 공간들의 방향은 썸네일들의 행(203)의 공간들의 상대 위치들에 대응할 수 있다. 본 일례에서, 새롭게 활성된 공간(210)은 이전 공간(206)의 오른 쪽에 배치되어서, 작업 공간들(260 및 270)의 슬라이딩 이동은 오른쪽에서 왼쪽으로이다.
한 공간으로부터 인접한 공간으로의 스위칭은 멀티-터치 입력 디바이스에서의 상이한 제스처들을 사용해서 달성될 수 있다. 일부 구현들에서, 사용자는 현재 활성 공간을 나타내는 썸네일의 오른쪽의 썸네일 이미지에 의해 표현된 공간으로 현재 활성 공간을 스위칭하기 위해 오른쪽에서 왼쪽으로의 방향으로 멀티-터치 입력 디바이스에서 스와이핑 제스처를 실행할 수 있다. 대안으로, 사용자는 현재 활성 공간을 나타내는 썸네일의 왼쪽의 썸네일 이미지에 의해 표현된 공간으로 현재 활성 공간을 스위칭하기 위해 왼쪽에서 오른쪽으로의 방향으로 스와이핑 제스처를 실행할 수 있다.
또한, 도 2b에 도시된 바와 같이, 새롭게 활성된 공간(210)은 이전 공간(206)에 인접한 썸네일에 의해 표현된다. 따라서, 애니메이션은 한 작업 공간(260)으로부터 직접 다른 작업 공간(270)으로 전이함을 포함한다. 특정 구현들에서, 슬라이딩 애니메이션이 또한 썸네일들의 행(203)에서 서로 인접하지 않은 두 공간들 간의 전이, 예를 들어, 공간(208)으로부터 공간(210)으로의 직접 전이에 사용될 수 있다. 본 인스턴스에서, 두 공간들 간의 공간들의 데스크탑들로부터의 일부 세부 사항은 공간들 간의 또한 한 활성 공간으로부터 다른 활성 공간으로의 공간 관계를 도시하기 위해 애니메이션에 포함될 수 있다. 따라서, 본 일례에서, 공간(208)으로부터 공간(210)으로의 전이는 스크린을 슬라이딩 오프하는 공간(208) 및 스크린으로 슬라이딩하는 공간(210)의 애니메이션들 간의 전체 스크린에 걸쳐 슬라이딩하는 공간(206)으로부터의 세부 사항들을 도시하는 애니메이션을 포함할 수 있다.
도 2c는 데스크탑 공간들의 관리 중에 수행될 수 있는 다른 일례의 동작을 도시한다. 사용자는 애플리케이션 윈도우들, 아이콘들, 또는 데스크탑 바탕 화면의 초기 구성을 가진 공간을 생성할 수 있다. 사용자는 그 후 각종 입력들을 사용해서 공간의 콘텐츠 또는 외관을 변경할 수 있다. 예를 들어, 사용자는 한 애플리케이션 윈도우 또는 윈도우들의 전체 클러스터를 한 공간으로부터 다른 공간으로 이동하거나, 또는 애플리케이션 윈도우를 상이한 공간과 연관시킬 수 있다. 이 변경은, 예를 들어, 애플리케이션 윈도우가 다른 공간에 이미 존재하는 애플리케이션(들)과 관련해서 사용되기 때문에, 사용자에 의해 개시될 수 있다. 본 일례에서, 현재 활성 공간(206)은 사용자가 상이한 공간(210)으로 이동하기 원하는 특정 애플리케이션 윈도우(282)를 포함할 수 있다. 사용자는 애플리케이션 윈도우(282)를 선택하고, 드래그 앤 드롭 동작 등의 적합한 동작을 사용해서 공간(210)을 나타내는 썸네일 이미지에서 애플리케이션 윈도우를 드롭함으로써 상이한 공간(210)에 애플리케이션 윈도우(282)를 옮겨 놓을 수 있다. 사용자에 의해 선택된 애플리케이션 윈도우(282)는 하나의 애플리케이션 윈도우, 동일한 클러스터로부터의 다수의 애플리케이션 윈도우들, 또는 애플리케이션 윈도우들의 전체 클러스터일 수 있다. 일부 구현들에서, 윈도우의 새로운 인스턴스가 윈도우(284)로서 공간(210)에서 생성되고, 다른 예들에서, 애플리케이션 윈도우의 복사본이 공간(210)에서 형성되며, 원래의 윈도우(282)는 공간(206)에 남는다. 상기 일례가 단일 애플리케이션 윈도우가 이동되는 것을 기술하지만, 일부 구현들에서 다른 이동들이 또한 가능하다. 예를 들어, 한 타입의 모든 윈도우들이 이동하거나, 단일 애플리케이션의 모든 윈도우들이 이동하거나, 또는 선택된 윈도우들이 이동될 수 있다. 일부 구현들에서, 콘텐츠의 한 공간으로부터 다른 공간으로의 이동 등의, 공간들의 일부 변경들은 브리지 뷰에서 또는 줌-인 모드에서 실행될 수 있다.
도 2d는 드래그 앤 드롭 동작 등의 적합한 입력을 사용해서 새로운 공간을 생성하는 일례를 도시한다. 브리지 뷰(290)에서, 사용자는 애플리케이션 윈도우(282)를 선택하여, 2개의 다른 공간들(208 및 210) 사이의 로케이션(292)에 애플리케이션 윈도우를 드래그 앤 드롭할 수 있다. 일부 구현들에서, 이 동작은 애플리케이션 윈도우(282)를 포함하는 새로운 공간의 생성을 자동으로 트리거하며, 새로운 공간의 썸네일 이미지는 공간들(208 및 210) 사이의 (292)에 위치한다.
사용자는, 몇몇 예를 들자면, 메뉴, 아이콘, 팝업 메뉴, 제스처, 핫-키 또는 키 조합들을 사용해서 애플리케이션 윈도우를 이동시키기 위해 자신의 의도들을 시그널링할 수 있다. 이동될 애플리케이션 윈도우가, 마우스 클릭 또는 제스처, 탭들 또는 화살표들 등의 버튼 누름들의 조합들, 또는 그 조합들을 통해, 일부 구현들에서, 선택될 수 있다. 애플리케이션 윈도우를 원래의 공간으로부터 드래그해서 목적지 공간에 드롭하기 위해 마우스를 사용하거나, 또는 애플리케이션 윈도우를 목적지 공간으로 재배치하기 위해 키보드 커맨드들을 사용하는 등, 애플리케이션 윈도우들을 이동하는 각종 방법들이 사용될 수 있다.
클러스터에서 윈도우들을 관리하는 일례의 동작들
도 3a-3d는 브리지 뷰에서 클러스터된 애플리케이션 윈도우들을 관리하기 위한 일례의 동작들을 도시한다. 도 1과 관련해서 상술된 바와 같이, 적어도 하나의 공통 특성을 공유하는 애플리케이션 윈도우들은 공통 특성에 기초하여 클러스터(300)에서 함께 그룹화될 수 있다. 각각의 클러스터는 공통 특성을 공유하는 동일한 공간으로부터의 애플리케이션 윈도우들을 포함할 수 있다. 그러나, 일부 구현들에서, 사용자는 또한 동일한 특성을 공유하는 다른 공간들로부터의 애플리케이션 윈도우들을 링크할 수 있다. 일부 구현들에서, 특정 클러스터의 각각의 애플리케이션 윈도우는 동일한 애플리케이션의 상이한 인스턴스들을 나타낸다. 대안으로, 특정 클러스터의 각각의 애플리케이션 윈도우는 적어도 일부 공통 기능을 공유하는 상이한 애플리케이션들의 인스턴스들을 나타낼 수 있다. 예를 들어, 워드 프로세싱, 전자 메일, 웹 브라우징, 파일 브라우징, 시스템 유틸리티, 스프레드시트 조작, 드로잉, 디지털 사진 조작, 시스템 유틸리티, 또는 인스턴트 메시징 등의, 공통 기능을 공유하는 상이한 애플리케이션들과 연관된 애플리케이션 윈도우들은, 예를 들어, 애플리케이션 윈도우들이 상이한 애플리케이션들의 인스턴스들을 나타내더라도, 한 클러스터에서 함께 그룹화될 수 있다.
도 3a에 도시된 바와 같이, 애플리케이션 윈도우들(302, 304, 306, 및 308) 각각은 서로 매우 근접해서 함께 그룹화될 수 있다. 함께 그룹화된 애플리케이션 윈도우들은 각각의 공간들의 현재 오픈 윈도우들이거나 또는 최근에 닫힌 윈도우들을 나타내고 닫힌 윈도우의 최종 인식 외관의 이미지를 디스플레이할 수 있다. 일부 예들에서, 애플리케이션 윈도우들은 오버랩 윈도우들의 스택으로서 가시적으로 제시되며, 오버랩 윈도우들 각각은 상이한 연관된 z-깊이들을 가지며, 다른 예들에서, 애플리케이션 윈도우들은 매우 근접하지만 오버랩하지는 않는다. 한 클러스터의 애플리케이션 윈도우들의 특정 구성은 사용자 선호, 사용자 공동체의 일반적인 관행, 상이한 윈도우들의 가시성, 또는 다른 잠정적인 요인들 등의 각종 요인들에 기초할 수 있다. 도 3a에서, 애플리케이션 윈도우들(302, 304, 306, 및 308)은 한 클러스터의 오버랩 윈도우들의 스택으로서 가시적으로 제시된다. 일부 구현들에서, 애플리케이션 윈도우 중심점들 각각이 정렬될 수 있다.
도 3a의 애플리케이션 윈도우들은 또한 클러스터(300)의 애플리케이션 윈도우들 간에 공유된 공통 특성의 가시적 지시자(310)와 함께 디스플레이될 수 있다. 일부 예들에서, 가시적 지시자(310)는 클러스터(300)와 연관된 공통 특성의 가시적 표현을 도시하는 아이콘(310)이다. 예를 들어, 클러스터(300)의 애플리케이션 윈도우들의 공통 특성이, 애플리케이션 윈도우들이 특정 웹 브라우저 애플리케이션의 모든 인스턴스들인 경우에, 웹 브라우저 애플리케이션을 나타내는데 통상 사용되는 표준 아이콘이 여기서 공통 특성 지시자(310)로서 사용될 수 있다. 애플리케이션 윈도우들의 공통 특성이, 예를 들어, 사진 편집 실행과 연관된 애플리케이션 윈도우들, 카메라의 아이콘(310) 등의 공통 기능이면, 예를 들어, 클러스터의 애플리케이션 윈도우들이 사진 편집과 관련됨을 나타내는데 사용될 수 있다.
사용자는, 애플리케이션 윈도우들이 사용자에게 더 가시적이도록, 애플리케이션 윈도우들의 클러스터(300)를 확장하기 위한 하나 이상의 동작들을 실행할 수 있다. 특정 구현들에서, 도 3b에 도시된 바와 같이, 사용자는 클러스터(300)의 애플리케이션 윈도우들을 확장하기 위해 입력 디바이스와 연관된 포인터(312)를 사용해서 지시자(310)에서 클릭할 수 있다. 사용자가 클러스터(300)를 확장하기 위한 동작을 실행한 후에, 애플리케이션 윈도우들(302, 304, 306, 및 308)은, 사용자가 애플리케이션 윈도우들의 콘텐츠를 볼 수 있도록, 애플리케이션 윈도우들의 중심들이 이전에 정렬된 중심점으로부터 멀리 방사 방향으로 가시적으로 시프트될 수 있다. 또한, 애플리케이션 윈도우들이 클러스터(300)로부터 멀리 이동됨에 따라, 애플리케이션 윈도우들 전부 또는 일부의 치수들은 증가될 수 있다. 일부 예들에서, 확장된 클러스터(300)의 애플리케이션 윈도우들은 확장되지 않은 다른 클러스터들의 애플리케이션 윈도우들을 덮을 수 있다. 또한, 다른 클러스터들의 애플리케이션 윈도우들은 GUI의 에지들 쪽으로 시프트됨으로써 더 "덜 강조(de-emphasized)"되거나, 또는 현재 확장중인 클러스터와 관련하여 어두워질 수 있다.
일부 구현들에서, 애플리케이션 윈도우들이 도 3a에 도시된 바와 같이 오버랩 위치들로부터 도 3c의 각각의 분리된 위치들로 전이하도록, 애플리케이션 윈도우들은 단일 단계에서 클러스터(300)의 중심점으로부터 확장된다. 도 3c에 도시된 바와 같이 클러스터의 윈도우가 클러스터의 임의의 다른 윈도우와 전혀 오버랩하지 않도록 클러스터의 애플리케이션 윈도우들은 확장된 모드로 디스플레이될 수 있다. 일부 예들에서, 오버랩하지 않는 방식으로 애플리케이션 윈도우들의 디스플레이를 달성하기 위해 애플리케이션 윈도우들의 치수들이 감소될 수 있다.
애플리케이션 윈도우들은 또한 증분하여 클러스터(300)의 중심으로부터 멀리 시프트할 수 있어서, 각각의 증분에서, 각각의 애플리케이션 윈도우는 도 3b에 도시된 바와 같이 사용자에게 더 가시적이다. 특정 구현들에서, 사용자는 증분들에서 클러스터(300)의 애플리케이션 윈도우들의 확산을 달성하기 위해 연속 반복들로 입력을 입력할 수 있으며, 애플리케이션 윈도우들은 각각의 증분에서 점차적으로 방사 방향으로 확산한다. 일부 예들에서, 사용자는 애플리케이션 윈도우들이 완전히 확산되는 것을 원치 않을 수 있으며, 도 3b에 도시된 바와 같이 클러스터의 애플리케이션 윈도우들의 콘텐츠의 잠깐 봄을 획득하기만을 원할 수 있다. 사용자는, 애플리케이션 윈도우들의 클러스터가 사용자에 의해 살짝 움직여짐을 보여주면서, 애플리케이션 윈도우들이 서로 약간 떨어져 이동하게 효율적으로 야기하기 위해, 클러스터 위에서 커서를 맴돌게 하거나 또는 클러스터 주위에서 약간의 제스처들 또는 이동들을 입력하는 등, 적합한 입력을 입력할 수 있다. 일부 구현들에서, 사용자는 GUI에서 전부 디스플레이되는 윈도우들의 클러스터로부터의 특정 애플리케이션 윈도우를 또한 식별할 수 있다. 예를 들어, 사용자는 사용자가 완전한 윈도우를 볼 수 있도록 클러스터로부터 윈도우를 분리하기 위해 애플리케이션 윈도우의 타이틀바를 직접 클릭할 수 있다.
사용자 입력들의 상이한 타입들이 클러스터(300)의 애플리케이션 윈도우들의 가시적 조작을 달성하는데 사용될 수 있다. 드래그 앤 드롭 동작 등의, 커서와 연관된 사용자 입력들이 애플리케이션 윈도우들의 가시적 이동을 달성하는데 사용될 수 있다. 다른 일례에서, 사용자는 또한 마우스 또는 터치 패드와 연관된 커서, 또는 멀티-터치 입력 디바이스와 연관된 손가락을 클러스터된 애플리케이션 윈도우들 위에서 맴돌게 함으로써 애플리케이션 윈도우들을 점차적으로 확산시킬 수 있다. 예를 들어, 사용자는 또한 사용자의 손가락들에 의한 스크롤 움직임을 사용해서 애플리케이션 윈도우들을 확산시킬 수 있다. 윈도우들의 확산은 사용자의 스크롤의 속도 또는 반복에 기초할 수 있다. 예를 들어, 손가락들을 사용한 상향 스크롤 움직임은 클러스터의 애플리케이션 윈도우들의 확산을 트리거할 수 있으며, 하향 스크롤 움직임은 클러스터의 애플리케이션 윈도우들의 접힘(collapsing)을 트리거할 수 있다. 또한, 멀티-터치 입력 디바이스 또는 터치 스크린에서, 예를 들어, 사용자는 입력 디바이스와 접촉한 두 손가락들을 사용해서, 사용자의 손가락 끝들의 사용해서 확산 이동을 시뮬레이션할 수 있다. 사용자의 손가락들이 서로 가까이 근접한 손가락들의 중심 위치로부터 확장된 위치로 서로 멀리 이동함에 따라, 클러스터의 애플리케이션 윈도우들은 손가락들 간의 상대 거리와 비례해서 확산된다.
도 3c는 클러스터의 애플리케이션 윈도우들을 결합하거나 또는 도 3b와 관련해서 상술된 애플리케이션 윈도우들의 확산을 역으로 하는 동작의 가시적 도면이다. 애플리케이션 윈도우들(302, 304, 306, 및 308)의 다시 클러스터로의 축약은, 상이한 클러스터가 확장을 위해 선택될 때 또는 상이한 공간이 활성될 때 자동으로 발생할 수 있다. 그러나, 특정 예들에서, 사용자는 도 3b와 관련해서 상술된 바와 유사한 입력들을 사용해서 소형 그룹으로 애플리케이션 윈도우들의 접힘(collapse)을 개시할 수 있다. 예를 들어, 사용자는 애플리케이션 윈도우들의 접힘을 달성하기 위해 사용자 인터페이스의 공통 특성 지시자(310) 또는 다른 영역을 클릭하도록 커서(312)를 이동할 수 있다. 그 후, 애플리케이션 윈도우들은 원래의 위치들로부터 중심점 쪽으로 안으로 시프트해서, 애플리케이션 윈도우들의 일부분들이 이제 오버랩된다. 또한, 클러스터의 애플리케이션 윈도우들은 상이한 클러스터의 애플리케이션 윈도우들의 확장을 위해 사용자의 선택에 응답해서 자동으로 접힐 수 있다.
새로운 데스크탑 공간을 생성하기 위한 일례의 동작들
도 4는 새로운 데스크탑 공간들을 생성하기 위한 일례의 구성을 도시한다. 사용자는, 예를 들어, 데스크탑에 디스플레이된 아이콘(410)을 클릭 또는 선택하거나 또는 키보드에서 특정 입력을 입력하거나 멀티-터치 입력 디바이스에서 제스처를 입력하는 등의 적합한 사용자 입력을 사용해서 새로운 공간들을 생성할 수 있다. 일부 구현들에서, 새로운 공간(414)을 나타내는 새로운 썸네일 이미지는 새로운 공간의 생성을 사용자가 선택한 후에 자동으로 생성될 수 있다. 또한, 구성 툴(420)이 새로운 데스크탑 공간(414)을 위해 사용자가 이름(422), 주제(424), 또는 바탕 화면(426)을 입력하는 옵션들을 제공하기 위해 디스플레이될 수 있다. 애플리케이션이 풀 스크린 모드로 시작될 때, 사용자가 애플리케이션 내에서 풀 스크린 모드를 선택할 때, 또는 사용자가 새로운 애플리케이션 윈도우를 생성할 때, 새로운 데스크탑 공간이 또한 자동으로 생성될 수 있다.
새로운 데스크탑 공간은 또한 구성 툴(420) 없이 생성시 구성될 수 있다. 예를 들어, 특정 애플리케이션 윈도우가 상이한 공간에서 이미 오픈되어 있으면, 사용자는 애플리케이션 윈도우에 액세스하고 삽입을 위한 윈도우를 새롭게 생성된 공간(414)에 명백히 태깅할 수 있다. 또한, 사용자는 새로운 공간(414)에 윈도우를 포함시키기 위해 새로운 공간(414)을 나타내는 썸네일 이미지에 애플리케이션 윈도우를 드래그 앤 드롭할 수 있다.
사용자 인터페이스에서 데스크탑 공간들의 브리지 뷰를 제시하기 위한 일례의 프로세스들
도 5는 사용자 인터페이스에서 데스크탑 공간들의 브리지 뷰를 디스플레이하기 위한 일례의 프로세스(500)의 흐름도이다. 일례의 프로세스(500)에서, 작업 공간 이미지들이 사용자 인터페이스에서 제시된다(510). 작업 공간 이미지들은 컴퓨터 시스템의 사용자에 이용가능한 상이한 가상 작업 공간들에 대응하는 이미지들일 수 있다. 예를 들어, 작업 공간 이미지들은 각각의 가상 작업 공간에 존재하는 애플리케이션 윈도우들, 데스크탑 구성, 및 다른 그래픽 객체들의 응축된 라이브 스냅샷을 도시하는 썸네일 이미지들일 수 있다. 사용자 인터페이스에 디스플레이된 각각의 썸네일 이미지는 상이한 가상 작업 공간에 대응할 수 있다.
가상 작업 공간은 "데스크탑" 메타포를 사용해서 개념화될 수 있으며, 따라서, 가상 작업 공간은 데스크탑 공간, 또는 간단히, 공간이다. 제시된 작업 공간 이미지의 선택을 나타내는 사용자 입력이 수신된다(520). 사용자는 이미지에 의해 표현된 공간을 활성하기 위해 특정 작업 공간 이미지를 선택할 수 있다. 일부 구현들에서, 복수의 작업 공간 이미지들이 사용자에게 제시되어서, 사용자가 이미지들을 네비게이트하고 이미지와 연관된 공간의 콘텐츠에 액세스하도록 특정 이미지를 선택할 수 있다. 특정 공간을 선택하기 위한 사용자 입력은, 예를 들어, 커서를 사용한 특정 공간과 연관된 작업 공간 이미지의 클릭, 키보드 입력, 또는 멀티-터치 입력 디바이스를 사용한 선정된 제스처들을 포함할 수 있다.
작업 공간 이미지의 선택 후에, 선택된 작업 공간과 연관된 애플리케이션 윈도우들은 각각의 클러스터의 애플리케이션 윈도우들의 공유된 공통 특성에 기초하여 클러스터들로 그룹화된다(530). 클러스터의 애플리케이션 윈도우들의 공유된 공통 특성은 클러스터의 윈도우들과 연관된 동일한 애플리케이션일 수 있다. 일부 예들에서, 상이한 애플리케이션들의 인스턴스들이지만 공통 기능을 공유하는 애플리케이션 윈도우들은 특정 클러스터로 함께 그룹화될 수 있다.
가시적으로 그룹화된 클러스터들로서 선택된 가상 작업 공간과 연관된 애플리케이션 윈도우들을 디스플레이하도록 사용자 인터페이스가 갱신된다(540). 애플리케이션 윈도우들의 각각의 클러스터는, 사용자가 상이한 공유된 특성과 연관된 애플리케이션 윈도우들을 효율적으로 구별할 수 있도록, 가시적으로 도시될 수 있다. 예를 들어, 각각의 클러스터의 애플리케이션 윈도우들은 서로 매우 근접해서 가시적으로 도시될 수 있으며, 다른 클러스터들의 애플리케이션 윈도우들과 분리될 수 있다.
도 6은 애플리케이션 윈도우와 연관된 가상 작업 공간을 변경하기 위한 일례의 프로세스(600)의 흐름도이다. 작업 공간 이미지와 연관된 가상 작업 공간은 활성되어 사용자에게 디스플레이될 수 있으며, 디스플레이는 하나 이상의 애플리케이션 윈도우들의 제시를 포함한다. 사용자가 디스플레이된 가상 작업 공간에서 적어도 하나의 애플리케이션 윈도우를 선택했으면(610), 사용자는 선택된 애플리케이션 윈도우를 새로운 로케이션으로 드래그할 수 있다(620). 새로운 로케이션이 디스플레이된 가상 작업 공간과 연관된 작업 공간 이미지와는 상이한 작업 공간 이미지와 일치하면(630), 선택된 애플리케이션 윈도우와 연관된 가상 작업 공간은 상이한 작업 공간 이미지와 연관된 가상 작업 공간에 대응하도록 변경된다(640).
도 7은 활성 작업 공간으로부터 상이한 작업 공간으로 변경하기 위한 일례의 프로세스(700)의 흐름도이다. 활성 작업 공간은 사용자 인터페이스에서 사용자에게 제시될 수 있다. 사용자는 선정된 제스처와 일치하는(720) 입력을 수행할 수 있다(710). 사용자의 입력이 선정된 제스처와 일치하면, 현재 활성 작업 공간은 다른 작업 공간으로 변경된다(730).
도 8은 애플리케이션 윈도우들의 한 클러스터를 확장하기 위한 일례의 프로세스(800)의 흐름도이다. 복수의 애플리케이션 윈도우들이 공유된 공통 특성에 기초하여 함께 그룹화될 수 있다. 클러스터는 서로 매우 근접한 애플리케이션 윈도우들의 그룹으로서 사용자 인터페이스에서 처음에 도시될 수 있으며, 그 중 일부는 오버랩할 수 있다. 클러스터의 애플리케이션 윈도우들을 분리하기 위해 적합한 사용자 입력이 수신된다(810). 수신된 사용자 입력이 디스플레이된 클러스터의 선택을 나타내면(820), 사용자 인터페이스는 윈도우가 임의의 다른 윈도우를 전혀 오버랩하지 않도록 선택된 클러스터의 애플리케이션 윈도우들을 디스플레이하도록 갱신된다(830). 하나 이상의 애플리케이션 윈도우들이 사용자 인터페이스의 갱신 후에 오버랩을 방지하기에 너무 크면(840), 애플리케이션 윈도우들이 오버랩하지 않도록 선택된 클러스터의 하나 이상의 애플리케이션 윈도우들의 치수들이 감소될 수 있다.
상기 프로세스들은 단지 일례들이다. 상기 프로세스들의 각종 조합들이 가능하다.
일례의 소프트웨어 아키텍처
도 9a는 도 1 내지 도 8을 참조해서 기술된 프로세스들 및 사용자 인터페이스들을 구현하기 위한 일례의 소프트웨어 아키텍처(900)이다. 일부 구현들에서, 프로세스들을 구현하는 프로그램 모듈들은 소프트웨어 아키텍처 또는 스택의 프레임워크의 일부일 수 있다. 일례의 소프트웨어 스택(900)은 애플리케이션 층(902), 프레임워크 층(904), 서비스 층(906), OS 층(908) 및 하드웨어 층(910)을 포함할 수 있다. 애플리케이션(예를 들어, 이메일, 워드 프로세싱, 텍스트 메시징 등)은 액세스 가능 API에 기능 훅들을 통합시킬 수 있다. 프레임워크 층(904)은 브리지 뷰 UI 변경 엔진(912)을 포함할 수 있다. 브리지 뷰 UI 변경 엔진(912)은 도 1 내지 도 8을 참조해서 기술된 태스크들의 일부 또는 전부를 수행하기 위해 서비스 층(906) 또는 OS 층(908)의 그래픽 서비스들 또는 라이브러리들을 API 호출할 수 있다. 브리지 뷰 UI 변경 엔진(912)은 또한 가상 작업 공간들의 썸네일 이미지들을 정의하는데 필요한 정보를 획득하기 위해 애플리케이션 층(902)을 API 호출할 수 있고, 본 명세서에 기술된 설명들에 따라 가상 작업 공간들의 썸네일 이미지들의 로케이션 및 콘텐츠를 결정할 수 있다. 브리지 뷰 UI 변경 엔진(912)은 또한 태스크들의 일부 또는 전부를 실행하기 위해 서비스 층(906) 또는 OS 층(908)의 서비스들 또는 라이브러리들(예를 들어, 텍스트 서비스들)을 API 호출할 수 있다.
서비스 층(906)은 브리지 뷰 UI 변경 엔진(912)의 그래픽 기능들 및 애플리케이션 층(902)의 애플리케이션들을 지원하기 위해 각종 그래픽들, 애니메이션들 및 UI 서비스들을 제공할 수 있다. 일부 구현들에서, 서비스 층(906)은, 또한, 터치 모델 API에서 정의된 호출 규약들을 사용해서 애플리케이션들에 의해 액세스될 수 있는, 미가공 터치 데이터를 해석하고 터치 센서티브 디바이스로부터 터치 이벤트들(예를 들어, 제스처들, 회전들)로 매핑하기 위한 터치 모델을 포함할 수 있다. 서비스 층(906)은 또한 무선 통신을 위한 통신 소프트웨어 스택들을 포함할 수 있다.
OS 층(908)은 완전한 운영 체제(예를 들어, MAC OS) 또는 커널(예를 들어, UNIX 커널)일 수 있다. 하드웨어 층(910)은, 프로세서들 또는 프로세싱 코어들(애플리케이션 및 통신 기저대역 프로세서들을 포함함), 전용 신호/이미지 프로세서들, ASIC들, 그래픽 프로세서들(예를 들어, GNU들), 메모리 및 저장 장치들, 통신 포트들 및 디바이스들, 주변 장치들 등을 포함하지만 이들로만 제한되지 않는, 도 1 내지 도 8을 참조해서 기술된 태스크들을 수행하는데 필요한 하드웨어를 포함한다.
하나 이상의 애플리케이션 프로그래밍 인터페이스들(API들)이 일부 구현들에서 사용될 수 있다. API는 상이한 프로그램 코드 컴포넌트 또는 하드웨어 컴포넌트(이후부터 "API-호출 컴포넌트")가 API-구현 컴포넌트에 의해 제공된 하나 이상의 기능들, 방법들, 프로시져들, 데이터 구조들, 클래스들, 및/또는 다른 서비스들에 액세스 및 사용할 수 있게 하는 프로그램 코드 컴포넌트 또는 하드웨어 컴포넌트(이후부터 "API-구현 컴포넌트")에 의해 구현된 인터페이스이다. API는 API-호출 컴포넌트 및 API-구현 컴포넌트 사이에서 전달되는 하나 이상의 파라미터들을 정의할 수 있다.
API는 API-호출 컴포넌트의 개발자(제3국 개발자일 수 있음)가 API-구현 컴포넌트에 의해 제공된 지정된 피처들을 이용할 수 있게 한다. 하나의 API-호출 컴포넌트가 있을 수 있거나, 또는 하나보다 많은 그러한 컴포넌트가 있을 수 있다. API는 컴퓨터 시스템 또는 프로그램 라이브러리가 애플리케이션으로부터의 서비스들에 대한 요청들을 지원하기 위해 제공하는 소스 코드 인터페이스일 수 있다. 운영 체제(OS)는 OS에서 실행중인 애플리케이션들이 API들 중 하나 또는 그 이상을 호출할 수 있게 하기 위해 다수의 API들을 가질 수 있으며, 서비스(프로그램 라이브러리 등)는 서비스를 사용하는 애플리케이션이 API들 중 하나 또는 그 이상을 호출할 수 있게 하기 위해 다수의 API들을 가질 수 있다. API는 애플리케이션이 생성될 때 해석 또는 컴파일링될 수 있는 프로그래밍 언어 면에서 지정될 수 있다.
일부 구현들에서, API-구현 컴포넌트는 하나보다 더 많은 API를 제공할 수 있으며, 각각은 API-구현 컴포넌트에 의해 구현된 기능의 상이한 양상들에 액세스하는 상이한 양상들 또는 그 상이한 뷰를 제공한다. 예를 들어, API-구현 컴포넌트의 하나의 API는 제1 집합의 기능들을 제공할 수 있고, 제3자 개발자들에게 노출될 수 있으며, API-구현 컴포넌트의 다른 API는 숨겨질(노출되지 않을) 수 있고, 제1 집합의 기능들의 부집합을 제공할 수 있으며, 또한 다른 집합의 기능들, 예를 들어, 제1 집합의 기능들이 아닌 테스팅 또는 디버깅 기능들을 제공할 수 있다. 다른 구현들에서, API-구현 컴포넌트는 기본 API를 통해 하나 이상의 다른 컴포넌트들을 자체적으로 호출할 수 있으며, 따라서, API-호출 컴포넌트 및 API-구현 컴포넌트 둘 다 일 수 있다.
API는 API-구현 컴포넌트의 지정된 피처들을 액세스 및 사용할 때 API-호출 컴포넌트들이 사용하는 언어 및 파라미터들을 정의한다. 예를 들어, API-호출 컴포넌트는 API에 의해 노출된 (예를 들어, 기능 또는 방법 호출들에 의해 구현된) 하나 이상의 API 호출들 또는 부름(invocation)을 통해 API-구현 컴포넌트의 지정된 피처들에 액세스하고, API 호출들 또는 부름을 통해 파라미터들을 사용해서 데이터 및 제어 정보를 전달한다. API-구현 컴포넌트는 API-호출 컴포넌트로부터의 API 호출에 응답해서 API를 통해 값을 리턴할 수 있다. API가 API 호출의 구문 및 결과(예를 들어, API 호출을 어떻게 하는지와 API 호출이 무엇을 하는지)를 정의하는 동안, API는 API 호출이 어떻게 API 호출에 의해 지정된 기능을 달성하는지를 드러내지 않을 수 있다. 각종 API 호출들은 호출(API-호출 컴포넌트) 및 API-구현 컴포넌트 간의 하나 이상의 애플리케이션 프로그래밍 인터페이스들을 통해 전송된다. API 호출들의 전송은, 기능 호출들 또는 메시지들의 발행, 개시, 부름, 호출, 수신, 리턴, 또는 그에 대한 응답을 포함할 수 있다; 다시 말해서, 전송은 API-호출 컴포넌트 또는 API-구현 컴포넌트에 의한 동작들을 기술할 수 있다. API의 기능 호출들 또는 다른 부름들은 파라미터 리스트 또는 다른 구조를 통해 하나 이상의 파라미터들을 송신 또는 수신할 수 있다. 파라미터는 API를 통해 전달될 데이터 또는 다른 항목을 참조하기 위한 기능 또는 방법 또는 다른 방식에 대한 상수, 키, 데이터 구조, 객체, 객체 클래스, 변수, 데이터 타입, 포인터, 배열, 리스트 또는 포인터일 수 있다.
또한, 데이터 타입들 또는 클래스들은 API에 의해 제공되고 API-구현 컴포넌트에 의해 구현될 수 있다. 따라서, API-호출 컴포넌트는 변수들을 선포하거나, 포인터들을 사용하거나, API에서 제공된 정의들을 사용해서 이러한 타입들 또는 클래스들의 상수 값들을 사용 또는 예시할 수 있다.
일반적으로, API는 API-구현 컴포넌트에 의해 제공된 서비스 또는 데이터에 액세스하거나 또는 API-구현 컴포넌트에 의해 제공된 연산 또는 계산의 실행을 개시하는데 사용될 수 있다. 예를 들어, API-구현 컴포넌트 및 API-호출 컴포넌트는 각각 운영 체제, 라이브러리, 디바이스 드라이버, API, 애플리케이션 프로그램, 또는 다른 모듈들 중 임의의 것일 수 있다(API-구현 컴포넌트 및 API-호출 컴포넌트가 서로 동일하거나 또는 상이한 타입의 모듈일 수 있음을 이해해야만 한다). API-구현 컴포넌트들은 일부 경우들에서 펌웨어, 마이크로코드, 또는 다른 하드웨어 로직으로 적어도 부분적으로 구현될 수 있다. 일부 구현들에서, API는 클라이언트 프로그램이 소프트웨어 개발 키트(SDK) 라이브러리에 의해 제공된 서비스들을 사용할 수 있게 할 수 있다. 다른 구현들에서, 애플리케이션 또는 다른 클라이언트 프로그램은 애플리케이션 프레임워크에 의해 제공된 API를 사용할 수 있다. 본 구현들에서, 애플리케이션 또는 클라이언트 프로그램은 SDK에 의해 제공되고 API에 의해 제공된 기능들 또는 방법들에 대한 호출들을 포함할 수 있으며, 또는 SDK에서 정의되고 API에 의해 제공된 데이터 타입들 또는 객체들을 사용할 수 있다. 애플리케이션 프레임워크는, 본 구현들에서, 프레임워크에 의해 정의된 각종 이벤트들에 응답하는 프로그램에 대한 메인 이벤트 루프를 제공할 수 있다. API는 애플리케이션이 애플리케이션 프레임워크를 사용해서 이벤트들을 지정하고 이벤트들에 응답할 수 있게 한다. 일부 구현들에서, API 호출은, 입력 기능들 및 상태, 출력 기능들 및 상태, 프로세싱 기능, 전력 상태, 저장 용량 및 상태, 통신 기능 등의 양상들과 관련된 것을 포함해서, 하드웨어 디바이스의 기능들 또는 상태를 애플리케이션에 보고할 수 있으며, API는 부분적으로 하드웨어 컴포넌트에서 실행하는 펌웨어, 마이크로코드, 또는 다른 로우 레벨 로직에 의해 부분적으로 구현될 수 있다.
API-호출 컴포넌트는 네트워크를 통해 API를 통해 API-구현 컴포넌트와 통신하는 로컬 컴포넌트(즉, API-구현 컴포넌트와 동일한 데이터 프로세싱 시스템 상에서) 또는 원격 컴포넌트(즉, API-구현 컴포넌트와 상이한 데이터 프로세싱 시스템 상에서)일 수 있다. API-구현 컴포넌트는 또한 API-호출 컴포넌트(즉, 상이한 API-구현 컴포넌트에 의해 노출된 API를 API 호출할 수 있음)로서 동작할 수 있으며, API-호출 컴포넌트는 또한 상이한 API-호출 컴포넌트에 노출된 API를 구현함으로써 API-구현 컴포넌트로서 동작할 수 있음을 이해해야만 한다.
API는 상이한 프로그래밍 언어로 기록된 다수의 API-호출 컴포넌트들이 API-구현 컴포넌트와 통신할 수 있게 할 수 있다(따라서, API는 API-구현 컴포넌트 및 API-호출 컴포넌트 간의 호출들 및 리턴들을 번역하기 위한 피처들을 포함할 수 있음); 그러나, API는 지정된 프로그래밍 언어 면에서 구현될 수 있다. 일 실시예에서, API-호출 컴포넌트는 OS 제공자로부터의 한 집합의 API들 및 플러그-인 제공자로부터의 다른 집합의 API들 및 다른 제공자(예를 들어, 소프트웨어 라이브러리의 제공자)로부터의 다른 집합의 API들 등의 상이한 제공자들 또는 다른 집합의 API들의 생성자로부터의 API들을 호출할 수 있다.
도 9b는 본 명세서에 기술된 일부 프로세스들의 구현 및 사용자 인터페이스 변경들에서 사용될 수 있는, 일례의 API 아키텍처를 도시하는 블록도(920)이다. 도 9b에 도시된 바와 같이, API 아키텍처(920)는 API(924)를 구현하는 API-구현 컴포넌트(922)(예를 들어, 운영 체제, 라이브러리, 디바이스 드라이버, API, 애플리케이션 프로그램, 소프트웨어 또는 다른 모듈)을 포함한다. API(924)는 API-호출 컴포넌트(926)에 의해 사용될 수 있는 API-구현 컴포넌트의 하나 이상의 기능들, 방법들, 클래스들, 객체들, 프로토콜들, 데이터 구조들, 포맷들 및/또는 다른 피처들을 명시한다. API(924)는 API-구현 컴포넌트의 기능이 어떻게 API-호출 컴포넌트로부터 파라미터들을 수신하는지와 기능이 어떻게 API-호출 컴포넌트에 결과를 리턴하는지를 명시하는 적어도 하나의 호출 규약을 명시할 수 있다. API-호출 컴포넌트(926)(예를 들어, 운영 체제, 라이브러리, 디바이스 드라이버, API, 애플리케이션 프로그램, 소프트웨어 또는 다른 모듈)는, API(924)에 의해 명시된 API-구현 컴포넌트(922)의 피처들에 액세스 및 사용하기 위해 API(924)를 통해 API 호출을 한다. API-구현 컴포넌트(922)는 API 호출에 응답해서 값을 API(924)를 통해 API-호출 컴포넌트(926)에 리턴할 수 있다.
API-구현 컴포넌트(922)는 API(924)를 통해 명시되지 않았고 API-호출 컴포넌트(926)에 유효하지 않은 추가 기능들, 방법들, 클래스들, 데이터 구조들, 및/또는 다른 피처들을 포함할 수 있음을 알 것이다. API-호출 컴포넌트(926)는 API-구현 컴포넌트(922)와 동일한 시스템일 수 있으며, 또는 원격으로 위치할 수 있고, 네트워크를 통해 API(924)를 사용해서 API-구현 컴포넌트(922)에 액세스함을 이해해야만 한다. 도 9b가 API(924)와 상호 작용하는 단일 API-호출 컴포넌트(930)를 도시하지만, API-호출 컴포넌트(926)와 상이한 언어들(또는 동일한 언어)로 기록될 수 있는, 다른 API-호출 컴포넌트들이 API(924)를 사용할 수 있음을 이해해야만 한다.
API-구현 컴포넌트(922), API(924), 및 API-호출 컴포넌트(926)는 기계(예를 들어, 컴퓨터 또는 다른 데이터 프로세싱 시스템)에 의해 판독 가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함하는, 기계 판독 가능 매체에 저장될 수 있다. 예를 들어, 기계 판독 가능 매체는 자기 디스크들, 광 디스크들, 랜덤 액세스 메모리; 판독 전용 메모리, 플래시 메모리 디바이스들 등을 포함한다.
도 9c("소프트웨어 스택"(930))에서, 일례의 구현(930)에서, 애플리케이션들은 수개의 서비스 API들(서비스 API A 및 서비스 API B)를 사용해서 서비스 A(932) 또는 서비스 B(934)를 호출하고, 수개의 OS API들을 사용해서 운영 체제(OS)(936)를 호출할 수 있다. 서비스 A(932) 및 서비스 B(934)는 수개의 OS API들을 사용해서 OS(936)를 호출할 수 있다.
서비스 B(934)는 2개의 API들을 가지며, 한 API(서비스 B API A(938))는 애플리케이션 A(940)로부터 호출들을 수신하여 값들을 리턴하고, 다른 API(서비스 B API B(942))는 애플리케이션 B(944)로부터 호출들을 수신하여 값들을 리턴함을 유의한다. 서비스 A(932)(예를 들어, 소프트웨어 라이브러리일 수 있음)는 OS API A(946)를 호출하고 그로부터 리턴된 값들을 수신하며, 서비스 B(934)(예를 들어, 소프트웨어 라이브러리일 수 있음)는 OS API A(946) 및 OS API B(948) 둘 다를 호출하고 그들로부터 리턴된 값들을 수신한다. 애플리케이션 B(944)는 OS API B(948)를 호출하고 그로부터 리턴된 값들을 수신한다.
일례의 디바이스 아키텍처
도 10은 도 1 내지 도 9를 참조해서 기술된 가상 작업 공간 프로세스들 및 인터페이스들의 브리지 뷰를 구현하는 디바이스를 위한 일례의 하드웨어 아키텍처(1000)의 블록도이다. 디바이스는 메모리 인터페이스(1002), 하나 이상의 데이터 프로세서들, 이미지 프로세서들 및/또는 프로세서들(1004), 및 주변 장치 인터페이스(1006)를 포함할 수 있다. 메모리 인터페이스(1002), 하나 이상의 프로세서들(1004) 및/또는 주변 장치 인터페이스(1006)는 별개의 컴포넌트들이거나, 또는 하나 이상의 집적 회로들에 통합될 수 있다. 예를 들어, 디바이스의 각종 컴포넌트들은 하나 이상의 통신 버스들 또는 신호 라인들에 의해 연결될 수 있다.
센서들, 디바이스들, 및 서브시스템들이 다수의 기능들을 용이하게 하기 위해 주변 장치 인터페이스(1006)에 연결될 수 있다. 예를 들어, 움직임 센서(1010), 광 센서(1012), 및 근접각 센서(1014)는 이동 디바이스의 배향, 조명, 및 근접성 기능들을 용이하게 하기 위해 주변 장치 인터페이스(1006)에 연결될 수 있다. 로케이션 프로세서(1015)(예를 들어, GPS 수신기)는 지오포지셔닝을 제공하기 위해 주변 장치 인터페이스(1006)에 연결될 수 있다. 전자 자력계(1016)(예를 들어, 집적 회로 칩)는 또한 자기 북(North) 방향을 결정하는데 사용될 수 있는 데이터를 제공하기 위해 주변 장치 인터페이스(1006)에 연결될 수 있다. 따라서, 전자 자력계(1016)는 전자 나침판으로서 사용될 수 있다. 가속도계(1017)가 또한 이동 디바이스의 이동 속도 및 방향의 변경을 결정하는데 사용될 수 있는 데이터를 제공하기 위해 주변 장치 인터페이스(1006)에 연결될 수 있다.
카메라 서브시스템(1020) 및 광 센서(1022), 예를 들어, CCD(a charged coupled device) 또는 CMOS(a complementary metal-oxide semiconductor) 광 센서가, 사진 및 비디오 클립들 등의 카메라 기능들을 용이하게 하는데 사용될 수 있다.
통신 기능들이, 무선 주파수 수신기들 및 송신기들 및/또는 광(예를 들어, 적외선) 수신기들 및 송신기들을 포함할 수 있는, 하나 이상의 무선 통신 서브시스템들(1024)을 통해 용이하게 될 수 있다. 통신 서브시스템들(1024)의 특정 설계 및 구현은 이동 디바이스가 동작하도록 의도된 통신 네트워크(들)에 좌우될 수 있다. 예를 들어, 이동 디바이스는 GSM 네트워크, GPRS 네트워크, EDGE 네트워크, Wi-Fi 또는 WiMax 네트워크, 및 블루투스 네트워크를 통해 동작하도록 설계된 통신 서브시스템들(1024)을 포함할 수 있다. 특히, 무선 통신 서브시스템들(1024)은 이동 디바이스가 다른 무선 디바이스들의 기지국으로서 구성될 수 있도록 호스팅 프로토콜들을 포함할 수 있다.
오디오 서브시스템(1026)이, 음성 인식, 음성 복제, 디지털 기록, 및 전화 기능들 등의 음성-가능 기능들을 용이하게 하기 위해 스피커(1028) 및 마이크로폰(1030)에 연결될 수 있다.
I/O 서브시스템(1040)은 터치-스크린 컨트롤러(1042) 및 다른 입력 컨트롤러(들)(1044)를 포함할 수 있다. 터치-스크린 컨트롤러(1042)는 터치 스크린(1046) 또는 패드에 연결될 수 있다. 터치 스크린(1046) 및 터치-스크린 컨트롤러(1042)는, 예를 들어, 용량성, 저항성, 적외선, 및 표면 탄성파 기술들 뿐만 아니라 다른 근접각 센서 어레이들 또는 터치 스크린(1046)과의 하나 이상의 접촉점들을 결정하기 위한 다른 소자들을 포함하지만 이들로만 제한되지 않는, 복수의 터치 센서티브 기술들 중 임의의 기술을 사용해서 접촉 및 이동 또는 브레이크를 검출할 수 있다.
다른 입력 컨트롤러(들)(1044)는, 하나 이상의 버튼들, 로커 스위치들, 섬-휠, 적외선 포트, USB 포트, 및/또는 스타일러스 등의 포인터 디바이스 등의, 다른 입력/제어 디바이스들(1048)에 연결될 수 있다. 하나 이상의 버튼들(도시되지 않음)은 스피커(1028) 및/또는 마이크로폰(1030)의 볼륨 제어를 위한 상/향 버튼을 포함할 수 있다.
일 구현에서, 제1 지속 기간 동안 버튼의 누름은 터치 스크린(1046)의 로크를 풀 수 있으며; 제1 지속 기간 보다 더 긴 제2 지속 기간 동안 버튼의 누름은 디바이스로의 전원을 키거나 끌 수 있다. 사용자는 하나 이상의 버튼들의 기능을 커스터마이즈할 수 있다. 터치 스크린(1046)은, 예를 들어, 또한 가상 또는 소프트 버튼들 및/또는 키보드를 구현하는데 사용될 수 있다.
일부 구현들에서, 디바이스는, MP3, AAC, 및 MPEG 파일들 등의, 기록된 오디오 및/또는 비디오 파일들을 제시할 수 있다. 일부 구현들에서, 디바이스는 iPodTM 등의 MP3 플레이어의 기능을 포함할 수 있다. 따라서, 디바이스는 iPod와 호환 가능한 핀 커넥터를 포함할 수 있다. 다른 입력/출력 및 제어 디바이스들이 또한 사용될 수 있다.
메모리 인터페이스(1002)는 메모리(1050)에 연결될 수 있다. 메모리(1050)는 하나 이상의 자기 디스크 저장 장치들, 하나 이상의 광 저장 장치들, 및/또는 플래시 메모리(예를 들어, NAND, NOR) 등의 고속 랜덤 액세스 메모리 및/또는 비휘발성 메모리를 포함할 수 있다. 메모리(1050)는, Darwin, RTXC, LINUX, UNIX, OS X, WINDOWS, 또는 VxWorks 등의 내장된 운영 체제 등의 운영 체제(1052)를 저장할 수 있다. 운영 체제(1052)는 기본 시스템 서비스들을 처리하고 하드웨어 종속 태스크들을 실행하기 위한 명령들을 포함할 수 있다. 일부 구현들에서, 운영 체제(1052)는 커널(예를 들어, UNIX 커널)을 포함할 수 있다.
메모리(1050)는 또한 하나 이상의 추가 디바이스들, 하나 이상의 컴퓨터들 및/또는 하나 이상의 서버들과의 통신을 용이하게 하기 위해 통신 명령들(1054)을 저장할 수 있다. 메모리(1050)는 그래픽 사용자 인터페이스 프로세싱을 용이하게 하기 위한 그래픽 사용자 인터페이스 명령들(1056); 센서 관련 프로세싱 및 기능들을 용이하게 하기 위한 센서 프로세싱 명령들(1058); 사진 관련 프로세스들 및 기능들을 용이하게 하기 위한 사진 명령들(1060); 전자 메시징 관련 프로세스들 및 기능들을 용이하게 하기 위한 전자 메시징 명령들(1062); 웹 브라우징 관련 프로세스들 및 기능들을 용이하게 하기 위한 웹 브라우징 명령들(1064); 미디어 프로세싱 관련 프로세스들 및 기능들을 용이하게 하기 위한 미디어 프로세싱 명령들(1066); GPS 및 네비게이트 관련 프로세스들 및 명령들을 용이하게 하기 위한 GPS/네비게이트 명령들(1068); 및 카메라 관련 프로세스들 및 기능들을 용이하게 하기 위한 카메라 명령들(1070)을 포함할 수 있다. 메모리(1050)는 또한 보안 명령들, 웹 비디오 관련 프로세스들 및 기능들을 용이하게 하기 위한 웹 비디오 명령들, 및/또는 웹 쇼핑 관련 프로세스들 및 기능들을 용이하게 하기 위한 웹 쇼핑 명령들 등의 다른 소프트웨어 명령들(도시되지 않음)을 저장할 수 있다. 일부 구현들에서, 미디어 프로세싱 명령들(1066)은, 각각, 오디오 프로세싱 관련 프로세스들 및 기능들 및 비디오 프로세싱 관련 프로세스들 및 기능들을 용이하게 하기 위한 오디오 프로세싱 명령들 및 비디오 프로세싱 명령들로 분할된다. 활성 레코드 및 IMEI(International Mobile Equipment Identity) 또는 유사한 하드웨어 식별자가 또한 메모리(1050)에 저장될 수 있다. 메모리(1050)는 또한 다른 명령들(1072)을 포함할 수 있다.
상기 식별된 명령들 및 애플리케이션들 각각은 상술된 하나 이상의 기능들을 실행하기 위한 명령들의 집합에 대응할 수 있다. 이 명령들은 개별적인 소프트웨어 프로그램들, 프로시져들, 또는 모듈들로서 구현될 필요가 없다. 메모리(1050)는 추가의 명령들 또는 더 적은 명령들을 포함할 수 있다. 또한, 이동 디바이스의 각종 기능들은, 하나 이상의 신호 프로세싱 및/또는 애플리케이션 특정 집적 회로들을 포함해서, 하드웨어 및/또는 소프트웨어로 구현될 수 있다.
기술된 피처들은 디지털 전자 회로로, 또는 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 또는 그 조합들로 구현될 수 있다. 피처들은 정보 캐리어로 유형적으로 구현된 컴퓨터 프로그램 제품으로, 예를 들어, 프로그래밍 가능 프로세서에 의해 실행되도록, 기계 판독 가능 저장 장치로 구현될 수 있으며; 방법 단계들은 입력 데이터에 대해 동작하고 출력을 생성함으로써 기술된 구현들의 기능들을 실행하기 위해 명령들의 프로그램을 실행하는 프로그래밍 가능 프로세서에 의해 실행될 수 있다.
기술된 피처들은 데이터 스토리지 시스템으로부터 데이터 및 명령들을 수신하고 상기 시스템으로 데이터 및 명령들을 송신하기 위해 연결된 적어도 하나의 프로그래밍 가능 프로세서, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스를 포함하는 프로그래밍 가능 시스템에서 실행 가능한 하나 이상의 컴퓨터 프로그램으로 유익하게 구현될 수 있다. 컴퓨터 프로그램은, 특정 활동을 실행하거나 특정 결과를 야기하기 위해 컴퓨터에서, 직접적으로 또는 간접적으로, 사용될 수 있는 명령들의 집합이다. 컴퓨터 프로그램은, 컴파일링된 또는 해석된 언어들을 포함하는, 임의의 형태의 프로그래밍 언어(예를 들어, Objective-C, Java)로 기록될 수 있으며, 독립형 프로그램 또는 모듈, 컴포넌트, 서브루틴, 또는 컴퓨팅 환경에서 사용되기에 적합한 다른 유닛을 포함하는, 임의의 형태로 개발될 수 있다.
명령들의 프로그램의 실행에 적합한 프로세서들은, 예를 들어, 일반 및 특별 목적 마이크로프로세서들, 및 임의의 종류의 컴퓨터의 단독 프로세서 또는 다수의 프로세서들 또는 코어들 중 하나를 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 명령들 및 데이터를 수신할 것이다. 컴퓨터의 필수 요소들은 명령들을 실행하기 위한 프로세서 및 명령들 및 데이터를 저장하기 위한 하나 이상의 메모리들이다. 일반적으로, 컴퓨터는, 또한, 데이터 파일들을 저장하기 위한 하나 이상의 대용량 저장 장치들을 포함하거나, 또는 그와 통신하기 위해 동작적으로 연결될 것이다; 이러한 디바이스들은 내부 하드 디스크들 및 이동식 디스크들 등의 자기 디스크들; 광자기 디스크들; 및 광 디스크들을 포함한다. 컴퓨터 프로그램 명령들 및 데이터를 유형적으로 구현하기에 적합한 저장 장치들은, 예를 들어, EPROM, EEPROM, 및 플래시 메모리 디바이스 등의 반도체 메모리 디바이스들; 내부 하드 디스크들 및 이동식 디스크들 등의 자기 디스크들; 광자기 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 포함하는, 모든 형태들의 비휘발성 메모리를 포함한다. 프로세서 및 메모리는 ASIC(application-specific integrated circuit)들에 의해 보충되거나 또는 ASIC들에 통합될 수 있다.
사용자와의 상호 동작을 제공하기 위해, 피처들은 사용자에게 정보를 디스플레이하기 위한 CRT(음극선관) 또는 LCD(액정 디스플레이) 모니터 등의 디스플레이 디바이스 및 사용자가 입력을 컴퓨터에 제공할 수 있는 키보드, 마우스 또는 트랙볼, 또는 포인팅 디바이스(예를 들어, 터치 센서티브 표면 또는 터치 센서티브 디스플레이의 손가락 또는 스타일러스)를 가진 컴퓨터에서 구현될 수 있다.
피처들은 데이터 서버 등의 백-엔드 컴포넌트를 포함하거나, 또는 애플리케이션 서버 또는 인터넷 서버 등의 미들웨어 컴포넌트를 포함하거나, 또는 그래픽 사용자 인터페이스 또는 인터넷 브라우저, 클라이언트 컴퓨터 등의 프론트-엔드 컴포넌트 또는 임의의 조합을 포함하는 컴퓨터 시스템으로 구현될 수 있다. 시스템의 컴포넌트들은 통신 네트워크 등의 디지털 데이터 통신의 임의의 형태 또는 매체에 의해 연결될 수 있다. 통신 네트워크들의 일례들은, 예를 들어, LAN, WAN, 및 인터넷을 형성하는 컴퓨터들 및 네트워크들을 포함한다.
컴퓨터 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 원격이며, 네트워크를 통해 통상 상호 동작한다. 클라이언트 및 서버의 관계는 각각의 컴퓨터들에서 실행중이며 서로 클라이언트-서버 관계를 가진 컴퓨터 프로그램들에 의해 발생한다.
본 명세서에 기술된 하나 이상의 피처들 또는 단계들은 API를 사용해서 구현될 수 있다. API는 호출 애플리케이션 및 서비스를 제공하거나, 데이터를 제공하거나, 또는 연산 또는 계산을 실행하는 다른 소프트웨어 코드(예를 들어, 운영 체제, 라이브러리 루틴, 함수) 간에 전달되는 하나 이상의 파라미터들을 정의할 수 있다.
API는 API 명세 문서에서 정의된 호출 규약에 기초하여 파라미터 리스트 또는 다른 구조를 통해 하나 이상의 파라미터들을 송신 또는 수신하는 프로그램 코드의 하나 이상의 호출들로 구현될 수 있다. 파라미터는 상수, 키, 데이터 구조, 객체, 객체 클래스, 변수, 데이터 타입, 포인터, 배열, 리스트 또는 다른 호출일 수 있다. API 호출들 및 파라미터들은 임의의 프로그래밍 언어로 구현될 수 있다. 프로그래밍 언어는 프로그래머가 API를 지원하는 기능들을 액세스하기 위해 사용할 어휘 및 호출 규약을 정의할 수 있다.
일부 구현들에서, API 호출은, 입력 기능, 출력 기능, 프로세싱 기능, 전력 기능, 통신 기능 등의 애플리케이션을 실행하는 디바이스의 기능들을 애플리케이션에 보고할 수 있다.
다수의 구현들이 기술되었다. 결국, 각종 변경들이 이루어질 수 있음을 알 것이다. 예를 들어, 하나 이상의 구현들의 요소들은 결합, 삭제, 변경, 또는 보충되어서, 다른 구현들을 형성할 수 있다. 또 다른 일례로서, 도면들에 도시된 논리 흐름들은 바람직한 결과들을 달성하기 위해 도시된 특정 순서, 또는 순차적인 순서를 요구하지 않는다. 또한, 다른 단계들이 제공될 수 있으며, 또는 단계들이 기술된 흐름들로부터 제거될 수 있고, 다른 컴포넌트들이 기술된 시스템들에 추가되거나 그로부터 제거될 수 있다. 따라서, 다른 구현들이 이하의 청구항들의 범위 내에 있다.

Claims (1)

  1. 명세서 또는 도면에 기재된 방법 및 장치.
KR1020137017298A 2010-10-19 2011-10-19 사용자 인터페이스에서의 작업 공간 관리 KR102004553B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/907,986 US10740117B2 (en) 2010-10-19 2010-10-19 Grouping windows into clusters in one or more workspaces in a user interface
US12/907,986 2010-10-19
PCT/US2011/056908 WO2012054620A1 (en) 2010-10-19 2011-10-19 Managing workspaces in a user interface

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020137012572A Division KR101733839B1 (ko) 2010-10-19 2011-10-19 사용자 인터페이스에서의 작업 공간 관리

Publications (2)

Publication Number Publication Date
KR20130105879A true KR20130105879A (ko) 2013-09-26
KR102004553B1 KR102004553B1 (ko) 2019-07-26

Family

ID=44883428

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020137017298A KR102004553B1 (ko) 2010-10-19 2011-10-19 사용자 인터페이스에서의 작업 공간 관리
KR1020137012572A KR101733839B1 (ko) 2010-10-19 2011-10-19 사용자 인터페이스에서의 작업 공간 관리

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020137012572A KR101733839B1 (ko) 2010-10-19 2011-10-19 사용자 인터페이스에서의 작업 공간 관리

Country Status (7)

Country Link
US (1) US10740117B2 (ko)
EP (1) EP2444893B1 (ko)
KR (2) KR102004553B1 (ko)
CN (5) CN115269095A (ko)
AU (1) AU2011239221B2 (ko)
NL (1) NL2007618C2 (ko)
WO (1) WO2012054620A1 (ko)

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7343566B1 (en) 2002-07-10 2008-03-11 Apple Inc. Method and apparatus for displaying a window for a user interface
US8839142B2 (en) * 2007-06-08 2014-09-16 Apple Inc. Desktop system object removal
US11410129B2 (en) 2010-05-01 2022-08-09 Monday.com Ltd. Digital processing systems and methods for two-way syncing with third party applications in collaborative work systems
WO2021161104A1 (en) 2020-02-12 2021-08-19 Monday.Com Enhanced display features in collaborative network systems, methods, and devices
WO2021144656A1 (en) 2020-01-15 2021-07-22 Monday.Com Digital processing systems and methods for graphical dynamic table gauges in collaborative work systems
WO2021099839A1 (en) 2019-11-18 2021-05-27 Roy Mann Collaborative networking systems, methods, and devices
US9292196B2 (en) 2010-10-19 2016-03-22 Apple Inc. Modifying the presentation of clustered application windows in a user interface
US10740117B2 (en) 2010-10-19 2020-08-11 Apple Inc. Grouping windows into clusters in one or more workspaces in a user interface
US9658732B2 (en) 2010-10-19 2017-05-23 Apple Inc. Changing a virtual workspace based on user interaction with an application window in a user interface
US9542202B2 (en) 2010-10-19 2017-01-10 Apple Inc. Displaying and updating workspaces in a user interface
US10152192B2 (en) 2011-02-21 2018-12-11 Apple Inc. Scaling application windows in one or more workspaces in a user interface
US10242341B2 (en) * 2011-03-03 2019-03-26 Lenovo (Singapore) Pte. Ltd. Automatic taskbar grouping by user tasks
US8842057B2 (en) * 2011-09-27 2014-09-23 Z124 Detail on triggers: transitional states
US8935629B2 (en) * 2011-10-28 2015-01-13 Flipboard Inc. Systems and methods for flipping through content
KR101758363B1 (ko) 2011-12-14 2017-07-17 삼성전자 주식회사 디스플레이장치 및 그 제어방법
EP2680133A1 (en) * 2012-06-27 2014-01-01 BlackBerry Limited Method, system and apparatus identifying workspace associations
US20140047345A1 (en) * 2012-08-10 2014-02-13 Research In Motion Limited Method, system and apparatus for tracking workspace activity
KR102183071B1 (ko) * 2012-12-06 2020-11-25 삼성전자주식회사 복수 어플리케이션을 실행하는 디스플레이 장치 및 그 제어 방법
US11861561B2 (en) 2013-02-04 2024-01-02 Haworth, Inc. Collaboration system including a spatial event map
US10304037B2 (en) 2013-02-04 2019-05-28 Haworth, Inc. Collaboration system including a spatial event map
US9250761B2 (en) 2013-04-30 2016-02-02 Microsoft Technology Licensing, Llc Auto-grouping of application windows
KR20150025635A (ko) * 2013-08-29 2015-03-11 삼성전자주식회사 스크린을 제어하는 전자 장치 및 방법
KR20150136801A (ko) * 2014-05-28 2015-12-08 삼성전자주식회사 어플리케이션 ui 및 전자 장치
US10678412B2 (en) 2014-07-31 2020-06-09 Microsoft Technology Licensing, Llc Dynamic joint dividers for application windows
US10592080B2 (en) 2014-07-31 2020-03-17 Microsoft Technology Licensing, Llc Assisted presentation of application windows
US10824291B2 (en) 2014-07-31 2020-11-03 Samsung Electronics Co., Ltd. Device and method of displaying windows by using work group
KR102150961B1 (ko) * 2014-07-31 2020-09-02 삼성전자주식회사 작업 그룹을 이용하는 윈도우 표시 방법 및 장치
SG11201701667WA (en) * 2014-09-02 2017-04-27 Ab Initio Technology Llc Visually specifying subsets of components in graph-based programs through user interactions
US10496619B2 (en) 2014-09-02 2019-12-03 Ab Initio Technology Llc Compiling graph-based program specifications
US20160328098A1 (en) 2015-05-06 2016-11-10 Haworth, Inc. Virtual workspace viewport location markers in collaboration systems
CN105843577B (zh) * 2016-04-29 2019-04-19 上海新案数字科技有限公司 一种车载显示屏及其显示方法
US20180091684A1 (en) * 2016-09-26 2018-03-29 Fuji Xerox Co., Ltd. Image forming apparatus and storage medium
US10419486B1 (en) * 2016-10-11 2019-09-17 The Mitre Corporation Enhancing enterprise security on mobile platforms
CN113434065B (zh) * 2016-12-12 2022-09-30 腾讯科技(深圳)有限公司 一种信息处理方法及终端
CN107357668A (zh) * 2017-06-29 2017-11-17 深圳天珑无线科技有限公司 多窗口文件操作的方法及其系统
US12019850B2 (en) 2017-10-23 2024-06-25 Haworth, Inc. Collaboration system including markers identifying multiple canvases in multiple shared virtual workspaces
US11126325B2 (en) 2017-10-23 2021-09-21 Haworth, Inc. Virtual workspace including shared viewport markers in a collaboration system
US11934637B2 (en) 2017-10-23 2024-03-19 Haworth, Inc. Collaboration system including markers identifying multiple canvases in multiple shared virtual workspaces
KR101980977B1 (ko) * 2017-11-23 2019-05-21 성균관대학교산학협력단 다중 사용자 환경에서 사용자 기반 어플리케이션 그룹핑 방법 및 이를 수행하는 테이블탑 디스플레이 장치
US10678948B2 (en) * 2018-03-29 2020-06-09 Bank Of America Corporation Restricted multiple-application user experience via single-application mode
DK201870335A1 (en) 2018-05-07 2019-12-04 Apple Inc. DEVICES, METHODS, AND GRAPHICAL USER INTERFACES FOR PROACTIVE MANAGEMENT OF NOTIFICATIONS
US11436359B2 (en) 2018-07-04 2022-09-06 Monday.com Ltd. System and method for managing permissions of users for a single data type column-oriented data structure
US11698890B2 (en) 2018-07-04 2023-07-11 Monday.com Ltd. System and method for generating a column-oriented data structure repository for columns of single data types
KR102258115B1 (ko) * 2018-11-23 2021-05-31 한국전자통신연구원 마이크로서비스 관리 장치 및 그 방법
DK180318B1 (en) * 2019-04-15 2020-11-09 Apple Inc Systems, methods, and user interfaces for interacting with multiple application windows
CN110659010A (zh) * 2019-09-20 2020-01-07 青岛海信移动通信技术股份有限公司 一种画中画显示方法以及显示设备
CN110764862A (zh) * 2019-10-23 2020-02-07 珠海格力电器股份有限公司 一种桌面壁纸显示的方法、装置、终端设备及存储介质
US11361156B2 (en) 2019-11-18 2022-06-14 Monday.Com Digital processing systems and methods for real-time status aggregation in collaborative work systems
CN110968232A (zh) * 2020-01-01 2020-04-07 梅炯 一种计算机操作系统的gui交互结构及操作方法
US11048462B1 (en) 2020-02-14 2021-06-29 Lenovo (Singapore) Pte. Ltd. Associating a selector with plural applications for presenting the plural applications on respective plural monitors
US20240184989A1 (en) 2020-05-01 2024-06-06 Monday.com Ltd. Digital processing systems and methods for virtualfile-based electronic white board in collaborative work systems systems
EP4143732A1 (en) 2020-05-01 2023-03-08 Monday.com Ltd. Digital processing systems and methods for enhanced collaborative workflow and networking systems, methods, and devices
US11277361B2 (en) 2020-05-03 2022-03-15 Monday.com Ltd. Digital processing systems and methods for variable hang-time for social layer messages in collaborative work systems
US11750672B2 (en) 2020-05-07 2023-09-05 Haworth, Inc. Digital workspace sharing over one or more display clients in proximity of a main client
US11368473B2 (en) * 2020-09-21 2022-06-21 Microsoft Technology Licensing, Llc Interface threat assessment in multi-cluster system
US20220121325A1 (en) * 2020-10-21 2022-04-21 Lenovo (Singapore) Pte. Ltd. User interface customization per application
US11561808B2 (en) * 2020-12-14 2023-01-24 Microsoft Technology Licensing, Llc System and method of providing access to and managing virtual desktops
US11531452B2 (en) 2021-01-14 2022-12-20 Monday.com Ltd. Digital processing systems and methods for group-based document edit tracking in collaborative work systems
US12056664B2 (en) 2021-08-17 2024-08-06 Monday.com Ltd. Digital processing systems and methods for external events trigger automatic text-based document alterations in collaborative work systems
CN114020181A (zh) * 2021-10-22 2022-02-08 统信软件技术有限公司 一种工作区切换方法、窗口切换方法
US12105948B2 (en) 2021-10-29 2024-10-01 Monday.com Ltd. Digital processing systems and methods for display navigation mini maps
CN114546209B (zh) * 2021-11-03 2024-09-10 统信软件技术有限公司 一种工作区切换方法、计算设备和存储介质
CN114741009A (zh) * 2022-03-29 2022-07-12 统信软件技术有限公司 一种窗口移动方法、装置、计算设备和存储介质
US11734032B1 (en) * 2022-03-31 2023-08-22 Microsoft Technology Licensing, Llc Virtual desktop switching and communications
US20230393700A1 (en) * 2022-06-05 2023-12-07 Apple Inc. Systems and Methods for Interacting with Multiple Applications on an Electronic Device
US11741071B1 (en) 2022-12-28 2023-08-29 Monday.com Ltd. Digital processing systems and methods for navigating and viewing displayed content
US11886683B1 (en) 2022-12-30 2024-01-30 Monday.com Ltd Digital processing systems and methods for presenting board graphics
US11893381B1 (en) 2023-02-21 2024-02-06 Monday.com Ltd Digital processing systems and methods for reducing file bundle sizes
US12056255B1 (en) 2023-11-28 2024-08-06 Monday.com Ltd. Digital processing systems and methods for facilitating the development and implementation of applications in conjunction with a serverless environment

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07191820A (ja) * 1993-12-27 1995-07-28 Nec Corp マルチウィンドウ表示方式
KR20040032071A (ko) * 2002-10-08 2004-04-14 마이크로소프트 코포레이션 그래픽 사용자 인터페이스에서의 소프트웨어애플리케이션을 관리하기 위한 시스템 및 방법
KR20080002811A (ko) * 2005-04-29 2008-01-04 마이크로소프트 코포레이션 윈도우 관리 모드를 제공하는 시스템 및 방법
WO2010144331A2 (en) * 2009-06-08 2010-12-16 Apple Inc. User interface for multiple display regions

Family Cites Families (209)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4555775B1 (en) 1982-10-07 1995-12-05 Bell Telephone Labor Inc Dynamic generation and overlaying of graphic windows for multiple active program storage areas
JPS59169369A (ja) 1983-03-16 1984-09-25 Toshiba Corp 交流電流制御装置
US5233687A (en) * 1987-03-25 1993-08-03 Xerox Corporation User interface with multiple workspaces for sharing display system objects
US5394521A (en) * 1991-12-09 1995-02-28 Xerox Corporation User interface with multiple workspaces for sharing display system objects
US5072412A (en) 1987-03-25 1991-12-10 Xerox Corporation User interface with multiple workspaces for sharing display system objects
US4890098A (en) 1987-10-20 1989-12-26 International Business Machines Corporation Flexible window management on a computer display
GB8828342D0 (en) 1988-12-05 1989-01-05 Rediffusion Simulation Ltd Image generator
JPH02244323A (ja) 1989-03-17 1990-09-28 Fujitsu Ltd マルチウィンドウのグループ制御方式
KR910009072A (ko) 1989-10-05 1991-05-31 강진구 Pwm을 이용한 스텝 콘트롤 방법
US5594467A (en) 1989-12-06 1997-01-14 Video Logic Ltd. Computer based display system allowing mixing and windowing of graphics and video
US5359703A (en) * 1990-08-02 1994-10-25 Xerox Corporation Moving an object in a three-dimensional workspace
US5333272A (en) 1991-06-13 1994-07-26 International Business Machines Corporation Warning timer for users of interactive systems
EP0547784B1 (en) 1991-12-18 1999-10-06 Sun Microsystems, Inc. Managing display windows of interrelated applications
US5483261A (en) 1992-02-14 1996-01-09 Itu Research, Inc. Graphical input controller and method with rear screen image detection
US5461710A (en) 1992-03-20 1995-10-24 International Business Machines Corporation Method for providing a readily distinguishable template and means of duplication thereof in a computer system graphical user interface
US5880411A (en) 1992-06-08 1999-03-09 Synaptics, Incorporated Object position detector with edge motion feature and gesture recognition
US5488204A (en) 1992-06-08 1996-01-30 Synaptics, Incorporated Paintbrush stylus for capacitive touch sensor pad
JPH0651738A (ja) 1992-07-27 1994-02-25 Canon Inc コンピュータシステムの情報表示装置
US5754174A (en) * 1992-08-27 1998-05-19 Starfish Software, Inc. User interface with individually configurable panel interfaces for use in a computer system
US5265202A (en) 1992-08-28 1993-11-23 International Business Machines Corporation Method and system for accessing visually obscured data in a data processing system
US5588105A (en) 1992-11-16 1996-12-24 Apple Computer, Inc. Status bar for application windows
EP0605945B1 (en) 1992-12-15 1997-12-29 Sun Microsystems, Inc. Method and apparatus for presenting information in a display system using transparent windows
US5499334A (en) 1993-03-01 1996-03-12 Microsoft Corporation Method and system for displaying window configuration of inactive programs
CA2109681C (en) 1993-03-10 1998-08-25 Donald Edgar Blahut Method and apparatus for the coding and display of overlapping windows with transparency
US5638501A (en) 1993-05-10 1997-06-10 Apple Computer, Inc. Method and apparatus for displaying an overlay image
US6072489A (en) 1993-05-10 2000-06-06 Apple Computer, Inc. Method and apparatus for providing translucent images on a computer display
US5956030A (en) * 1993-06-11 1999-09-21 Apple Computer, Inc. Computer system with graphical user interface including windows having an identifier within a control region on the display
US5583984A (en) 1993-06-11 1996-12-10 Apple Computer, Inc. Computer system with graphical user interface including automated enclosures
CA2124505C (en) 1993-07-21 2000-01-04 William A. S. Buxton User interface having simultaneously movable tools and cursor
US5936610A (en) 1993-07-27 1999-08-10 Canon Kabushiki Kaisha Control device for image input apparatus
US6061064A (en) 1993-08-31 2000-05-09 Sun Microsystems, Inc. System and method for providing and using a computer user interface with a view space having discrete portions
US5822123A (en) 1993-09-09 1998-10-13 Davis; Bruce Electronic television program guide schedule system and method with pop-up hints
US5499330A (en) 1993-09-17 1996-03-12 Digital Equipment Corp. Document display system for organizing and displaying documents as screen objects organized along strand paths
JP3628729B2 (ja) 1993-09-28 2005-03-16 エヌシーアール インターナショナル インコーポレイテッド コンピュータディスプレー上におけるビデオ像の表示方法及び多重ウィンドウの表示方法
US5565657A (en) 1993-11-01 1996-10-15 Xerox Corporation Multidimensional user interface input device
US5487143A (en) 1994-04-06 1996-01-23 Altera Corporation Computer user interface having tiled and overlapped window areas
US5577188A (en) 1994-05-31 1996-11-19 Future Labs, Inc. Method to provide for virtual screen overlay
US5564002A (en) 1994-08-01 1996-10-08 International Business Machines Corporation Method and apparatus for implementing a virtual desktop through window positioning
JP3517457B2 (ja) 1994-09-08 2004-04-12 キヤノン株式会社 ウィンドウシステム及びその制御方法
US5657221A (en) 1994-09-16 1997-08-12 Medialink Technologies Corporation Method and apparatus for controlling non-computer system devices by manipulating a graphical representation
US5831615A (en) 1994-09-30 1998-11-03 Intel Corporation Method and apparatus for redrawing transparent windows
EP0713175B1 (en) * 1994-11-15 2005-01-19 Canon Kabushiki Kaisha Window management system
GB2301757B (en) * 1995-06-01 2000-02-02 Ibm Graphical user interface
US5737507A (en) 1995-07-07 1998-04-07 Sun Microsystems, Inc. Representation of inter-relationships between graphical objects in a computer display device
US6204847B1 (en) 1995-07-17 2001-03-20 Daniel W. Wright Shared virtual desktop collaborative application system
US5678015A (en) 1995-09-01 1997-10-14 Silicon Graphics, Inc. Four-dimensional graphical user interface
US5694150A (en) 1995-09-21 1997-12-02 Elo Touchsystems, Inc. Multiuser/multi pointing device graphical user interface system
US5838318A (en) 1995-11-10 1998-11-17 Intel Corporation Method and apparatus for automatically and intelligently arranging windows on a display device
US5929854A (en) 1995-11-30 1999-07-27 Ross; Michael M. Dialog box method and system for arranging document windows
US5825352A (en) 1996-01-04 1998-10-20 Logitech, Inc. Multiple fingers contact sensing method for emulating mouse buttons and mouse operations on a touch sensor pad
JP3784031B2 (ja) 1996-03-18 2006-06-07 富士通株式会社 表示画面上での選択操作に反応する領域を拡大する反応領域拡大装置および方法
US6118427A (en) 1996-04-18 2000-09-12 Silicon Graphics, Inc. Graphical user interface with optimal transparency thresholds for maximizing user performance and system efficiency
US5880733A (en) * 1996-04-30 1999-03-09 Microsoft Corporation Display system and method for displaying windows of an operating system to provide a three-dimensional workspace for a computer system
US5764229A (en) 1996-05-09 1998-06-09 International Business Machines Corporation Method of and system for updating dynamic translucent windows with buffers
US5835079A (en) 1996-06-13 1998-11-10 International Business Machines Corporation Virtual pointing device for touchscreens
US6252595B1 (en) 1996-06-16 2001-06-26 Ati Technologies Inc. Method and apparatus for a multi-state window
US5859639A (en) 1996-07-17 1999-01-12 International Business Machines Corporation Mechanism to control visible presence of desktop objects in a graphical user interface
US5920315A (en) * 1996-07-17 1999-07-06 International Business Machines Corporation Multi-pane window with recoiling workspaces
US5841435A (en) 1996-07-26 1998-11-24 International Business Machines Corporation Virtual windows desktop
US5892511A (en) 1996-09-30 1999-04-06 Intel Corporation Method for assisting window selection in a graphical user interface
US6006252A (en) 1996-10-08 1999-12-21 Wolfe; Mark A. System and method for communicating information relating to a network resource
JPH10145157A (ja) 1996-11-01 1998-05-29 Sony Corp 音量の表示装置
US5973665A (en) 1996-11-07 1999-10-26 International Business Machines Corporation Temporally invasive display guide
US5923324A (en) * 1997-04-04 1999-07-13 International Business Machines Corporation Viewer interactive three-dimensional workspace with interactive three-dimensional objects and corresponding two-dimensional images of objects in an interactive two-dimensional workplane
US6734884B1 (en) * 1997-04-04 2004-05-11 International Business Machines Corporation Viewer interactive three-dimensional objects and two-dimensional images in virtual three-dimensional workspace
US6515688B1 (en) * 1997-04-04 2003-02-04 International Business Machines Corporation Viewer interactive three-dimensional workspace with a two-dimensional workplane containing interactive two-dimensional images
US6031529A (en) 1997-04-11 2000-02-29 Avid Technology Inc. Graphics design software user interface
US6249826B1 (en) 1997-04-14 2001-06-19 Microsoft Corporation System and method for media status notification
TW412430B (en) 1997-04-24 2000-11-21 Sega Enterprises Kk Game device, game processing method, and recording medium
US6209011B1 (en) 1997-05-08 2001-03-27 Microsoft Corporation Handheld computing device with external notification system
US5767855A (en) * 1997-05-19 1998-06-16 International Business Machines Corporation Selectively enlarged viewer interactive three-dimensional objects in environmentally related virtual three-dimensional workspace displays
US5903271A (en) * 1997-05-23 1999-05-11 International Business Machines Corporation Facilitating viewer interaction with three-dimensional objects and two-dimensional images in virtual three-dimensional workspace by drag and drop technique
US6081271A (en) * 1997-05-23 2000-06-27 International Business Machines Corporation Determining view point on objects automatically in three-dimensional workspace from other environmental objects in a three-dimensional workspace
US6246407B1 (en) 1997-06-16 2001-06-12 Ati Technologies, Inc. Method and apparatus for overlaying a window with a multi-state window
US6094196A (en) * 1997-07-03 2000-07-25 International Business Machines Corporation Interaction spheres of three-dimensional objects in three-dimensional workspace displays
US6222554B1 (en) * 1997-08-26 2001-04-24 International Business Machines Corporation Navigation in three-dimensional workspace interactive displays having virtual force fields associated with selected objects
US6008809A (en) 1997-09-22 1999-12-28 International Business Machines Corporation Apparatus and method for viewing multiple windows within a dynamic window
US6310610B1 (en) 1997-12-04 2001-10-30 Nortel Networks Limited Intelligent touch display
US6323846B1 (en) 1998-01-26 2001-11-27 University Of Delaware Method and apparatus for integrating manual input
US8479122B2 (en) 2004-07-30 2013-07-02 Apple Inc. Gestures for touch sensitive input devices
US7663607B2 (en) 2004-05-06 2010-02-16 Apple Inc. Multipoint touchscreen
US6147684A (en) 1998-02-06 2000-11-14 Sun Microysytems, Inc. Techniques for navigating layers of a user interface
US7260610B2 (en) 1998-02-10 2007-08-21 Gateway Inc. Convergence events notification system
US6222538B1 (en) 1998-02-27 2001-04-24 Flashpoint Technology, Inc. Directing image capture sequences in a digital imaging device using scripts
US6151030A (en) 1998-05-27 2000-11-21 Intel Corporation Method of creating transparent graphics
US6239798B1 (en) 1998-05-28 2001-05-29 Sun Microsystems, Inc. Methods and apparatus for a window access panel
US6088018A (en) 1998-06-11 2000-07-11 Intel Corporation Method of using video reflection in providing input data to a computer system
US7346850B2 (en) 1998-06-12 2008-03-18 Cygnus Systems, Inc. System and method for iconic software environment management
JP3511029B2 (ja) 1998-06-30 2004-03-29 株式会社博報堂 通知情報表示装置、通知情報表示システムおよび記録媒体
US6188391B1 (en) 1998-07-09 2001-02-13 Synaptics, Inc. Two-layer capacitive touchpad and method of making same
US6414677B1 (en) * 1998-09-14 2002-07-02 Microsoft Corporation Methods, apparatus and data structures for providing a user interface, which exploits spatial memory in three-dimensions, to objects and which visually groups proximally located objects
JP2000152112A (ja) 1998-11-11 2000-05-30 Toshiba Corp 番組情報表示装置及び番組情報表示方法
JP4542637B2 (ja) 1998-11-25 2010-09-15 セイコーエプソン株式会社 携帯情報機器及び情報記憶媒体
JP3831538B2 (ja) 1998-11-26 2006-10-11 インターナショナル・ビジネス・マシーンズ・コーポレーション ディスプレイの省電力方法及び装置
US6577350B1 (en) 1998-12-21 2003-06-10 Sony Corporation Method and apparatus for displaying an electronic program guide
JP2000207092A (ja) 1999-01-19 2000-07-28 Internatl Business Mach Corp <Ibm> 誤操作防止方法及び装置、誤操作の防止のためのソフトウエア・プロダクトを格納した記憶媒体
US6353450B1 (en) 1999-02-16 2002-03-05 Intel Corporation Placing and monitoring transparent user interface elements in a live video stream as a method for user input
US6359631B2 (en) 1999-02-16 2002-03-19 Intel Corporation Method of enabling display transparency for application programs without native transparency support
US6459441B1 (en) 1999-03-03 2002-10-01 Dassault Systemes Software interface
US6342908B1 (en) 1999-03-22 2002-01-29 International Business Machines Corporation Progressive window organization
US6549218B1 (en) 1999-03-31 2003-04-15 Microsoft Corporation Dynamic effects for computer display windows
US7119819B1 (en) 1999-04-06 2006-10-10 Microsoft Corporation Method and apparatus for supporting two-dimensional windows in a three-dimensional environment
US6909443B1 (en) 1999-04-06 2005-06-21 Microsoft Corporation Method and apparatus for providing a three-dimensional task gallery computer interface
US6765567B1 (en) 1999-04-06 2004-07-20 Microsoft Corporation Method and apparatus for providing and accessing hidden tool spaces
US6433798B1 (en) 1999-04-30 2002-08-13 Sun Microsystems, Inc. Stationary scrolling for user interfaces
JP3478172B2 (ja) 1999-05-18 2003-12-15 日本電気株式会社 マルチウィンドウ表示システム及びウインドウの表示と消去方法
US6587128B2 (en) 1999-07-15 2003-07-01 International Business Machines Corporation Method for displaying hidden objects by varying the transparency of overlapping objects
JP2001060134A (ja) 1999-08-24 2001-03-06 Hitachi Ltd マルチウィンドウ制御システム
US6429883B1 (en) 1999-09-03 2002-08-06 International Business Machines Corporation Method for viewing hidden entities by varying window or graphic object transparency
WO2001024518A1 (en) 1999-09-25 2001-04-05 Koninklijke Philips Electronics N.V. User interface generation
ATE302971T1 (de) 1999-09-27 2005-09-15 Thomson Licensing Sa Graphisches fenstersystem
US6670970B1 (en) 1999-12-20 2003-12-30 Apple Computer, Inc. Graduated visual and manipulative translucency for windows
US7138983B2 (en) 2000-01-31 2006-11-21 Canon Kabushiki Kaisha Method and apparatus for detecting and interpreting path of designated position
US7417650B1 (en) 2000-03-16 2008-08-26 Microsoft Corporation Display and human-computer interaction for a notification platform
US7743340B2 (en) 2000-03-16 2010-06-22 Microsoft Corporation Positioning and rendering notification heralds based on user's focus of attention and activity
AU2001249261A1 (en) 2000-03-16 2001-09-24 Microsoft Corporation Notification platform architecture
US7155729B1 (en) 2000-03-28 2006-12-26 Microsoft Corporation Method and system for displaying transient notifications
US7249326B2 (en) 2000-04-06 2007-07-24 Microsoft Corporation Method and system for reducing notification area clutter
US6654036B1 (en) 2000-06-05 2003-11-25 International Business Machines Corporation Method, article of manufacture and apparatus for controlling relative positioning of objects in a windows environment
US7080321B2 (en) 2000-06-23 2006-07-18 Aspect Software, Inc. Dynamic help option for internet customers
WO2002025488A2 (en) 2000-09-25 2002-03-28 Transactions, Inc. System and method to correlate and access related text with locations on an electronically displayed map
US6976216B1 (en) 2000-11-17 2005-12-13 Streamzap, Inc. Computer system with remote key press events directed to a first application program and local key press events directed to a second application program
US7342594B1 (en) 2000-11-20 2008-03-11 Hall Aluminum Llc Techniques for displaying non-blocking always visible displays and their applications
US6828989B2 (en) 2000-12-29 2004-12-07 Microsoft Corporation Graphically represented dynamic time strip for displaying user-accessible time-dependent data objects
US20020143630A1 (en) 2001-01-10 2002-10-03 Steinman Jonas L. Method and apparatus for serving or delivering advertisements for a world wide web page
US20020094868A1 (en) 2001-01-16 2002-07-18 Alma Tuck Methods for interactive internet advertising, apparatuses and systems including same
US6915489B2 (en) 2001-03-28 2005-07-05 Hewlett-Packard Development Company, L.P. Image browsing using cursor positioning
US6907447B1 (en) 2001-04-30 2005-06-14 Microsoft Corporation Method and apparatus for providing an instant message notification
US20020167546A1 (en) 2001-05-10 2002-11-14 Kimbell Benjamin D. Picture stack
EP1393154B1 (de) 2001-05-18 2013-11-20 Rohde & Schwarz GmbH & Co. KG Messgerät mit dialogbedienung über dialogfenster und entsprechendes verfahren
JP3800984B2 (ja) 2001-05-21 2006-07-26 ソニー株式会社 ユーザ入力装置
US20020191028A1 (en) 2001-06-19 2002-12-19 Senechalle David A. Window manager user interface
US20030001899A1 (en) 2001-06-29 2003-01-02 Nokia Corporation Semi-transparent handwriting recognition UI
US6961912B2 (en) 2001-07-18 2005-11-01 Xerox Corporation Feedback mechanism for use with visual selection methods
US7305441B2 (en) 2001-07-20 2007-12-04 International Business Machines Corporation Time-sensitive messages and events
US7286141B2 (en) 2001-08-31 2007-10-23 Fuji Xerox Co., Ltd. Systems and methods for generating and controlling temporary digital ink
US20030043197A1 (en) 2001-09-05 2003-03-06 Kremer Karl Heinz Image-forming system having a graphic user interface with a companion application window
US7707546B2 (en) 2001-09-13 2010-04-27 International Business Machines Corporation Source code interface
JP2003173237A (ja) 2001-09-28 2003-06-20 Ricoh Co Ltd 情報入出力システム、プログラム及び記憶媒体
US7287063B2 (en) 2001-10-05 2007-10-23 International Business Machines Corporation Storage area network methods and apparatus using event notifications with data
US8521827B2 (en) 2001-10-18 2013-08-27 Carhamm Ltd., Llc Presentation of information to end-users
US6874126B1 (en) 2001-11-30 2005-03-29 View Space Technologies Method and apparatus for controlling content display by the cursor motion
US7346855B2 (en) 2001-12-21 2008-03-18 Microsoft Corporation Method and system for switching between multiple computer applications
US6690387B2 (en) 2001-12-28 2004-02-10 Koninklijke Philips Electronics N.V. Touch-screen image scrolling system and method
US7043701B2 (en) 2002-01-07 2006-05-09 Xerox Corporation Opacity desktop with depth perception
US6876369B2 (en) 2002-01-22 2005-04-05 International Business Machines Corp. Applying translucent filters according to visual disability needs in a network environment
US7046254B2 (en) 2002-01-28 2006-05-16 International Business Machines Corporation Displaying transparent resource aids
US6996783B2 (en) 2002-01-28 2006-02-07 International Business Machines Corporation Selectively adjusting transparency of windows within a user interface using a flashlight tool
US7370281B2 (en) 2002-02-22 2008-05-06 Bea Systems, Inc. System and method for smart drag-and-drop functionality
US7610563B2 (en) 2002-03-22 2009-10-27 Fuji Xerox Co., Ltd. System and method for controlling the display of non-uniform graphical objects
US7249327B2 (en) 2002-03-22 2007-07-24 Fuji Xerox Co., Ltd. System and method for arranging, manipulating and displaying objects in a graphical user interface
US7010755B2 (en) 2002-04-05 2006-03-07 Microsoft Corporation Virtual desktop manager
US7461378B2 (en) 2002-06-11 2008-12-02 Siemens Communications, Inc. Methods and apparatus for processing an instant message
US20040001101A1 (en) 2002-06-27 2004-01-01 Koninklijke Philips Electronics N.V. Active window switcher
US11275405B2 (en) 2005-03-04 2022-03-15 Apple Inc. Multi-functional hand-held device
US8230359B2 (en) 2003-02-25 2012-07-24 Microsoft Corporation System and method that facilitates computer desktop use via scaling of displayed objects with shifts to the periphery
US7406500B2 (en) * 2003-05-20 2008-07-29 International Business Machines Corporation Techniques for providing a virtual workspace comprised of a multiplicity of electronic devices
US20050066292A1 (en) 2003-09-24 2005-03-24 Xerox Corporation Virtual piles desktop interface
US20050125739A1 (en) 2003-11-20 2005-06-09 Thompson Jeffrey W. Virtual desktop manager system and method
US8276095B2 (en) 2004-02-20 2012-09-25 Advanced Intellectual Property Group, Llc System for and method of generating and navigating within a workspace of a computer application
JP2005275936A (ja) 2004-03-25 2005-10-06 Fujitsu Ltd ウィンドウ管理システム
US20050223334A1 (en) * 2004-03-31 2005-10-06 Guido Patrick R Affinity group window management system and method
US7657846B2 (en) 2004-04-23 2010-02-02 Microsoft Corporation System and method for displaying stack icons
US7694236B2 (en) 2004-04-23 2010-04-06 Microsoft Corporation Stack icons representing multiple objects
US20050257159A1 (en) 2004-05-13 2005-11-17 International Business Machines Corporation Method and apparatus for identifying attachments in an email message
KR100586982B1 (ko) 2004-05-20 2006-06-08 삼성전자주식회사 디스플레이 시스템 및 그 가상 작업공간 관리방법
US8341541B2 (en) 2005-01-18 2012-12-25 Microsoft Corporation System and method for visually browsing of open windows
US7581192B2 (en) * 2005-03-31 2009-08-25 Microsoft Corporation Method and apparatus for application window grouping and management
US7478339B2 (en) * 2005-04-01 2009-01-13 Microsoft Corporation Method and apparatus for application window grouping and management
US20070061745A1 (en) 2005-09-09 2007-03-15 Microsoft Corporation Nested views in an electronic file system
US9104294B2 (en) * 2005-10-27 2015-08-11 Apple Inc. Linked widgets
US20070192727A1 (en) * 2006-01-26 2007-08-16 Finley William D Three dimensional graphical user interface representative of a physical work space
US20070174777A1 (en) * 2006-01-26 2007-07-26 William Derek Finley Three dimensional graphical user interface representative of a physical work space
CN1818845A (zh) * 2006-02-27 2006-08-16 宇龙计算机通信科技(深圳)有限公司 移动通信终端桌面配置方法及其界面系统
EP2010999A4 (en) * 2006-04-21 2012-11-21 Google Inc SYSTEM FOR ORGANIZING AND VISUALIZING DISPLAY OBJECTS
CN101071370A (zh) * 2006-05-11 2007-11-14 明基电通股份有限公司 图形用户界面及其建立方法
US7676761B2 (en) 2006-06-30 2010-03-09 Microsoft Corporation Window grouping
US7665033B2 (en) 2006-08-31 2010-02-16 Sun Microsystems, Inc. Using a zooming effect to provide additional display space for managing applications
US8214768B2 (en) * 2007-01-05 2012-07-03 Apple Inc. Method, system, and graphical user interface for viewing multiple application windows
US20080244444A1 (en) * 2007-03-30 2008-10-02 Microsoft Corporation Contextual computer workspace
US8839142B2 (en) 2007-06-08 2014-09-16 Apple Inc. Desktop system object removal
US20080307359A1 (en) * 2007-06-08 2008-12-11 Apple Inc. Grouping Graphical Representations of Objects in a User Interface
US8473859B2 (en) 2007-06-08 2013-06-25 Apple Inc. Visualization and interaction models
US9086785B2 (en) 2007-06-08 2015-07-21 Apple Inc. Visualization object receptacle
US8103967B2 (en) 2007-08-31 2012-01-24 Microsoft Corporation Generating and organizing references to online content
US9619143B2 (en) 2008-01-06 2017-04-11 Apple Inc. Device, method, and graphical user interface for viewing application launch icons
US8850351B2 (en) 2007-09-25 2014-09-30 Ati Technologies Ulc Method and tool for virtual desktop management
KR20090036877A (ko) * 2007-10-10 2009-04-15 삼성전자주식회사 다중 프로젝션 윈도우 환경에서 기준자 기반으로오브젝트를 관리하는 방법 및 그 시스템
JP4453738B2 (ja) 2007-10-18 2010-04-21 ソニー株式会社 ファイル転送方法、装置、およびプログラム
US8356258B2 (en) 2008-02-01 2013-01-15 Microsoft Corporation Arranging display areas utilizing enhanced window states
US8156445B2 (en) 2008-06-20 2012-04-10 Microsoft Corporation Controlled interaction with heterogeneous data
CN101714077A (zh) * 2008-10-07 2010-05-26 英业达股份有限公司 可图形化管理电脑桌面的装置与方法
CN101739196B (zh) * 2008-11-25 2015-04-08 富士施乐株式会社 工作空间管理方法及工作空间管理系统
US8302026B2 (en) * 2008-11-28 2012-10-30 Microsoft Corporation Multi-panel user interface
US20100169828A1 (en) * 2008-12-29 2010-07-01 International Business Machines Corporation Computer desktop organization via magnet icons
US20100269069A1 (en) * 2009-04-17 2010-10-21 Nokia Corporation Method and apparatus of associating and maintaining state information for applications
US9405456B2 (en) * 2009-06-08 2016-08-02 Xerox Corporation Manipulation of displayed objects by virtual magnetism
US8656314B2 (en) * 2009-07-30 2014-02-18 Lenovo (Singapore) Pte. Ltd. Finger touch gesture for joining and unjoining discrete touch objects
US8832585B2 (en) * 2009-09-25 2014-09-09 Apple Inc. Device, method, and graphical user interface for manipulating workspace views
US9152299B2 (en) * 2009-10-08 2015-10-06 Red Hat, Inc. Activity management tool
CN101778166B (zh) * 2010-01-06 2014-12-31 宇龙计算机通信科技(深圳)有限公司 一种移动终端控制多个窗口切换的方法、系统和移动终端
TW201209697A (en) 2010-03-30 2012-03-01 Michael Luna 3D mobile user interface with configurable workspace management
US9658732B2 (en) 2010-10-19 2017-05-23 Apple Inc. Changing a virtual workspace based on user interaction with an application window in a user interface
US9013488B2 (en) * 2010-10-19 2015-04-21 Apple Inc. Grouping items in a folder
US9542202B2 (en) 2010-10-19 2017-01-10 Apple Inc. Displaying and updating workspaces in a user interface
US9292196B2 (en) 2010-10-19 2016-03-22 Apple Inc. Modifying the presentation of clustered application windows in a user interface
US10740117B2 (en) 2010-10-19 2020-08-11 Apple Inc. Grouping windows into clusters in one or more workspaces in a user interface
US10152192B2 (en) 2011-02-21 2018-12-11 Apple Inc. Scaling application windows in one or more workspaces in a user interface
US20150046557A1 (en) 2013-02-10 2015-02-12 Einar Rosenberg System, method and apparatus for using a virtual bucket to transfer electronic data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07191820A (ja) * 1993-12-27 1995-07-28 Nec Corp マルチウィンドウ表示方式
KR20040032071A (ko) * 2002-10-08 2004-04-14 마이크로소프트 코포레이션 그래픽 사용자 인터페이스에서의 소프트웨어애플리케이션을 관리하기 위한 시스템 및 방법
KR20080002811A (ko) * 2005-04-29 2008-01-04 마이크로소프트 코포레이션 윈도우 관리 모드를 제공하는 시스템 및 방법
WO2010144331A2 (en) * 2009-06-08 2010-12-16 Apple Inc. User interface for multiple display regions

Also Published As

Publication number Publication date
EP2444893A1 (en) 2012-04-25
CN108319491B (zh) 2022-08-09
NL2007618C2 (en) 2012-04-23
US20120096392A1 (en) 2012-04-19
KR102004553B1 (ko) 2019-07-26
CN115269095A (zh) 2022-11-01
WO2012054620A1 (en) 2012-04-26
EP2444893B1 (en) 2017-07-26
KR101733839B1 (ko) 2017-05-08
KR20130107312A (ko) 2013-10-01
CN103229141A (zh) 2013-07-31
US10740117B2 (en) 2020-08-11
AU2011239221B2 (en) 2013-05-23
CN115269096A (zh) 2022-11-01
CN108319491A (zh) 2018-07-24
AU2011239221A1 (en) 2012-05-03
CN115269094A (zh) 2022-11-01
CN103229141B (zh) 2018-03-13

Similar Documents

Publication Publication Date Title
US20220137758A1 (en) Updating display of workspaces in a user interface for managing workspaces in response to user input
KR102004553B1 (ko) 사용자 인터페이스에서의 작업 공간 관리
US9658732B2 (en) Changing a virtual workspace based on user interaction with an application window in a user interface
US9292196B2 (en) Modifying the presentation of clustered application windows in a user interface
US10152192B2 (en) Scaling application windows in one or more workspaces in a user interface
EP2455858B1 (en) Grouping and browsing open windows
AU2019202690B2 (en) Managing workspaces in a user interface
AU2013216607B2 (en) Managing workspaces in a user interface

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant