Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/model/History.java')
-rw-r--r--org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/model/History.java482
1 files changed, 241 insertions, 241 deletions
diff --git a/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/model/History.java b/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/model/History.java
index 4ac06576f..f02839a9d 100644
--- a/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/model/History.java
+++ b/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/model/History.java
@@ -22,250 +22,250 @@ import org.eclipse.ui.internal.intro.impl.model.url.IntroURLParser;
* Intro History Model.
*/
public class History {
- // History of Intro Pages and real URL visited by Intro Browser. All
- // elements are all of type HistoryObject.
+ // History of Intro Pages and real URL visited by Intro Browser. All
+ // elements are all of type HistoryObject.
private Vector<HistoryObject> history = new Vector<>();
- private int navigationLocation = 0;
-
-
- // Model class for history objects. A history object may be a url or an
- // Intro page. A url is a regular URL navigated to from a fully qualified
- // link. An intro page may be an IFrame page. IFrame pages are not created
- // for every Help topic navigated in an embedded IFrame. Instead the same
- // IFrame is stored in history as a different object with the IFrameURL set.
- // This way the model actually creates one page for every embedded Help
- // Topic target but the navigation history updates the IFrame accordingly.
- class HistoryObject {
- AbstractIntroPage page;
- String iframeUrl;
- String url;
-
- HistoryObject(Object location) {
- if (location instanceof String)
- this.url = (String) location;
-
- if (location instanceof AbstractIntroPage) {
- this.page = (AbstractIntroPage) location;
- // will be set to null if the page is not an IFrame page.
- this.iframeUrl = this.page.getIFrameURL();
- }
- }
-
- /**
- * returns the history page. If iframe page, updated to correct url.
- *
- * @return
- */
- AbstractIntroPage getPage() {
- if (page.isIFramePage())
- // when page was stored, the IFrame url was also stored. Make
- // sure to return the same state. The page is the same, only the
- // IFrame url changes.
- page.setIFrameURL(getIFrameUrl());
- return page;
- }
-
- String getPageId() {
- return page.getId();
- }
-
- String getIFrameUrl() {
- return iframeUrl;
- }
-
- String getUrl() {
- return url;
- }
-
- boolean isURL() {
- return (url != null) ? true : false;
- }
-
- boolean isIntroPage() {
- return (page != null) ? true : false;
- }
-
- boolean isIFramePage() {
- return (iframeUrl != null) ? true : false;
- }
-
- }
-
-
- /**
- * Updates the UI navigation history with either a real URL, or a page ID.
- *
- * @param pageId
- */
- public void updateHistory(String location) {
- // quick exit.
- if (!history.isEmpty() && isSameLocation(location))
- // resetting the same location is useless.
- return;
- doUpdateHistory(location);
- }
-
- /**
- * Updates the UI navigation history with either a real URL, or a page ID.
- *
- * @param page
- */
- public void updateHistory(AbstractIntroPage page) {
- // quick exit.
- if (!history.isEmpty() && isSameLocation(page))
- // resetting the same location is useless.
- return;
- doUpdateHistory(page);
- }
-
- private void doUpdateHistory(Object location) {
- // we got here due to an intro URL listener or an SWT Form hyperlink
- // listener. location may be a url or an IntroPage.
- if (navigationLocation == getHistoryEndPosition())
- // we are at the end of the vector, just push.
- pushToHistory(location);
- else
- // we already navigated. add item at current location, and clear
- // rest of history. (Same as browser behavior.)
- trimHistory(location);
- }
-
-
- private boolean isSameLocation(Object location) {
- HistoryObject currentLocation = getCurrentLocation();
- if (location instanceof String && currentLocation.isURL())
- return currentLocation.getUrl().equals(location);
-
- if (location instanceof AbstractIntroPage
- && currentLocation.isIntroPage()) {
-
- AbstractIntroPage locationPage = (AbstractIntroPage) location;
- // be carefull here with calling getPage on historyOvject.
- if (!currentLocation.getPageId().equals(locationPage.getId()))
- return false;
-
- // both pages have same ids, they are either both regular pages or
- // both are Iframe pages. check if they have the same IFrame urls
- if (currentLocation.isIFramePage() && locationPage.isIFramePage())
- return currentLocation.getIFrameUrl().equals(
- locationPage.getIFrameURL());
-
- // both pages are not IFrame pages, and they have same id.
- return true;
- }
-
- return false;
- }
-
-
-
-
- private void pushToHistory(Object location) {
- history.add(new HistoryObject(location));
- // point the nav location to the end of the vector.
- navigationLocation = getHistoryEndPosition();
- }
-
- public void removeLastHistory() {
- history.remove(getHistoryEndPosition());
- // point the nav location to the end of the vector.
- navigationLocation = getHistoryEndPosition();
- }
-
- private void trimHistory(Object location) {
+ private int navigationLocation = 0;
+
+
+ // Model class for history objects. A history object may be a url or an
+ // Intro page. A url is a regular URL navigated to from a fully qualified
+ // link. An intro page may be an IFrame page. IFrame pages are not created
+ // for every Help topic navigated in an embedded IFrame. Instead the same
+ // IFrame is stored in history as a different object with the IFrameURL set.
+ // This way the model actually creates one page for every embedded Help
+ // Topic target but the navigation history updates the IFrame accordingly.
+ class HistoryObject {
+ AbstractIntroPage page;
+ String iframeUrl;
+ String url;
+
+ HistoryObject(Object location) {
+ if (location instanceof String)
+ this.url = (String) location;
+
+ if (location instanceof AbstractIntroPage) {
+ this.page = (AbstractIntroPage) location;
+ // will be set to null if the page is not an IFrame page.
+ this.iframeUrl = this.page.getIFrameURL();
+ }
+ }
+
+ /**
+ * returns the history page. If iframe page, updated to correct url.
+ *
+ * @return
+ */
+ AbstractIntroPage getPage() {
+ if (page.isIFramePage())
+ // when page was stored, the IFrame url was also stored. Make
+ // sure to return the same state. The page is the same, only the
+ // IFrame url changes.
+ page.setIFrameURL(getIFrameUrl());
+ return page;
+ }
+
+ String getPageId() {
+ return page.getId();
+ }
+
+ String getIFrameUrl() {
+ return iframeUrl;
+ }
+
+ String getUrl() {
+ return url;
+ }
+
+ boolean isURL() {
+ return (url != null) ? true : false;
+ }
+
+ boolean isIntroPage() {
+ return (page != null) ? true : false;
+ }
+
+ boolean isIFramePage() {
+ return (iframeUrl != null) ? true : false;
+ }
+
+ }
+
+
+ /**
+ * Updates the UI navigation history with either a real URL, or a page ID.
+ *
+ * @param pageId
+ */
+ public void updateHistory(String location) {
+ // quick exit.
+ if (!history.isEmpty() && isSameLocation(location))
+ // resetting the same location is useless.
+ return;
+ doUpdateHistory(location);
+ }
+
+ /**
+ * Updates the UI navigation history with either a real URL, or a page ID.
+ *
+ * @param page
+ */
+ public void updateHistory(AbstractIntroPage page) {
+ // quick exit.
+ if (!history.isEmpty() && isSameLocation(page))
+ // resetting the same location is useless.
+ return;
+ doUpdateHistory(page);
+ }
+
+ private void doUpdateHistory(Object location) {
+ // we got here due to an intro URL listener or an SWT Form hyperlink
+ // listener. location may be a url or an IntroPage.
+ if (navigationLocation == getHistoryEndPosition())
+ // we are at the end of the vector, just push.
+ pushToHistory(location);
+ else
+ // we already navigated. add item at current location, and clear
+ // rest of history. (Same as browser behavior.)
+ trimHistory(location);
+ }
+
+
+ private boolean isSameLocation(Object location) {
+ HistoryObject currentLocation = getCurrentLocation();
+ if (location instanceof String && currentLocation.isURL())
+ return currentLocation.getUrl().equals(location);
+
+ if (location instanceof AbstractIntroPage
+ && currentLocation.isIntroPage()) {
+
+ AbstractIntroPage locationPage = (AbstractIntroPage) location;
+ // be carefull here with calling getPage on historyOvject.
+ if (!currentLocation.getPageId().equals(locationPage.getId()))
+ return false;
+
+ // both pages have same ids, they are either both regular pages or
+ // both are Iframe pages. check if they have the same IFrame urls
+ if (currentLocation.isIFramePage() && locationPage.isIFramePage())
+ return currentLocation.getIFrameUrl().equals(
+ locationPage.getIFrameURL());
+
+ // both pages are not IFrame pages, and they have same id.
+ return true;
+ }
+
+ return false;
+ }
+
+
+
+
+ private void pushToHistory(Object location) {
+ history.add(new HistoryObject(location));
+ // point the nav location to the end of the vector.
+ navigationLocation = getHistoryEndPosition();
+ }
+
+ public void removeLastHistory() {
+ history.remove(getHistoryEndPosition());
+ // point the nav location to the end of the vector.
+ navigationLocation = getHistoryEndPosition();
+ }
+
+ private void trimHistory(Object location) {
List<HistoryObject> newHistory = history.subList(0, navigationLocation + 1);
history = new Vector<>(newHistory);
- history.add(new HistoryObject(location));
- // point the nav location to the end of the vector.
- navigationLocation = getHistoryEndPosition();
- }
-
- /**
- * Return the position of the last element in the navigation history. If
- * vector is empty, return 0.
- *
- * @param vector
- * @return
- */
- private int getHistoryEndPosition() {
- if (history.isEmpty())
- return 0;
- return history.size() - 1;
- }
-
- public void navigateHistoryBackward() {
- if (badNavigationLocation(navigationLocation - 1))
- // do nothing. We are at the begining.
- return;
- --navigationLocation;
- }
-
- /**
- * Navigate forward in the history.
- *
- * @return
- */
- public void navigateHistoryForward() {
- if (badNavigationLocation(navigationLocation + 1))
- // do nothing. We are at the begining.
- return;
- ++navigationLocation;
- }
-
-
- private boolean badNavigationLocation(int navigationLocation) {
- if (navigationLocation < 0 || navigationLocation >= history.size())
- // bad nav location.
- return true;
- return false;
- }
-
-
- /**
- * Returns true if the current location in the navigation history represents
- * a URL. False if the location is an Intro Page id.
- *
- * @return Returns the locationIsURL.
- */
- private HistoryObject getCurrentLocation() {
- return history.elementAt(navigationLocation);
- }
-
- public boolean canNavigateForward() {
- return navigationLocation != getHistoryEndPosition() ? true : false;
- }
-
- public boolean canNavigateBackward() {
- return navigationLocation == 0 ? false : true;
- }
-
- public boolean currentLocationIsUrl() {
- if (history.size() == 0) {
- return false;
- }
- return getCurrentLocation().isURL();
- }
-
- public String getCurrentLocationAsUrl() {
- return getCurrentLocation().getUrl();
- }
-
- public AbstractIntroPage getCurrentLocationAsPage() {
- return getCurrentLocation().getPage();
- }
-
- public static boolean isURL(String aString) {
- IntroURLParser parser = new IntroURLParser(aString);
- if (parser.hasProtocol())
- return true;
- return false;
- }
-
-
- public void clear() {
- history.clear();
- navigationLocation = 0;
- }
+ history.add(new HistoryObject(location));
+ // point the nav location to the end of the vector.
+ navigationLocation = getHistoryEndPosition();
+ }
+
+ /**
+ * Return the position of the last element in the navigation history. If
+ * vector is empty, return 0.
+ *
+ * @param vector
+ * @return
+ */
+ private int getHistoryEndPosition() {
+ if (history.isEmpty())
+ return 0;
+ return history.size() - 1;
+ }
+
+ public void navigateHistoryBackward() {
+ if (badNavigationLocation(navigationLocation - 1))
+ // do nothing. We are at the begining.
+ return;
+ --navigationLocation;
+ }
+
+ /**
+ * Navigate forward in the history.
+ *
+ * @return
+ */
+ public void navigateHistoryForward() {
+ if (badNavigationLocation(navigationLocation + 1))
+ // do nothing. We are at the begining.
+ return;
+ ++navigationLocation;
+ }
+
+
+ private boolean badNavigationLocation(int navigationLocation) {
+ if (navigationLocation < 0 || navigationLocation >= history.size())
+ // bad nav location.
+ return true;
+ return false;
+ }
+
+
+ /**
+ * Returns true if the current location in the navigation history represents
+ * a URL. False if the location is an Intro Page id.
+ *
+ * @return Returns the locationIsURL.
+ */
+ private HistoryObject getCurrentLocation() {
+ return history.elementAt(navigationLocation);
+ }
+
+ public boolean canNavigateForward() {
+ return navigationLocation != getHistoryEndPosition() ? true : false;
+ }
+
+ public boolean canNavigateBackward() {
+ return navigationLocation == 0 ? false : true;
+ }
+
+ public boolean currentLocationIsUrl() {
+ if (history.size() == 0) {
+ return false;
+ }
+ return getCurrentLocation().isURL();
+ }
+
+ public String getCurrentLocationAsUrl() {
+ return getCurrentLocation().getUrl();
+ }
+
+ public AbstractIntroPage getCurrentLocationAsPage() {
+ return getCurrentLocation().getPage();
+ }
+
+ public static boolean isURL(String aString) {
+ IntroURLParser parser = new IntroURLParser(aString);
+ if (parser.hasProtocol())
+ return true;
+ return false;
+ }
+
+
+ public void clear() {
+ history.clear();
+ navigationLocation = 0;
+ }

Back to the top