Search in sources :

Example 1 with TextWithEnableFix

use of edu.cmu.cs.hcii.cogtool.util.TextWithEnableFix in project cogtool by cogtool.

the class WebCrawlImportDialog method buildThirdGroup.

public void buildThirdGroup() {
    typeHTMLGroup3 = new Group(useSelectionGroup, SWT.SHADOW_NONE);
    typeHTMLGroup3.setText("Starting URL #3");
    typeHTMLGroup3.setLayout(new FormLayout());
    urlText3 = new TextWithEnableFix(typeHTMLGroup3, SWT.BORDER | SWT.SINGLE);
    urlText3.setText("http://");
    urlText3.addTraverseListener(new TraverseListener() {

        public void keyTraversed(TraverseEvent e) {
            if (e.detail == SWT.TRAVERSE_TAB_PREVIOUS) {
                e.detail = SWT.TRAVERSE_NONE;
                questionMarkButtonDomain2.forceFocus();
            }
        }
    });
    plusButton3 = makeToolBarButton(typeHTMLGroup3, addGroupListener, questionImages.PLUS_IMAGE);
    minusButton3 = makeToolBarButton(typeHTMLGroup3, minusGroupListener3, questionImages.MINUS_IMAGE);
    maximumDepthToCrawlLabel3 = new Label(typeHTMLGroup3, SWT.NONE);
    maximumDepthToCrawlLabel3.setText("Maximum Depth To Crawl: ");
    questionMarkButtonDepth3 = makeToolBarButton(typeHTMLGroup3, depthListener, questionImages.QUESTION_SHADOW);
    maxDepthCombo3 = new ComboWithEnableFix(typeHTMLGroup3, SWT.DROP_DOWN | SWT.READ_ONLY);
    maxDepthCombo3.add("Unlimited");
    for (int i = 0; i < 100; i++) {
        maxDepthCombo3.add("" + i);
    }
    maxDepthCombo3.select(2);
    maxDepthCombo3.setVisibleItemCount(21);
    useHTML7 = new Button(typeHTMLGroup3, SWT.RADIO);
    useHTML7.addSelectionListener(domainListener);
    useHTML7.setSelection(true);
    useHTML8 = new Button(typeHTMLGroup3, SWT.RADIO);
    useHTML8.addSelectionListener(domainListener);
    useHTML9 = new Button(typeHTMLGroup3, SWT.RADIO);
    useHTML9.addSelectionListener(domainListener);
    urlPath7 = new Label(typeHTMLGroup3, SWT.NONE);
    urlPath7.setText("Unrestricted");
    urlPath8 = new Label(typeHTMLGroup3, SWT.NONE);
    urlPath8.setText("http://host_name/");
    urlPath9 = new Label(typeHTMLGroup3, SWT.NONE);
    urlPath9.setText("http://host_name/path");
    urlPath9b = new Label(typeHTMLGroup3, SWT.NONE);
    urlPath9b.setText("path");
    urlPath9b.setFont(URL_PATH_FONT);
    urlPath9b.setVisible(false);
    maxDepthCombo3.addSelectionListener(comboListener);
    restrictDomainLabel3 = new Label(typeHTMLGroup3, SWT.NONE);
    restrictDomainLabel3.setText("Restrict Domain: ");
    questionMarkButtonDomain3 = makeToolBarButton(typeHTMLGroup3, domainHelpListener, questionImages.QUESTION_SHADOW);
    urlText3.addFocusListener(new TextFocusListener(urlText3, urlPath8, urlPath9, useHTML7, useHTML8, useHTML9, 3));
}
Also used : FormLayout(org.eclipse.swt.layout.FormLayout) Group(org.eclipse.swt.widgets.Group) TraverseEvent(org.eclipse.swt.events.TraverseEvent) TraverseListener(org.eclipse.swt.events.TraverseListener) Button(org.eclipse.swt.widgets.Button) TextWithEnableFix(edu.cmu.cs.hcii.cogtool.util.TextWithEnableFix) Label(org.eclipse.swt.widgets.Label) ComboWithEnableFix(edu.cmu.cs.hcii.cogtool.util.ComboWithEnableFix) Point(org.eclipse.swt.graphics.Point)

Example 2 with TextWithEnableFix

use of edu.cmu.cs.hcii.cogtool.util.TextWithEnableFix in project cogtool by cogtool.

the class WidgetPropertiesPane method createWidgets.

protected void createWidgets() {
    // set up widgets, set disabled for launch
    widgetName = new DisplayLabel(this, SWT.NONE);
    widgetName.setText(L10N.get("FE.WidgetNameCaption", "Widget Name") + ":");
    widgetNameText = new WidgetChangeText(this, SWT.SINGLE | SWT.BORDER, FrameEditorLID.ChangeNameProperty, view);
    widgetTitle = new DisplayLabel(this, SWT.NONE);
    widgetTitle.setText(DISPLAYED_LABEL);
    widgetTitleText = new WidgetChangeText(this, SWT.SINGLE | SWT.BORDER, FrameEditorLID.ChangeTitleProperty, view);
    widgetAux = new DisplayLabel(this, SWT.NONE);
    widgetAux.setText(AUX_TEXT_LABEL);
    widgetAuxText = new WidgetChangeText(this, SWT.SINGLE | SWT.BORDER, FrameEditorLID.ChangeAuxTextProperty, view);
    widgetType = new DisplayLabel(this, SWT.NONE);
    widgetType.setText(L10N.get("FE.WidgetTypeCaption", "Type") + ":");
    widgetTypeLabel = new Label(this, SWT.NONE);
    widgetMode = new DisplayLabel(this, SWT.NONE);
    widgetMode.setText(L10N.get("FE.WidgetModeCaption", "Mode") + ":");
    widgetModeValue = new Label(this, SWT.NONE);
    widgetRender = new Button(this, SWT.CHECK);
    widgetRender.setText(L10N.get("FE.WidgetRenderedCaption", "Render Widget Skin"));
    // Add listener to the rendered widget property
    widgetRender.addSelectionListener(view.createWidgetChgHandler(FrameEditorLID.SetRenderSkin));
    remoteLabel = new DisplayLabel(this, SWT.NONE);
    remoteLabel.setText(L10N.get("FE.RemoteLabelCaption", "Remote Label") + ":");
    remoteLabelFind = new Link(this, SWT.NONE);
    remoteLabelFind.setText(L10N.get("FE.RemoteLabelFind", "<a>Find</a>"));
    remoteLabelFind.setFont(FontUtils.getAdjustedFont(remoteLabelFind.getFont(), 8, SWT.BOLD));
    remoteLabelText = new WidgetChangeText(this, SWT.SINGLE | SWT.BORDER, FrameEditorLID.SetRemoteLabelText, view);
    remoteLabelOwner = new DisplayLabel(this, SWT.NONE);
    remoteLabelOwner.setText(L10N.get("FE.RemoteLabelOwnerCaption", "Remote Label Owner") + ":");
    remoteLabelOwnerName = new Link(this, SWT.NONE);
    remoteLabelType = new DisplayLabel(this, SWT.NONE);
    remoteLabelType.setText(L10N.get("FE.RemoteLabelTypeCaption", "Remote Label Type") + ":");
    remoteLabelTypeCombo = new View.PerformActionCombo(this, SWT.DROP_DOWN | SWT.READ_ONLY) {

        @Override
        protected boolean doChangeAction() {
            int selectedType = remoteLabelTypeCombo.getSelectionIndex();
            FrameEditorUI.SetRemoteLabelTypeParms setTypeParms = new FrameEditorUI.SetRemoteLabelTypeParms(widgetTypeChoices[selectedType], view.selection.getSelectedIWidgets()[0]);
            return view.performAction(FrameEditorLID.SetRemoteLabelType, setTypeParms, true);
        }
    };
    for (WidgetType widgetTypeChoice : widgetTypeChoices) {
        remoteLabelTypeCombo.add(widgetTypeChoice.toString());
    }
    imagePath = new DisplayLabel(this, SWT.NONE);
    imagePath.setText(IMAGE_PATH);
    imagePathText = new TextWithEnableFix(this, SWT.SINGLE | SWT.READ_ONLY);
    isInitiallySelected = new Button(this, SWT.CHECK);
    isInitiallySelected.setText(L10N.get("FE.InitiallySelected", "Initially Selected"));
    WidgetAttributeListener listener = new WidgetAttributeListener(WidgetAttributes.IS_SELECTED_ATTR) {

        @Override
        public Object getValue() {
            return new Boolean(isInitiallySelected.getSelection());
        }
    };
    isInitiallySelected.addSelectionListener(listener);
    isButtonSelected = new Button(this, SWT.CHECK);
    isButtonSelected.setText(L10N.get("FE.InitiallySelected", "Initially Selected"));
    isButtonSelected.setEnabled(false);
    listener = new WidgetAttributeListener(WidgetAttributes.IS_SELECTED_ATTR) {

        @Override
        public Object getValue() {
            return new Boolean(isButtonSelected.getSelection());
        }
    };
    isButtonSelected.addSelectionListener(listener);
    isToggleable = new Button(this, SWT.CHECK);
    isToggleable.setText(L10N.get("FE.Togglable", "Can be toggled"));
    listener = new WidgetAttributeListener(WidgetAttributes.IS_TOGGLEABLE_ATTR) {

        @Override
        public Object getValue() {
            boolean sel = isToggleable.getSelection();
            isButtonSelected.setEnabled(sel);
            return new Boolean(sel);
        }
    };
    isToggleable.addSelectionListener(listener);
    /*this.isMultiLine = new Button(parent, SWT.CHECK);
        this.isMultiLine.setText(L10N.get("FE.MultiLine", "Multiple Lined"));

        listener = new WidgetAttributeListener(WidgetType.IS_MULTILINE_ATTR) {
            @Override
            public Object getValue() {
                return new Boolean(isMultiLine.getSelection());
            }
        };
        this.isMultiLine.addSelectionListener(listener);*/
    selectLabel = new DisplayLabel(this, SWT.NONE);
    selectLabel.setText(L10N.get("FE.ComboSelectCaption", "Initially Selected Item") + ":");
    initiallySelected = new ComboWithEnableFix(this, SWT.DROP_DOWN | SWT.READ_ONLY);
    initiallySelected.setVisibleItemCount(8);
    initiallySelected.addSelectionListener(selectionAttrListener);
    isSeparator = new Button(this, SWT.CHECK);
    isSeparator.setText(L10N.get("FE.Separator", "Separator"));
    listener = new WidgetAttributeListener(WidgetAttributes.IS_SEPARATOR_ATTR) {

        @Override
        public Object getValue() {
            return (isSeparator.getSelection()) ? WidgetAttributes.IS_SEPARATOR : WidgetAttributes.NON_SEPARATOR;
        }
    };
    isSeparator.addSelectionListener(listener);
    isSeparator.moveAbove(widgetTypeLabel);
    submenuActionLabel = new DisplayLabel(this, SWT.NONE);
    submenuActionLabel.setText(L10N.get("FE.SubmenuActionLabel", "Submenu transition action") + ":");
    submenuAction = new ComboWithEnableFix(this, SWT.DROP_DOWN | SWT.READ_ONLY);
    // Maximize the possible set of values.
    submenuActions = new Integer[] { WidgetAttributes.HOVER_SUBMENU_ACTION, null, null };
    submenuAction.add(L10N.get("FE.HoverSubmenuAction", "Hover"));
    listener = new WidgetAttributeListener(WidgetAttributes.SUBMENU_ACTION_ATTR) {

        @Override
        public Object getValue() {
            Object a = submenuActions[submenuAction.getSelectionIndex()];
            submenuDelay.setEnabled(a == WidgetAttributes.HOVER_SUBMENU_ACTION);
            return a;
        }
    };
    submenuAction.addSelectionListener(listener);
    submenuDelayLabel = new DisplayLabel(this, SWT.NONE);
    submenuDelayLabel.setText(L10N.get("FE.SubmenuDelay", "Submenu transition delay") + ":");
    // TODO: remove READ_ONLY when editing allowed (check exception in setSubmenuDelayAttr)
    submenuDelay = new ComboWithEnableFix(this, SWT.DROP_DOWN | SWT.READ_ONLY);
    submenuDelay.add("0.0 s (" + L10N.get("FE.TypicalForMac", "typical for a Mac") + ")");
    submenuDelay.add("0.5 s (" + L10N.get("FE.TypicalForPC", "typical for a PC") + ")");
    listener = new WidgetAttributeListener(WidgetAttributes.SUBMENU_DELAY_ATTR) {

        @Override
        public Object getValue() {
            switch(submenuDelay.getSelectionIndex()) {
                case 0:
                    {
                        return WidgetAttributes.NO_SUBMENU_DELAY;
                    }
                case 1:
                    {
                        return WidgetAttributes.PC_SUBMENU_DELAY;
                    }
            }
            // should be the current value!
            return null;
        }

        @Override
        public void widgetDefaultSelected(SelectionEvent evt) {
            view.setSubmenuDelayAttr(view.selection.getSelectedIWidgets()[0], submenuDelay.getText());
        }
    };
    submenuDelay.addSelectionListener(listener);
    submenuDelay.addKeyListener(new KeyListener() {

        public void keyPressed(KeyEvent evt) {
            /*
                     * We can allow certain types of characters here:
                     * Control characters (arrow keys, etc): Character.CONTROL
                     * Numerics: Character.DECIMAL_DIGIT_NUMBER
                     * Decimal Point: keycodes 46 and 16777262
                     *
                     * Disallow anything else
                     */
            int characterType = Character.getType(evt.character);
            if ((characterType == Character.CONTROL) || (characterType == Character.DECIMAL_DIGIT_NUMBER) || (evt.keyCode == 46) || (evt.keyCode == 16777262)) {
                evt.doit = true;
            } else {
                evt.doit = false;
            }
        }

        // listen for the enter key on the number pad for OS X
        public void keyReleased(KeyEvent evt) {
            if (OSUtils.MACOSX) {
                if (evt.keyCode == SWT.KEYPAD_CR) {
                    view.setSubmenuDelayAttr(view.selection.getSelectedIWidgets()[0], submenuDelay.getText());
                }
            }
        }
    });
    contextMenuActionLabel = new DisplayLabel(this, SWT.NONE);
    contextMenuActionLabel.setText(L10N.get("FE.ContextMenuAction", "Context Menu Action") + ":");
    // Maximize the possible set of values.
    contextMenuActions = new Integer[] { null, null, null };
    contextMenuAction = new ComboWithEnableFix(this, SWT.DROP_DOWN | SWT.READ_ONLY);
    //TODO: this.contextMenuAction.add(L10N.get("FE.MenuKeyPress", "Menu Key Press"));
    listener = new WidgetAttributeListener(WidgetAttributes.CONTEXT_MENU_ACTION_ATTR) {

        @Override
        public Object getValue() {
            return contextMenuActions[contextMenuAction.getSelectionIndex()];
        }
    };
    contextMenuAction.addSelectionListener(listener);
    // Set initial selection
    //widgetShapeCombo.select(0);
    widgetTypeLabel.setText(N_A);
    widgetModeValue.setText(N_A);
}
Also used : DisplayLabel(edu.cmu.cs.hcii.cogtool.util.DisplayLabel) Label(org.eclipse.swt.widgets.Label) FrameEditorUI(edu.cmu.cs.hcii.cogtool.ui.FrameEditorUI) DisplayLabel(edu.cmu.cs.hcii.cogtool.util.DisplayLabel) KeyEvent(org.eclipse.swt.events.KeyEvent) RadioButton(edu.cmu.cs.hcii.cogtool.model.RadioButton) Button(org.eclipse.swt.widgets.Button) TextWithEnableFix(edu.cmu.cs.hcii.cogtool.util.TextWithEnableFix) SelectionEvent(org.eclipse.swt.events.SelectionEvent) KeyListener(org.eclipse.swt.events.KeyListener) WidgetType(edu.cmu.cs.hcii.cogtool.model.WidgetType) Link(org.eclipse.swt.widgets.Link) ComboWithEnableFix(edu.cmu.cs.hcii.cogtool.util.ComboWithEnableFix)

Example 3 with TextWithEnableFix

use of edu.cmu.cs.hcii.cogtool.util.TextWithEnableFix in project cogtool by cogtool.

the class FramePropertiesPane method createWidgets.

protected void createWidgets(final View view) {
    ListenerIdentifierMap lidMap = view.getLIDMap();
    frameNameLabel = new DisplayLabel(this, SWT.NONE);
    frameNameLabel.setText(NAME_LABEL);
    frameName = new View.PerformActionText(this, SWT.SINGLE | SWT.BORDER) {

        @Override
        protected void onFocus() {
            super.onFocus();
            view.getTransmuter().setLIDEnabledState();
        }

        @Override
        protected boolean doChangeAction() {
            Frame frame = (Frame) getData();
            DesignEditorUI.FrameRenameParameters evt = new DesignEditorUI.FrameRenameParameters(frame, getText());
            boolean changed = view.performAction(DesignEditorLID.RenameFrame, evt, true);
            if (!changed) {
                setText(frame.getName());
            }
            return changed;
        }
    };
    imagePath = new DisplayLabel(this, SWT.NONE);
    imagePath.setText(IMAGE_PATH);
    imagePathText = new TextWithEnableFix(this, SWT.SINGLE | SWT.READ_ONLY);
    widgetTreeLabel = new DisplayLabel(this, SWT.NONE);
    widgetTreeLabel.setText(WIDGETS);
    widgetTree = new Tree(this, SWT.SINGLE | SWT.FULL_SELECTION | SWT.BORDER);
    widgetTree.setLinesVisible(true);
    widgetUpdater = new TreeItemUpdater.WidgetItemUpdater(widgetTree);
    if (CogToolPref.RESEARCH.getBoolean()) {
        eltGroupTreeLabel = new DisplayLabel(this, SWT.NONE);
        eltGroupTreeLabel.setText(ELEMENT_GROUPS);
        eltGroupTree = new Tree(this, SWT.SINGLE | SWT.FULL_SELECTION | SWT.BORDER);
        eltGroupTree.setLinesVisible(true);
        eltGroupUpdater = new TreeItemUpdater.EltGroupItemUpdater(eltGroupTree);
        implicitGroupTreeLabel = new DisplayLabel(this, SWT.NONE);
        implicitGroupTreeLabel.setText(IMPLICIT_GROUPS);
        implicitGroupTree = new Tree(this, SWT.SINGLE | SWT.FULL_SELECTION | SWT.BORDER);
        implicitGroupTree.setLinesVisible(true);
        implicitGroupUpdater = new TreeItemUpdater.ImplicitGroupItemUpdater(implicitGroupTree);
    }
}
Also used : Frame(edu.cmu.cs.hcii.cogtool.model.Frame) DisplayLabel(edu.cmu.cs.hcii.cogtool.util.DisplayLabel) DesignEditorUI(edu.cmu.cs.hcii.cogtool.ui.DesignEditorUI) ListenerIdentifierMap(edu.cmu.cs.hcii.cogtool.util.ListenerIdentifierMap) TextWithEnableFix(edu.cmu.cs.hcii.cogtool.util.TextWithEnableFix) Tree(org.eclipse.swt.widgets.Tree)

Example 4 with TextWithEnableFix

use of edu.cmu.cs.hcii.cogtool.util.TextWithEnableFix in project cogtool by cogtool.

the class WebCrawlImportDialog method buildSecondGroup.

public void buildSecondGroup() {
    typeHTMLGroup2 = new Group(useSelectionGroup, SWT.SHADOW_NONE);
    typeHTMLGroup2.setText("Starting URL #2");
    typeHTMLGroup2.setLayout(new FormLayout());
    urlText2 = new TextWithEnableFix(typeHTMLGroup2, SWT.BORDER | SWT.SINGLE);
    urlText2.setText("http://");
    urlText2.setVisible(false);
    urlText2.addTraverseListener(new TraverseListener() {

        public void keyTraversed(TraverseEvent e) {
            if (e.detail == SWT.TRAVERSE_TAB_PREVIOUS) {
                e.detail = SWT.TRAVERSE_NONE;
                questionMarkButtonDomain.forceFocus();
            }
        }
    });
    urlPath4 = new Label(typeHTMLGroup2, SWT.NONE);
    urlPath5 = new Label(typeHTMLGroup2, SWT.NONE);
    urlPath6 = new Label(typeHTMLGroup2, SWT.NONE);
    urlPath6b = new Label(typeHTMLGroup2, SWT.NONE);
    urlPath6b.setText("path");
    urlPath6b.setFont(URL_PATH_FONT);
    urlPath6b.setVisible(false);
    useHTML4 = new Button(typeHTMLGroup2, SWT.RADIO);
    useHTML4.addSelectionListener(domainListener);
    useHTML4.setSelection(true);
    useHTML5 = new Button(typeHTMLGroup2, SWT.RADIO);
    useHTML5.addSelectionListener(domainListener);
    useHTML6 = new Button(typeHTMLGroup2, SWT.RADIO);
    useHTML6.addSelectionListener(domainListener);
    plusButton2 = makeToolBarButton(typeHTMLGroup2, addGroupListener, questionImages.PLUS_IMAGE);
    minusButton2 = makeToolBarButton(typeHTMLGroup2, minusGroupListener2, questionImages.MINUS_IMAGE);
    questionMarkButtonDepth2 = makeToolBarButton(typeHTMLGroup2, depthListener, questionImages.QUESTION_SHADOW);
    maximumDepthToCrawlLabel2 = new Label(typeHTMLGroup2, SWT.NONE);
    maximumDepthToCrawlLabel2.setText("Maximum Depth To Crawl: ");
    maxDepthCombo2 = new ComboWithEnableFix(typeHTMLGroup2, SWT.DROP_DOWN | SWT.READ_ONLY);
    maxDepthCombo2.add("Unlimited");
    for (int i = 0; i < 100; i++) {
        maxDepthCombo2.add("" + i);
    }
    maxDepthCombo2.select(2);
    maxDepthCombo2.setVisibleItemCount(21);
    maxDepthCombo2.addSelectionListener(comboListener);
    restrictDomainLabel2 = new Label(typeHTMLGroup2, SWT.NONE);
    restrictDomainLabel2.setText("Restrict Domain: ");
    questionMarkButtonDomain2 = makeToolBarButton(typeHTMLGroup2, domainHelpListener, questionImages.QUESTION_SHADOW);
    questionMarkButtonDomain2.setVisible(false);
    questionMarkButtonDomain2.addTraverseListener(new TraverseListener() {

        public void keyTraversed(TraverseEvent e) {
            if (e.detail == SWT.TRAVERSE_TAB_NEXT) {
                if (numOfGroups > 2) {
                    e.detail = SWT.TRAVERSE_NONE;
                    urlText3.forceFocus();
                }
            }
        }
    });
    urlText2.addFocusListener(new TextFocusListener(urlText2, urlPath5, urlPath6, useHTML4, useHTML5, useHTML6, 2));
}
Also used : FormLayout(org.eclipse.swt.layout.FormLayout) Group(org.eclipse.swt.widgets.Group) TraverseEvent(org.eclipse.swt.events.TraverseEvent) TraverseListener(org.eclipse.swt.events.TraverseListener) Button(org.eclipse.swt.widgets.Button) TextWithEnableFix(edu.cmu.cs.hcii.cogtool.util.TextWithEnableFix) Label(org.eclipse.swt.widgets.Label) ComboWithEnableFix(edu.cmu.cs.hcii.cogtool.util.ComboWithEnableFix) Point(org.eclipse.swt.graphics.Point)

Example 5 with TextWithEnableFix

use of edu.cmu.cs.hcii.cogtool.util.TextWithEnableFix in project cogtool by cogtool.

the class WebCrawlImportDialog method buildDialog.

@Override
protected void buildDialog() {
    dialog.setLayout(new FillLayout());
    // 525, 350
    dialog.setMinimumSize(485, 325);
    sc1 = new ScrolledComposite(dialog, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    sc1.setLayout(new FillLayout());
    comp = new Composite(sc1, SWT.NONE);
    comp.setLayout(new FormLayout());
    //different images needed to match the different backgrounds of the dialog box
    questionImage = GraphicsUtil.getImageFromResource("edu/cmu/cs/hcii/cogtool/resources/question_button.jpg");
    questionImageMac = GraphicsUtil.getImageFromResource("edu/cmu/cs/hcii/cogtool/resources/question_button_mac.jpg");
    questionImageMacShadow = GraphicsUtil.getImageFromResource("edu/cmu/cs/hcii/cogtool/resources/question_button_shadow.jpg");
    imagePlus = GraphicsUtil.getImageFromResource("edu/cmu/cs/hcii/cogtool/resources/plus_sign.jpg");
    imagePlusMac = GraphicsUtil.getImageFromResource("edu/cmu/cs/hcii/cogtool/resources/plus_sign_mac.jpg");
    imagePlusMacDisabled = GraphicsUtil.getImageFromResource("edu/cmu/cs/hcii/cogtool/resources/plus_sign_mac_disabled.jpg");
    imageMinus = GraphicsUtil.getImageFromResource("edu/cmu/cs/hcii/cogtool/resources/minus_sign.jpg");
    imageMinusMac = GraphicsUtil.getImageFromResource("edu/cmu/cs/hcii/cogtool/resources/minus_sign_mac.jpg");
    imageMinusMacDisabled = GraphicsUtil.getImageFromResource("edu/cmu/cs/hcii/cogtool/resources/minus_sign_mac_disabled.jpg");
    Label dialogTitle = new Label(comp, SWT.NONE);
    dialogTitle.setText(IMPORT_WEB_CRAWL_TITLE);
    dialogTitle.setFont(TITLE_FONT);
    Label intoDesignLbl = new Label(comp, SWT.NONE);
    intoDesignLbl.setText(INTO_DESIGN_LABEL);
    designCombo = new ComboWithEnableFix(comp, SWT.DROP_DOWN | SWT.READ_ONLY);
    designCombo.add(CREATE_NEW_DESIGN);
    Iterator<Design> designs = project.getDesigns().iterator();
    while (designs.hasNext()) {
        Design design = designs.next();
        designCombo.add(SWTStringUtil.insertEllipsis(design.getName(), StringUtil.EQUAL, designCombo.getFont()));
    // TODO: We'll need to observe Design name changes if
    // it ever becomes possible to change a design name other than
    // through the Project editor -- remember to remove the handler
    // when this dialog box gets disposed!
    }
    designCombo.select(0);
    designCombo.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent evt) {
            String selectedName = designCombo.getText();
            Design design = project.getDesign(selectedName);
            if (design != null) {
                if (sameURLGroup == null) {
                    buildSameURLGroup();
                }
                //insert the name of the selected Design into the Group Label
                int index = SAME_URL_GROUP.indexOf("Design") + 6;
                String titleGroup = SAME_URL_GROUP.substring(0, index);
                titleGroup += " (" + design.getName() + ")";
                titleGroup += SAME_URL_GROUP.substring(index);
                sameURLGroup.setText(titleGroup);
                displaySameURLGroup(true);
            } else if (sameURLGroup != null) {
                displaySameURLGroup(false);
            }
            repaint();
        }
    });
    designCombo.addTraverseListener(new TraverseListener() {

        public void keyTraversed(TraverseEvent evt) {
            if (evt.detail == SWT.TRAVERSE_TAB_NEXT) {
                evt.detail = SWT.TRAVERSE_NONE;
                urlText.forceFocus();
            }
        }
    });
    useSelectionGroup = new Group(comp, SWT.SHADOW_NONE);
    useSelectionGroup.setText(URL_SELECTION_GROUP);
    useSelectionGroup.setLayout(new FormLayout());
    typeHTMLGroup = new Group(useSelectionGroup, SWT.SHADOW_NONE);
    typeHTMLGroup.setText("Starting URL #1");
    typeHTMLGroup.setLayout(new FormLayout());
    urlText = new TextWithEnableFix(typeHTMLGroup, SWT.BORDER | SWT.SINGLE);
    urlText.setText("http://");
    urlText.addTraverseListener(new TraverseListener() {

        public void keyTraversed(TraverseEvent e) {
            if (e.detail == SWT.TRAVERSE_TAB_PREVIOUS) {
                e.detail = SWT.TRAVERSE_NONE;
                designCombo.forceFocus();
            }
        }
    });
    addGroupListener = new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent evt) {
            if (numOfGroups == 1) {
                if (urlText2 == null) {
                    buildSecondGroup();
                }
                displaySecondGroup(true);
                FormData formData = new FormData();
                formData.top = new FormAttachment(typeHTMLGroup, 5, SWT.BOTTOM);
                formData.left = new FormAttachment(typeHTMLGroup, 0, SWT.LEFT);
                formData.right = new FormAttachment(100, -6);
                typeHTMLGroup2.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(typeHTMLGroup2, 5, SWT.TOP);
                formData.left = new FormAttachment(urlText, 0, SWT.LEFT);
                formData.right = new FormAttachment(urlText, 350, SWT.LEFT);
                urlText2.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(urlText2, 1, SWT.TOP);
                formData.left = new FormAttachment(urlText2, 5, SWT.RIGHT);
                plusButton2.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(plusButton2, 5, SWT.TOP);
                formData.left = new FormAttachment(plusButton2, 10, SWT.RIGHT);
                minusButton2.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(urlText2, 5, SWT.BOTTOM);
                formData.left = new FormAttachment(urlText2, 10, SWT.LEFT);
                maximumDepthToCrawlLabel2.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(maximumDepthToCrawlLabel2, 0, SWT.TOP);
                formData.left = new FormAttachment(maximumDepthToCrawlLabel2, 3, SWT.RIGHT);
                questionMarkButtonDepth2.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(maximumDepthToCrawlLabel2, 0, SWT.TOP);
                formData.left = new FormAttachment(questionMarkButtonDepth2, 10, SWT.RIGHT);
                maxDepthCombo2.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(maximumDepthToCrawlLabel2, 15, SWT.BOTTOM);
                formData.left = new FormAttachment(urlText2, 10, SWT.LEFT);
                restrictDomainLabel2.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(restrictDomainLabel2, 0, SWT.TOP);
                formData.left = new FormAttachment(restrictDomainLabel2, 3, SWT.RIGHT);
                questionMarkButtonDomain2.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(restrictDomainLabel2, 10, SWT.BOTTOM);
                formData.left = new FormAttachment(0, 25);
                useHTML4.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(useHTML4, 0, SWT.TOP);
                formData.left = new FormAttachment(useHTML4, 0, SWT.RIGHT);
                urlPath4.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(useHTML4, 8, SWT.BOTTOM);
                formData.left = new FormAttachment(useHTML4, 0, SWT.LEFT);
                useHTML5.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(useHTML5, 0, SWT.TOP);
                formData.left = new FormAttachment(useHTML5, 0, SWT.RIGHT);
                urlPath5.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(useHTML5, 8, SWT.BOTTOM);
                formData.left = new FormAttachment(useHTML5, 0, SWT.LEFT);
                useHTML6.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(useHTML6, 0, SWT.TOP);
                formData.left = new FormAttachment(useHTML6, 0, SWT.RIGHT);
                urlPath6.setLayoutData(formData);
                formData = new FormData();
                formData.left = new FormAttachment(urlPath6, 0, SWT.RIGHT);
                formData.top = new FormAttachment(urlPath6, 0, SWT.TOP);
                urlPath6b.setLayoutData(formData);
                minusButton.setEnabled(true);
                if (OSUtils.MACOSX) {
                    minusButton.getItem(0).setImage(imageMinusMac);
                }
                numOfGroups++;
                repaint();
            } else if (numOfGroups == 2) {
                if (urlText3 == null) {
                    buildThirdGroup();
                }
                displayThirdGroup(true);
                FormData formData = new FormData();
                formData.top = new FormAttachment(typeHTMLGroup2, 5, SWT.BOTTOM);
                formData.left = new FormAttachment(typeHTMLGroup2, 0, SWT.LEFT);
                formData.right = new FormAttachment(100, -6);
                typeHTMLGroup3.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(typeHTMLGroup3, 5, SWT.TOP);
                formData.left = new FormAttachment(urlText2, 0, SWT.LEFT);
                formData.right = new FormAttachment(urlText2, 350, SWT.LEFT);
                urlText3.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(urlText3, 1, SWT.TOP);
                formData.left = new FormAttachment(urlText3, 5, SWT.RIGHT);
                plusButton3.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(plusButton3, 4, SWT.TOP);
                formData.left = new FormAttachment(plusButton3, 10, SWT.RIGHT);
                minusButton3.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(urlText3, 5, SWT.BOTTOM);
                formData.left = new FormAttachment(urlText3, 10, SWT.LEFT);
                maximumDepthToCrawlLabel3.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(maximumDepthToCrawlLabel3, 0, SWT.TOP);
                formData.left = new FormAttachment(maximumDepthToCrawlLabel3, 3, SWT.RIGHT);
                questionMarkButtonDepth3.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(maximumDepthToCrawlLabel3, 0, SWT.TOP);
                formData.left = new FormAttachment(questionMarkButtonDepth3, 10, SWT.RIGHT);
                maxDepthCombo3.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(maximumDepthToCrawlLabel3, 15, SWT.BOTTOM);
                formData.left = new FormAttachment(urlText3, 10, SWT.LEFT);
                restrictDomainLabel3.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(restrictDomainLabel3, 0, SWT.TOP);
                formData.left = new FormAttachment(restrictDomainLabel3, 3, SWT.RIGHT);
                questionMarkButtonDomain3.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(restrictDomainLabel3, 10, SWT.BOTTOM);
                formData.left = new FormAttachment(0, 25);
                useHTML7.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(useHTML7, 0, SWT.TOP);
                formData.left = new FormAttachment(useHTML7, 0, SWT.RIGHT);
                urlPath7.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(useHTML7, 8, SWT.BOTTOM);
                formData.left = new FormAttachment(useHTML7, 0, SWT.LEFT);
                useHTML8.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(useHTML8, 0, SWT.TOP);
                formData.left = new FormAttachment(useHTML8, 0, SWT.RIGHT);
                urlPath8.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(useHTML8, 8, SWT.BOTTOM);
                formData.left = new FormAttachment(useHTML8, 0, SWT.LEFT);
                useHTML9.setLayoutData(formData);
                formData = new FormData();
                formData.top = new FormAttachment(useHTML9, 0, SWT.TOP);
                formData.left = new FormAttachment(useHTML9, 0, SWT.RIGHT);
                urlPath9.setLayoutData(formData);
                formData = new FormData();
                formData.left = new FormAttachment(urlPath9, 0, SWT.RIGHT);
                formData.top = new FormAttachment(urlPath9, 0, SWT.TOP);
                urlPath9b.setLayoutData(formData);
                numOfGroups++;
                repaint();
            }
        }
    };
    minusGroupListener1 = new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent evt) {
            if (numOfGroups > 1) {
                moveGroupTwoToOne();
                minusGroupTwo();
            }
        }
    };
    plusButton = makeToolBarButton(typeHTMLGroup, addGroupListener, questionImages.PLUS_IMAGE);
    minusButton = makeToolBarButton(typeHTMLGroup, minusGroupListener1, questionImages.MINUS_IMAGE);
    minusButton.setEnabled(false);
    if (OSUtils.MACOSX) {
        minusButton.getItem(0).setImage(imageMinusMacDisabled);
    }
    maximumDepthToCrawlLabel = new Label(typeHTMLGroup, SWT.NONE);
    maximumDepthToCrawlLabel.setText("Maximum Depth To Crawl: ");
    depthListener = new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent evt) {
            messageBox("Select 0 to import only the page at the URL you entered.\n" + "Select 1 to import that page and all pages a user could " + "get to by clicking one link.\n" + "Select 2 to import that page and all pages a user could " + "get to by clicking two links.\n" + "Etc.\n" + "Select Unlimited to allow any page accessible from the " + "URL you entered, no matter how many links need to be " + "clicked to get there. However, to avoid importing the " + "entire Web, consider restricting the domain or entering " + "a maximum number of pages to import.", SWT.ICON_INFORMATION);
        }
    };
    questionMarkButtonDepth = makeToolBarButton(typeHTMLGroup, depthListener, questionImages.QUESTION_SHADOW);
    maxDepthCombo = new ComboWithEnableFix(typeHTMLGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
    maxDepthCombo.add("Unlimited");
    for (int i = 0; i < 100; i++) {
        maxDepthCombo.add("" + i);
    }
    maxDepthCombo.select(2);
    maxDepthCombo.setVisibleItemCount(21);
    maximumDepth = 1;
    maximumDepth2 = 1;
    maximumDepth3 = 1;
    comboListener = new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent evt) {
            maximumDepth = Integer.MAX_VALUE;
            if (!maxDepthCombo.getText().equals("Unlimited")) {
                maximumDepth = Integer.parseInt(maxDepthCombo.getText());
            }
            if ((maxDepthCombo2 != null) && (maxDepthCombo2.getVisible())) {
                maximumDepth2 = Integer.MAX_VALUE;
                if (!maxDepthCombo2.getText().equals("Unlimited")) {
                    maximumDepth2 = Integer.parseInt(maxDepthCombo2.getText());
                }
            }
            if ((maxDepthCombo3 != null) && (maxDepthCombo3.getVisible())) {
                maximumDepth3 = Integer.MAX_VALUE;
                if (!maxDepthCombo3.getText().equals("Unlimited")) {
                    maximumDepth3 = Integer.parseInt(maxDepthCombo3.getText());
                }
            }
        }
    };
    maxDepthCombo.addSelectionListener(comboListener);
    restrictDomainLabel = new Label(typeHTMLGroup, SWT.NONE);
    restrictDomainLabel.setText("Restrict Domain: ");
    domainHelpListener = new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent evt) {
            messageBox("Select Unlimited to import any pages that could be reached " + "from the URL entered above. " + "The radio buttons reflect the host name and path name of the URL " + "entered above. Select a more restrictive radio button to only import " + "pages whose URL begins as shown.\n\n" + "It is useful to restrict the domain when you want to evaluate a " + "particular site, but that site points out to other places on the Web.", SWT.ICON_INFORMATION);
        }
    };
    questionMarkButtonDomain = makeToolBarButton(typeHTMLGroup, domainHelpListener, questionImages.QUESTION_SHADOW);
    questionMarkButtonDomain.addTraverseListener(new TraverseListener() {

        public void keyTraversed(TraverseEvent e) {
            if (e.detail == SWT.TRAVERSE_TAB_NEXT) {
                if (numOfGroups > 1) {
                    e.detail = SWT.TRAVERSE_NONE;
                    urlText2.forceFocus();
                }
            }
        }
    });
    minusGroupListener2 = new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent evt) {
            minusGroupTwo();
        }
    };
    minusGroupListener3 = new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent evt) {
            numOfGroups--;
            displayThirdGroup(false);
            repaint();
        }
    };
    useHTML1 = new Button(typeHTMLGroup, SWT.RADIO);
    useHTML1.setSelection(true);
    domainListener = new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent evt) {
            if (useHTML1.getSelection()) {
                restrictedDomain = "Unrestricted ";
            } else if (useHTML2.getSelection()) {
                restrictedDomain = urlPath2.getText();
            } else {
                restrictedDomain = urlPath3.getText();
            }
            if ((useHTML4 != null) && (useHTML4.getSelection())) {
                restrictedDomain2 = "Unrestricted ";
            } else if ((useHTML5 != null) && (useHTML5.getSelection())) {
                restrictedDomain2 = urlPath5.getText();
            } else if (useHTML6 != null) {
                restrictedDomain2 = urlPath6.getText();
            }
            if ((useHTML7 != null) && (useHTML7.getSelection())) {
                restrictedDomain3 = "Unrestricted ";
            } else if ((useHTML8 != null) && (useHTML8.getSelection())) {
                restrictedDomain3 = urlPath8.getText();
            } else if (useHTML9 != null) {
                restrictedDomain3 = urlPath9.getText();
            }
        }
    };
    useHTML1.addSelectionListener(domainListener);
    useHTML1.setSelection(true);
    useHTML2 = new Button(typeHTMLGroup, SWT.RADIO);
    useHTML2.addSelectionListener(domainListener);
    useHTML2.setEnabled(false);
    useHTML3 = new Button(typeHTMLGroup, SWT.RADIO);
    useHTML3.addSelectionListener(domainListener);
    useHTML3.setEnabled(false);
    urlPath1 = new Label(typeHTMLGroup, SWT.NONE);
    urlPath1.setText("Unrestricted");
    urlPath2 = new Label(typeHTMLGroup, SWT.NONE);
    urlPath2.setText("http://www.host_name/");
    urlPath2.setFont(URL_PATH_FONT);
    urlPath3 = new Label(typeHTMLGroup, SWT.NONE);
    urlPath3.setText("http://www.host_name/path");
    urlPath3.setFont(URL_PATH_FONT);
    urlPath3b = new Label(typeHTMLGroup, SWT.NONE);
    urlPath3b.setText("path");
    urlPath3b.setFont(URL_PATH_FONT);
    urlPath3b.setVisible(false);
    urlText.addFocusListener(new TextFocusListener(urlText, urlPath2, urlPath3, useHTML1, useHTML2, useHTML3, 1));
    capturePageImagesOption = new Button(comp, SWT.CHECK);
    capturePageImagesOption.setText(CAPTURE_IMAGES_LABEL);
    capturePageImagesOption.setSelection(capturePageImages);
    SelectionListener imageListener = new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent evt) {
            messageBox("Check this box to set a picture of each page as the background of " + "its frame. The picture will be the size of the browser width and " + "height set below, so it will not be of the entire page if the user " + "would have to scroll to see it all.\n\n" + "It is useful to capture pictures to convey the look of the site in " + "presentations, but CogTool predictions will not be affected by " + "having a picture or not. Having pictures increases the size of " + "CogTool project files and having many of them may slow down interaction.", SWT.ICON_INFORMATION);
        }
    };
    questionMarkButtonCaptureImage = makeToolBarButton(comp, imageListener, questionImages.QUESTION_IMAGE);
    maxPagesToImport = new IntegerEntry(comp, SWT.BORDER);
    maxPagesToImport.setAllowNegative(false);
    maxPagesToImport.setText(USE_SYSTEM_DEFAULT_VALUE);
    maxPagesToImport.setText("500");
    maxPagesToImport.addFocusListener(new ManageSystemDefault(maxPagesToImport, 500, Integer.MAX_VALUE));
    maxPagesLabel = new Label(comp, SWT.NONE);
    maxPagesLabel.setText(MAX_PAGES_LABEL);
    SelectionListener pagesListener = new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent evt) {
            messageBox("Use this field to limit the number of pages imported into a design. " + "It is especially important to use a reasonable maximum when you have " + "not restricted the domain and have specified a maximum depth greater " + "than 2. " + "The default, 500 pages, is sufficient for most projects, but leave " + "the field empty to have no restriction at all", SWT.ICON_INFORMATION);
        }
    };
    questionMarkButtonMaxPages = makeToolBarButton(comp, pagesListener, questionImages.QUESTION_IMAGE);
    Label browserWidthLbl = new Label(comp, SWT.NONE);
    browserWidthLbl.setText(BROWSER_WIDTH_LABEL);
    Label browserHeightLbl = new Label(comp, SWT.NONE);
    browserHeightLbl.setText(BROWSER_HEIGHT_LABEL);
    browserWidthEntry = new IntegerEntry(comp, SWT.BORDER);
    browserWidthEntry.setAllowNegative(false);
    browserWidthEntry.setText(USE_SYSTEM_DEFAULT_VALUE);
    browserWidthEntry.setText("900");
    browserWidthEntry.addFocusListener(new ManageSystemDefault(browserWidthEntry, 900, 2100));
    browserHeightEntry = new IntegerEntry(comp, SWT.BORDER);
    browserHeightEntry.setAllowNegative(false);
    browserHeightEntry.setText(USE_SYSTEM_DEFAULT_VALUE);
    browserHeightEntry.setText("600");
    browserHeightEntry.addFocusListener(new ManageSystemDefault(browserHeightEntry, 600, 1200));
    okButton = new Button(comp, SWT.PUSH);
    okButton.addMouseListener(new MouseAdapter() {

        @Override
        public void mouseUp(MouseEvent evt) {
            wasEditing = null;
        }
    });
    okButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent evt) {
            Text textBox = null;
            String text = null;
            String errorText = "";
            int count = 1;
            boolean proceed = false;
            isValidURL = false;
            isValidURL2 = false;
            isValidURL3 = false;
            HashMap<Integer, String> errorMap = new HashMap<Integer, String>();
            errorMap.put(SITE_VALID, "");
            errorMap.put(SITE_INVALID, "The given URL for URL #");
            errorMap.put(SITE_BAD_EXTENSION, "The given extension for URL # ");
            errorMap.put(SITE_EXCEPTION, "");
            /*
				 * The while loop checks all three of the given URLs, the loop
				 * breaks if the user has not entered up to 3 urls
				 */
            boolean exception = false;
            while (count < 4) {
                textBox = null;
                proceed = false;
                if (count == 1) {
                    /*
						 * Trim is needed to ensure all leading and trailing
						 * spaces are eliminated. checkProtocol(text, boolean)
						 * checks to make sure that there is valid protocol
						 */
                    textBox = urlText;
                    text = urlText.getText().trim();
                    proceed = checkProtocol(text, true);
                } else if (count == 2) {
                    if (numOfGroups > 1) {
                        textBox = urlText2;
                        text = textBox.getText().trim();
                        proceed = checkProtocol(text, true);
                    } else {
                        break;
                    }
                } else if (count == 3) {
                    if (numOfGroups > 2) {
                        textBox = urlText3;
                        text = textBox.getText().trim();
                        proceed = checkProtocol(text, true);
                    } else {
                        break;
                    }
                }
                /* There was not a valid protocol at the
					 * first try so now append http:// at the beginning so there
					 * will be a valid protocol. For example, if the user enters
					 * www.cmu.edu, http:// is appended here because a protocol
					 * is needed to check to see if the url is valid.
					 */
                if (!proceed) {
                    try {
                        proceed = checkProtocol(URLCrawlEntry.ensureAbsolute(text), true);
                        if (proceed) {
                            textBox.setText("http://" + text);
                        }
                    } catch (Exception ex) {
                    }
                }
                if (proceed) {
                    String givenURL = textBox.getText().trim();
                    if ("".equals(givenURL)) {
                        textBox.setText(USE_SYSTEM_DEFAULT_VALUE);
                        textBox.setForeground(DISABLED_TEXT_COLOR);
                    }
                    String st = givenURL.substring(givenURL.indexOf("//") + 2);
                    if (!givenURL.startsWith("file:")) {
                        int exist = exists(givenURL);
                        for (int pow = 3; pow >= 0; pow--) {
                            int getError = (int) Math.pow(2, pow);
                            if (exist >= getError) {
                                errorText += errorMap.get(getError);
                                if (getError == SITE_VALID) {
                                    validURLS(count);
                                } else if (getError == SITE_INVALID) {
                                    errorText += count + " is not a valid URL.\n";
                                } else if (getError == SITE_BAD_EXTENSION) {
                                    errorText += count + " is not valid.\n";
                                } else if (getError == SITE_EXCEPTION) {
                                    exception = true;
                                }
                                exist -= getError;
                            }
                        }
                    /*
							 * if(exist == SITE_VALID){
							 * System.out.println("it exists");
							 * validURLS(count); }
							 *
							 * else if(exist == SITE_INVALID){ errorText+=
							 * "The given URL caught for URL #" + count+
							 * " is not a valid URL."; } else
							 * if(exist==SITE_EXCEPTION) { errorText+=
							 * "There may be no internet connectivity at the moment."
							 * ; }
							 */
                    }
                } else {
                    errorText += "The given URL for URL #" + count + " must start with either \"http://\", \"https://\", or \"file://\".\n";
                }
                count++;
            }
            if (exception) {
                errorText += "There may be no internet connectivity at the moment.\n";
            }
            if (!errorText.equals("")) {
                boolean tryAgain = messageBox(errorText, SWT.ICON_ERROR);
                if (tryAgain) {
                    if (!isValidURL) {
                        urlText.forceFocus();
                    } else if (!isValidURL2) {
                        urlText2.forceFocus();
                    } else {
                        urlText3.forceFocus();
                    }
                }
            } else {
                saveSettings();
                userResponse = OK;
                dialog.close();
            }
        }
    });
    cancelButton = new Button(comp, SWT.PUSH);
    cancelButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent evt) {
            userResponse = CANCEL;
            dialog.close();
        }
    });
    if (buttonFont != null) {
        okButton.setFont(buttonFont);
        cancelButton.setFont(buttonFont);
    }
    okButton.setText(L10N.get("B.OK", "OK"));
    cancelButton.setText(L10N.get("B.CANCEL", "Cancel"));
    dialog.setDefaultButton(okButton);
    FormData formData = new FormData();
    formData.left = new FormAttachment(0, 5);
    formData.top = new FormAttachment(0, 5);
    dialogTitle.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(dialogTitle, 20, SWT.BOTTOM);
    formData.left = new FormAttachment(0, 100);
    intoDesignLbl.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(intoDesignLbl, 0, SWT.CENTER);
    formData.left = new FormAttachment(intoDesignLbl, 5, SWT.RIGHT);
    designCombo.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(intoDesignLbl, 13, SWT.BOTTOM);
    formData.left = new FormAttachment(0, 6);
    formData.right = new FormAttachment(100, -6);
    useSelectionGroup.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(0, 3);
    formData.left = new FormAttachment(0, 3);
    formData.right = new FormAttachment(100, -3);
    typeHTMLGroup.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(typeHTMLGroup, 10, SWT.BOTTOM);
    formData.left = new FormAttachment(typeHTMLGroup, 0, SWT.LEFT);
    formData.right = new FormAttachment(typeHTMLGroup, 350, SWT.LEFT);
    urlText.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(urlText, 1, SWT.TOP);
    formData.left = new FormAttachment(urlText, 5, SWT.RIGHT);
    plusButton.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(plusButton, 5, SWT.TOP);
    formData.left = new FormAttachment(plusButton, 10, SWT.RIGHT);
    minusButton.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(urlText, 5, SWT.BOTTOM);
    formData.left = new FormAttachment(urlText, 10, SWT.LEFT);
    maximumDepthToCrawlLabel.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(maximumDepthToCrawlLabel, 0, SWT.TOP);
    formData.left = new FormAttachment(maximumDepthToCrawlLabel, 3, SWT.RIGHT);
    questionMarkButtonDepth.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(maximumDepthToCrawlLabel, 0, SWT.TOP);
    formData.left = new FormAttachment(questionMarkButtonDepth, 10, SWT.RIGHT);
    maxDepthCombo.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(maximumDepthToCrawlLabel, 15, SWT.BOTTOM);
    formData.left = new FormAttachment(urlText, 10, SWT.LEFT);
    restrictDomainLabel.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(restrictDomainLabel, 0, SWT.TOP);
    formData.left = new FormAttachment(restrictDomainLabel, 3, SWT.RIGHT);
    questionMarkButtonDomain.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(restrictDomainLabel, 10, SWT.BOTTOM);
    formData.left = new FormAttachment(0, 25);
    useHTML1.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(useHTML1, 0, SWT.TOP);
    formData.left = new FormAttachment(useHTML1, 0, SWT.RIGHT);
    urlPath1.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(useHTML1, 8, SWT.BOTTOM);
    formData.left = new FormAttachment(useHTML1, 0, SWT.LEFT);
    useHTML2.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(useHTML2, 0, SWT.TOP);
    formData.left = new FormAttachment(useHTML2, 0, SWT.RIGHT);
    urlPath2.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(useHTML2, 8, SWT.BOTTOM);
    formData.left = new FormAttachment(useHTML2, 0, SWT.LEFT);
    useHTML3.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(useHTML3, 0, SWT.TOP);
    formData.left = new FormAttachment(useHTML3, 0, SWT.RIGHT);
    urlPath3.setLayoutData(formData);
    formData = new FormData();
    formData.left = new FormAttachment(urlPath3, 0, SWT.RIGHT);
    formData.top = new FormAttachment(urlPath3, 0, SWT.TOP);
    urlPath3b.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(useSelectionGroup, 7, SWT.BOTTOM);
    formData.left = new FormAttachment(maxPagesLabel, 0, SWT.LEFT);
    capturePageImagesOption.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(capturePageImagesOption, 0, SWT.TOP);
    formData.left = new FormAttachment(capturePageImagesOption, 3, SWT.RIGHT);
    questionMarkButtonCaptureImage.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(capturePageImagesOption, 15, SWT.BOTTOM);
    formData.right = new FormAttachment(intoDesignLbl, 0, SWT.RIGHT);
    maxPagesLabel.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(maxPagesLabel, 0, SWT.CENTER);
    formData.left = new FormAttachment(maxPagesLabel, 5, SWT.RIGHT);
    formData.right = new FormAttachment(maxPagesLabel, 140, SWT.RIGHT);
    maxPagesToImport.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(maxPagesToImport, 0, SWT.TOP);
    formData.left = new FormAttachment(maxPagesToImport, 3, SWT.RIGHT);
    questionMarkButtonMaxPages.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(maxPagesLabel, 11, SWT.BOTTOM);
    formData.right = new FormAttachment(maxPagesLabel, 0, SWT.RIGHT);
    browserWidthLbl.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(browserWidthLbl, 0, SWT.CENTER);
    formData.left = new FormAttachment(browserWidthLbl, 5, SWT.RIGHT);
    formData.right = new FormAttachment(browserWidthLbl, 140, SWT.RIGHT);
    browserWidthEntry.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(browserWidthLbl, 11, SWT.BOTTOM);
    formData.right = new FormAttachment(browserWidthLbl, 0, SWT.RIGHT);
    browserHeightLbl.setLayoutData(formData);
    formData = new FormData();
    formData.top = new FormAttachment(browserHeightLbl, 0, SWT.CENTER);
    formData.left = new FormAttachment(browserHeightLbl, 5, SWT.RIGHT);
    formData.right = new FormAttachment(browserHeightLbl, 140, SWT.RIGHT);
    browserHeightEntry.setLayoutData(formData);
    Composite spacer = new Composite(comp, SWT.NONE);
    formData = new FormData();
    formData.top = new FormAttachment(browserHeightEntry, 13, SWT.BOTTOM);
    formData.bottom = new FormAttachment(okButton, 0, SWT.TOP);
    spacer.setLayoutData(formData);
    formData = new FormData();
    formData.right = new FormAttachment(100, -13);
    formData.bottom = new FormAttachment(100, -13);
    formData.left = new FormAttachment(100, -95);
    formData.top = new FormAttachment(browserHeightEntry, 10, SWT.BOTTOM);
    Button other;
    if (OSUtils.MACOSX) {
        okButton.setLayoutData(formData);
        other = okButton;
    } else {
        cancelButton.setLayoutData(formData);
        other = cancelButton;
    }
    formData = new FormData();
    formData.right = new FormAttachment(other, -13, SWT.LEFT);
    formData.bottom = new FormAttachment(100, -13);
    formData.left = new FormAttachment(other, -95, SWT.LEFT);
    formData.top = new FormAttachment(browserHeightEntry, 10, SWT.BOTTOM);
    if (OSUtils.MACOSX) {
        cancelButton.setLayoutData(formData);
    } else {
        okButton.setLayoutData(formData);
    }
    sc1.setContent(comp);
    sc1.layout();
    // dialog.pack();
    repaint();
}
Also used : Group(org.eclipse.swt.widgets.Group) TraverseEvent(org.eclipse.swt.events.TraverseEvent) HashMap(java.util.HashMap) Label(org.eclipse.swt.widgets.Label) Design(edu.cmu.cs.hcii.cogtool.model.Design) Button(org.eclipse.swt.widgets.Button) TextWithEnableFix(edu.cmu.cs.hcii.cogtool.util.TextWithEnableFix) SelectionEvent(org.eclipse.swt.events.SelectionEvent) ScrolledComposite(org.eclipse.swt.custom.ScrolledComposite) ComboWithEnableFix(edu.cmu.cs.hcii.cogtool.util.ComboWithEnableFix) FormAttachment(org.eclipse.swt.layout.FormAttachment) IntegerEntry(edu.cmu.cs.hcii.cogtool.util.IntegerEntry) FormLayout(org.eclipse.swt.layout.FormLayout) FormData(org.eclipse.swt.layout.FormData) MouseEvent(org.eclipse.swt.events.MouseEvent) Composite(org.eclipse.swt.widgets.Composite) ScrolledComposite(org.eclipse.swt.custom.ScrolledComposite) TraverseListener(org.eclipse.swt.events.TraverseListener) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) MouseAdapter(org.eclipse.swt.events.MouseAdapter) Text(org.eclipse.swt.widgets.Text) FillLayout(org.eclipse.swt.layout.FillLayout) Point(org.eclipse.swt.graphics.Point) MalformedURLException(java.net.MalformedURLException) IOException(java.io.IOException) UnknownHostException(java.net.UnknownHostException) SelectionListener(org.eclipse.swt.events.SelectionListener)

Aggregations

TextWithEnableFix (edu.cmu.cs.hcii.cogtool.util.TextWithEnableFix)5 ComboWithEnableFix (edu.cmu.cs.hcii.cogtool.util.ComboWithEnableFix)4 Button (org.eclipse.swt.widgets.Button)4 Label (org.eclipse.swt.widgets.Label)4 TraverseEvent (org.eclipse.swt.events.TraverseEvent)3 TraverseListener (org.eclipse.swt.events.TraverseListener)3 Point (org.eclipse.swt.graphics.Point)3 FormLayout (org.eclipse.swt.layout.FormLayout)3 Group (org.eclipse.swt.widgets.Group)3 DisplayLabel (edu.cmu.cs.hcii.cogtool.util.DisplayLabel)2 SelectionEvent (org.eclipse.swt.events.SelectionEvent)2 Design (edu.cmu.cs.hcii.cogtool.model.Design)1 Frame (edu.cmu.cs.hcii.cogtool.model.Frame)1 RadioButton (edu.cmu.cs.hcii.cogtool.model.RadioButton)1 WidgetType (edu.cmu.cs.hcii.cogtool.model.WidgetType)1 DesignEditorUI (edu.cmu.cs.hcii.cogtool.ui.DesignEditorUI)1 FrameEditorUI (edu.cmu.cs.hcii.cogtool.ui.FrameEditorUI)1 IntegerEntry (edu.cmu.cs.hcii.cogtool.util.IntegerEntry)1 ListenerIdentifierMap (edu.cmu.cs.hcii.cogtool.util.ListenerIdentifierMap)1 IOException (java.io.IOException)1