Design the Web with Edge Animate | ADC Presents | Adobe TV

Sarah Hunt, product manager, shows you powerful new features in Adobe Edge Animate, including CSS filters, gradients, and a visual UI for web fonts.
http://adobe.ly/WL4JoW

I know English relatively well but it isn't my native language. Sarah Hunt is nice girl, and her knowledge is great I hope but when she speaks I can only understand a few words. Another your speaker Paul Trani speaks so fast as well but every word one can understand.

Similar Messages

  • I am running Lightroom 6 in conjunction with 64 bit Photoshop CS6. I need to install Camera Raw 9 plus other relevan updates for the Adobe Design and Web Premium CS6 package. Running Adobe Application manager finds the relevant updates but won't download

    I am running Lightroom 6 in conjunction with 64 bit Photoshop CS6. I need to install Camera Raw 9 plus other relevan updates for the Adobe Design and Web Premium CS6 package. Running Adobe Application manager finds the relevant updates but won't download / install them. Clicking the update button results in an error message "Application Manager has stopped working". This is a windows system running 64 bit Windows 7

    update manually:
    pre cc updates:  http://www.adobe.com/downloads/updates/
    cc updates:  http://prodesigntools.com/adobe-cc-updates-direct-links-windows.html
    cc 2014 updates:  win (http://prodesigntools.com/adobe-cc-2014-updates-links-windows.html) / mac (http://prodesigntools.com/adobe-cc-2014-updates-links-mac.html)

  • Typekit font not displaying in iPad DPS app (created by Indesign) in Web Content (Edge Animate)

    I think I have tried every permutation to make this work, but I am probably missing something. 
    I am creating a single DPS iPad app with InDesign, and I am using a Typekit font throughout.  So far so good. 
    I have created an Edge Animate project using the same Typekit font.  In preview mode, it is fine as well. 
    However, when I place the Edge Animate project into a frame in InDesign and use the Web Content Folio Overlay (regardless of whether I use the .oam file or link directly .html output published by Animate), the Typekit font will not show up in the Edge Animate portion of the DPS app and will instead use a fallback font. 
    Can anyone suggest a way to make Typekit fonts in Edge Animate work when embedded in a DPS app?  (For what it's worth, I have the same problem when embedding html output from Tumult Hype, so it seems unlikely that this is an issue with Edge Animate at all and probably has more to do with something in the way the DPS app is dealing with embedded html content.)
    Thanks in advance for any assistance. 

    Believe me, I understand the pain. Unfortunately there's only so much we can do at Adobe as the EULAs provided by the foundries for their respective fonts are very explicit in where you can and can not use them.
    For example, packaging an InDeisgn file and sending it off for pre-press with the fonts included in the package is in direct violation of most font EULAs. In a studio environment, you're only allowed to have a font installed on n number of computers and need to have multiple licenses to accomidate >n number of seats. When creating a PDF, fonts explicitly have to be subsetted before embedding into the PDF.
    That's just to paint a picture of the fragile state of using fonts in print, usage in digital mediums is just another bee in your bonnet when it comes to considering when you can and cannot use a font.
    Services like Typekit Desktop are trying to make this easier by removing a lot of those pain and condierations for you, by blanketing all these fonts under a single license you're free to use for print and the web. There's still some gotchyas, but we're aiming to greatly reduce how much you have to think about it where we can.
    So yes there's a bit of education when it comes to mixing embedded HTML content/fonts with DPS, but at least there's options
    Sarah

  • Buttons created with edge animate are not working on android and windows devices

    Hello, I created a moble version of my website with edge animate (3.0).
    The menue-bars/buttons work fine with iphone and ipad, but not with android and windows devices.
    http://www.design-werk.org/buchgestaltung_kunstbuch.html
    Does anyone have an idea and can help me with that?
    Thank you guys,
    Wolfram

    Hello, I created a moble version of my website with edge animate (3.0).
    The menue-bars/buttons work fine with iphone and ipad, but not with android and windows devices.
    http://www.design-werk.org/buchgestaltung_kunstbuch.html
    Does anyone have an idea and can help me with that?
    Thank you guys,
    Wolfram

  • How do you remove a symbol from the stage in Edge animate?

    Hello-
    I'm wondering how to remove a symbol from the stage in Edge Animate so you can jump to another place in the timeline.  In Flash, the symbol was only on the stage for the amount of frames you indicated.  Not sure how it works here.
    For example, I have 2 buttons on my first screen with some text that animates in.  I want the button click to take the user to another section in the timeline or (basically another scene, like in Flash)  that contains different content.  If I change the visibility the buttons are still there and will ( I assume) create problems when other elements are placed on top. 
    Or is the only way with code.  If that is the case what would that code be?
    I would appreciate any help.
    Thank you!

    What I usually do, is, once you have everything set up in the scene you are done with. highlight it all
    right click
    group elements in DIV
    Now all those items act as 1 group and then you give it a properties name, much like a symbol.
    THEN you can refer to that scene name and move it anywhere or hide it and slide in another scene that has the content for that next scene.
    basically you take all the elements that make up 1 scene, gruop it up, name it, and then in the code for the button say something like:
    on click:
    scenename.play(framenumber);
    that will then animate that scene according to any animation you gave it, such as moving to the left, off stage. while moving scene 2 that you create into the stage.
    or just have something like this hide it
    sym.$("scenename").hide();
    sym.$("scene2name").show();
    but if you do that, make sure in your CompositionReady code you hide all scenes EXCEPT the 1st one, so the user doesnt see them all instanatly anyway.

  • Update only a part of a project with Edge Animate CC 2014.1.1 PROBLEM

    WIN 8.1
    Edge Animate CC 2014.1.1
    Firefox 35.0
    The Problem started after Update to Edge Animate CC 2014.1.1
    I want to update text which is an Edge Animate file
    The original Project was programmed with Edge Animate 1.0(not CC)
    After I made the changes and saved the file I get a “updatedtext_upgraded” folder that contains the new files.
    I am not sure what to do with that folder:
    A) Do I have to exchange the data from the Folder ”updatedtext_upgraded”?
    or
    B) Do I have to put the whole project into the folder “updatedtext1_upgraded”?
    or
    C) Do I have to develop the whole Project new with AN CC 2014.1.1?
    Thank you

    I am currently having issues opening older compositions in 2014.1.1
    I have never used an earlier version but have a large project and I am using EA for the first time.
    Before I started it I gathered many tutorials and downloaded examples of the features I would need in my new project only to find that they all were created in earlier versions of EA and when I publish from my version they are not working properly in a wide variety of ways.
    It seems there are few tutorials built for the very latest version - things like custom scrollbars for text and loading and unloading composiitons - see huge lists online of things Adobe have apparently 'fixed' with this version but it feels like other things are broken.
    I am now desperately searching for information on what exactly is deprecated and what I need to do to get files working correctly.
    Very worried indeed.

  • Working with Edge Animate and Muse CC

    Hi,
    I have just published a website to the Business Catalyst server via Muse for testing (link below) and noticed that the Edge animation i have included in the website doesnt work in Internet Explorer 8 as it doesnt support HTML5, do you have a work around for this and if so how do i implement it?
    Look forward to hearing from you.
    http://hooperdesign.businesscatalyst.com/

    i'm from orgin an php wordpress developer and im trying to make an muse site now to...
    and it is a pain in the *** xD.
    no control over css or html, so im starting to regret this
    but you can just render it as web in edge animate wit hthe iframe checked. than place in in muse by object > insent html and insent is as iframe.
    <iframe src="/folder/index.html"></iframe>
    warning, you can not see anything of iframe in preview mode, you have to completely render is as html and manualy open it to see the change....
    i really like edge animate but im starting to hate muse

  • Can we design the scenario with Business service

    Hi,
    I have IDOCXIFile Scenario
    Can we design the scenario with Business service for SAP R/3 and As well as for File system also????
    I dont have details abt the SAP R/3 system to create the Tech system in SLD
    Regards
    Suman

    Hello Suman,
    Go through this Blog..
    /people/prateek.shah/blog/2005/06/08/introduction-to-idoc-xi-file-scenario-and-complete-walk-through-for-starters
    These are the steps which u have to do
    STEPS IN DESIGN
    1. Import idoc from the SAP System (SAP02) through imported objects.
    2. Create Data Type, Message Type, Message Interface for the Outbound File.
    3. Create Message Mapping with file Message and idoc (Matmas04)
    5.Create Interface mapping between File Interface and the idoc.
    Steps to be followed in Creation of Technical and Business System
    Technical System
    In SLD, click on technical landscape->New Technical System->WebAS ABAP.
    Business System.
    1.Goto Business Landscape->New Business System->Name the business system.
    2. Choose the technical system that needs to be attached->WebAS ABAP->Technical System Name.
    Preconfiguration steps for transfer of data to IDOCS
    1.Create a RFC Destination in SM59 of XI Server of type.
    2.In transaction IDX1 ,create a port for the client of XI server.
    3. The port has to be displayed in the idx2 transaction and we should be able to view the idoc’s which we imported through integration repository.
    Steps in Configuration
    1. Goto service without party, right click->Assign a business system.
    2. Choose the business system to be added.
    3. Create a File Sender Service with communication channel for the same.
    4. Create an idoc receiver channel under the business system.
    7. The Idoc type( which data is to be written) is mentioned as inbound parameter.
    8. Mention the logical Name in the Service->Adapter Specific Parameters of both the File Sender Service as well as the business system.
    9. Make the Sender Agreement for theFile Sender with communication channel.
    10.Create the Receiver Determination and Interface Determination for the business system.
    11.Create the Receiver Agreement for the Business system.
    Step for Configuration fo IDOC in R/3
    SM59-rfc destination
    IDX1-port
    IDX2-load metadata
    we05-IDoc status records
    BD54-Create Partner Number
    We20-Create Partner Profile
    WE19-Testing IDoc Processing
    Do these configurations in R/3 and in XI...
    SAP XI
    1) RFC Destination (SM59)
    a) Choose create.
    b) Specify the name of the RFC destination
    c) Select connection type as 3 and save
    d) In the technical settings tab enter the details SAP SID/URL and system number#.
    e) Enter the Gateway host as same details above SID/URL.
    f) Gateway service is 3300+system number#.
    g) In the Logon /Security tab, enter the client user & Password details of Destination system.
    h) Test the connection and remote logon.
    2) Create Port (IDX1)
    a) Select create new button
    b) Enter the port name as SAP+SID (The starting char should be SAP)
    c) Enter the destination client.
    d) Enter the RFC Destination created in SAP R/3 towards other system.
    e) Save
    3) Load Meta Data for IDOC (IDX2)
    a) Create new
    b) IDOC Message Type
    c) Enter port created in IDX1.
    SAP R/3
    1) RFC Destination (SM59)
    a) Choose create.
    b) Specify the name of the RFC destination
    c) Select connection type as 3 and save
    d) In the technical settings tab enter the details SAP SID/URL and system number#.
    e) Enter the Gateway host as same details above SID/URL.
    f) Gateway service is 3300+system number#.
    g) In the Logon /Security tab, enter the client user & Password details of Destination system.
    h) Test the connection and remote logon.
    2) Create Port (We21)
    a) First Select Transactional RFC and then click create button
    b) Enter the destination port name as SAP+SID (The starting char should be SAP)
    c) Enter the destination client.
    d) Enter the RFC Destination created in SAP R/3 towards other system.
    e) Save
    3) Create Partner Profile (WE20)
    a) Create New
    b) Create the Partner no. name as same the logical system name of the destination system.
    c) Select Partner type LS
    d) Enter details for Type: US/USER, Agent, and Lang.
    e) Click on the + button to select the message type.
    f) Select Partner no. and LS which ever create above.
    g) Select Message type
    h) Select Process code related to the Message type.
    I) save.
    Reward Points if it is useful..
    Thanks,
    Satya Kumar

  • Glitches and Load Speed Issues with Edge Animate Site

    I recently created a website at www.goshowpro.com and am having some glitches and load issues occur and would appreciate any help or insight into the matter. The site loads relatively quickly on my computer and my hosting servers technical support system but when I show it to my client it takes anywhere from 15-20 seconds, even after I have cleared the cache and cookies. All my image files are 'gifs' as to alleviate memory usage and I don't know what else to do that I haven't tried yet. Additionally, when you go to the services page from the about page, the light beams don't connect to the lighting fixtures and the text is placed differently than what I initially had in Adobe Edge Animate before I published the files. And the facebook link doesn't go to facebook but to www.goshowpro.com/facebook.... (ie I get a 404 error) even though in the program I have the link set as www.facebook.com....  I don't know what else to do besides what I have been doing and would very much appreciate any insight into these issues.
    I should also mention that I used more html files than I initially planned due to lack of support on creating complete animation functionality with Edge Animate. I would like to have everything on one page but I don't know if that would be possible with the current version of Adobe Edge Animate (1.0.1.204.22434). Thank you again for your help.
    Mike

    Hi, Mike-
    Have you tried profiling?  You can use Firefox's Firebug or Google Chrome Inspector to see what's taking so long to download.
    http://blogs.adobe.com/edge/2012/01/04/why-cant-it-just-work/
    -Elaine

  • How to zoom and pan with Edge animate?

    Hi,
    I have been trying to make a project with Edge Animate, it is all about an image, but I want to be able to zoom and pan the image. Can you please send me an example if there is any around? or Can you explain me how to zoom and pan with Edge Animate?
    Thanks,
    Guasch

    I am having this same issue! I am searching through forums on what tools to use to create a good zoom and pan on an image that contains hyperlinks an other things, developed in Adobe Edge Animate.
    So far, here are some solutions I have come across:
    http://craigfrancis.github.io/zoomify/
    http://zynga.github.io/scroller/demo/dom.html
    These two seem to be the closest solutions to what I'm looking for. Now I just have to integrate the javascript into my adobe ege animate composition. Hopefully that won't be too hard. Are there any suggestions from the adobe community on how to do this?

  • JS error on export with Edge Animate?

    Ive just started messing around with Edge Animate and Muse.  The first time or two that I exported it worked.  But I'm not sure what I did but now everytime I export I ge tthis:
    http://i.imgur.com/gtqQDiH.png
    It runs FINE in the preview, but when I export I get this error everytime.
    Even with a new site and a new animation.

    Hi,
    Great. I must tell you that the most common cause of JavaScript errors on a Muse page is .js files missing from the server or .js files, or other files on the server, not all being from the save version of Muse. If you're using an external FTP client, you must re-upload all files and folders whenever a site is exported using an updated version of Muse (since the code generated by Muse changes from release to release to improve page load performance, support new features, address new browser versions and/or devices, etc., etc.).
    The second most common cause of JavaScript errors on a Muse page is buggy embed code and/or embed code that conflicts with the JavaScript used by Muse.
    Regards,
    Rohit Nair

  • Is snippet master compatible with edge animate? Or another easy to use cms?

    I am looking for an easy way for clients to update their website text, and am looking at making a whole site with edge animate.
    Any ideas? From anyone who has tried this?
    Thank you.

    Hi there,
    Thanks for your suggestions! We're looking at ways to make the timeline more flexible as far as nesting and/or hiding elements, so hopefully these types of improvements will come as Animate continues to grow. Just wanted to quickly pop in to address a few of your bullet points - hopefully, other Animate users can answer regarding whether they use Animate for software simulation.
    Your first two points (I think) can be at least somewhat addressed by using symbols. Each symbol has its own timeline which can contain many elements, but it will appear as a single element in the main (Stage) timeline.
    Regarding video, there's currently only one HTML5 browser that natively supports video with alpha transparency: Chrome, using video encoded to the webm format. See here for more info: Alpha transparency in Chrome video - HTML5Rocks Updates
    Once other browsers start incorporating native support for video with transparency, this could be pretty cool. But as of now, native browser support is still quite limited.
    Thanks,
    Joe

  • How can I capture a snapshot/screenshot from my game made with edge animate

    I am wondering if its possible to put a symbol button inside edge animate once the user clicks on it it downloads a screenshot from the current screen the user is on because it's a required inside the project I have made and the client is really asking for this advantage and I made the whole game with edge animate so please if anyone has any solutions to tell me about them..Thanks

    Hey, HeavenChains-
    We don't use canvas natively, so the html5 canvas screenshot may not work for you.  I did a quick websearch and there are libraries out there that may take a screenshot for you, but you may want to be wary due to privacy concerns with using third party software.
    Here's one of the ones I found (please don't take this as a recommendation, as I haven't tried it myself):
    http://grabz.it/api/javascript/
    Hope that helps,
    -Elaine

  • Crawling the Web with Java

    Hi everyone.
    I've been trying to learn how to make a web crawler in java following this detailed albeit old tutorial: http://www.devarticles.com/c/a/Java/Crawling-the-Web-with-Java/
    The SearchCrawler class they feature can be found in two parts:
    First part: http://www.devarticles.com/c/a/Java/Crawling-the-Web-with-Java/3/
    Second part: http://www.devarticles.com/c/a/Java/Crawling-the-Web-with-Java/4/
    I don't want to copy and paste the code because it is really long and an eyesore if viewing here.
    I get a lot of errors when compiling of which I do not understand. The majority of the errors (62 of them to be precise) are "class, interface or enum expected" errors, with the remaining few being "illegal start of type" and "<identifier> expected" errors.
    Can someone here perhaps take a look at it and compile it and see if they also get the same errors? I realise it is an old tutorial but there are hardly any detailed resources I can find for java web crawlers.
    Thanks.

    Odd I can't seem to log into my account. Never mind.
    I have used java before, the problem here I suppose is I'm not good enough to spot what's the problem. The code seems fine bracket wise and it has really left me stumped.
    If someone code put it in their editor and attempt to compile and see if I'm not the only one that's having a problem.. that would be much appreciated.
    For your convenience... the code from the example I linked:
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.net.*;
    import java.util.*;
    import java.util.regex.*;
    import javax.swing.*;
    import javax.swing.table.*;
    // The Search Web Crawler
    public class SearchCrawler extends JFrame
      // Max URLs drop-down values.
      private static final String[] MAX_URLS =
        {"50", "100", "500", "1000"};
      // Cache of robot disallow lists.
      private HashMap disallowListCache = new HashMap();
      // Search GUI controls.
      private JTextField startTextField;
      private JComboBox maxComboBox;
      private JCheckBox limitCheckBox;
      private JTextField logTextField;
      private JTextField searchTextField;
      private JCheckBox caseCheckBox;
      private JButton searchButton;
      // Search stats GUI controls.
      private JLabel crawlingLabel2;
      private JLabel crawledLabel2;
      private JLabel toCrawlLabel2;
      private JProgressBar progressBar;
      private JLabel matchesLabel2;
      // Table listing search matches.
      private JTable table;
      // Flag for whether or not crawling is underway.
      private boolean crawling;
      // Matches log file print writer.
      private PrintWriter logFileWriter;
      // Constructor for Search Web Crawler.
      public SearchCrawler()
        // Set application title.
        setTitle("Search Crawler");
        // Set window size.
        setSize(600, 600);
         // Handle window closing events.
        addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent e) {
           actionExit();
        // Set up File menu.
        JMenuBar menuBar = new JMenuBar();
        JMenu fileMenu = new JMenu("File"); 
        fileMenu.setMnemonic(KeyEvent.VK_F);
        JMenuItem fileExitMenuItem = new JMenuItem("Exit",
          KeyEvent.VK_X);
        fileExitMenuItem.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) { 
            actionExit();
        fileMenu.add(fileExitMenuItem);
        menuBar.add(fileMenu);
        setJMenuBar(menuBar);
        // Set up search panel.
        JPanel searchPanel = new JPanel();
        GridBagConstraints constraints;
        GridBagLayout layout = new GridBagLayout();
        searchPanel.setLayout(layout);
        JLabel startLabel = new JLabel("Start URL:");
        constraints = new GridBagConstraints();
        constraints.anchor = GridBagConstraints.EAST; 
        constraints.insets = new Insets(5, 5, 0, 0);
        layout.setConstraints(startLabel, constraints);
        searchPanel.add(startLabel);
        startTextField = new JTextField();
        constraints = new GridBagConstraints();
        constraints.fill = GridBagConstraints.HORIZONTAL;
        constraints.gridwidth = GridBagConstraints.REMAINDER;
        constraints.insets = new Insets(5, 5, 0, 5);
        layout.setConstraints(startTextField, constraints);
        searchPanel.add(startTextField);
        JLabel maxLabel = new JLabel("Max URLs to Crawl:");
        constraints = new GridBagConstraints();
        constraints.anchor = GridBagConstraints.EAST;
        constraints.insets = new Insets(5, 5, 0, 0);
        layout.setConstraints(maxLabel, constraints);
        searchPanel.add(maxLabel);
        maxComboBox = new JComboBox(MAX_URLS);
        maxComboBox.setEditable(true);
        constraints = new GridBagConstraints();
        constraints.insets = new Insets(5, 5, 0, 0);
        layout.setConstraints(maxComboBox, constraints);
        searchPanel.add(maxComboBox);
        limitCheckBox =
          new JCheckBox("Limit crawling to Start URL site");
        constraints = new GridBagConstraints();
        constraints.anchor = GridBagConstraints.WEST;
        constraints.insets = new Insets(0, 10, 0, 0);
        layout.setConstraints(limitCheckBox, constraints);
        searchPanel.add(limitCheckBox);
        JLabel blankLabel = new JLabel();
        constraints = new GridBagConstraints();
        constraints.gridwidth = GridBagConstraints.REMAINDER;
        layout.setConstraints(blankLabel, constraints);
        searchPanel.add(blankLabel);
        JLabel logLabel = new JLabel("Matches Log File:");
        constraints = new GridBagConstraints();
        constraints.anchor = GridBagConstraints.EAST;
        constraints.insets = new Insets(5, 5, 0, 0);
        layout.setConstraints(logLabel, constraints);
        searchPanel.add(logLabel);
        String file =
          System.getProperty("user.dir") +
          System.getProperty("file.separator") +
          "crawler.log";
        logTextField = new JTextField(file);
        constraints = new GridBagConstraints();
        constraints.fill = GridBagConstraints.HORIZONTAL;
        constraints.gridwidth = GridBagConstraints.REMAINDER;
        constraints.insets = new Insets(5, 5, 0, 5);
        layout.setConstraints(logTextField, constraints);
        searchPanel.add(logTextField);
        JLabel searchLabel = new JLabel("Search String:");
        constraints = new GridBagConstraints();
        constraints.anchor = GridBagConstraints.EAST; 
        constraints.insets = new Insets(5, 5, 0, 0);
        layout.setConstraints(searchLabel, constraints);
        searchPanel.add(searchLabel);
        searchTextField = new JTextField();
        constraints = new GridBagConstraints();
        constraints.fill = GridBagConstraints.HORIZONTAL;
        constraints.insets = new Insets(5, 5, 0, 0);
        constraints.gridwidth= 2;
        constraints.weightx = 1.0d;
        layout.setConstraints(searchTextField, constraints);
        searchPanel.add(searchTextField);
        caseCheckBox = new JCheckBox("Case Sensitive");
        constraints = new GridBagConstraints();
        constraints.insets = new Insets(5, 5, 0, 5);
        constraints.gridwidth = GridBagConstraints.REMAINDER;
        layout.setConstraints(caseCheckBox, constraints);
        searchPanel.add(caseCheckBox);
        searchButton = new JButton("Search");
        searchButton.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            actionSearch();
        constraints = new GridBagConstraints();
        constraints.gridwidth = GridBagConstraints.REMAINDER;
        constraints.insets = new Insets(5, 5, 5, 5);
        layout.setConstraints(searchButton, constraints);
        searchPanel.add(searchButton);
        JSeparator separator = new JSeparator();
        constraints = new GridBagConstraints();
        constraints.fill = GridBagConstraints.HORIZONTAL;
        constraints.gridwidth = GridBagConstraints.REMAINDER;
        constraints.insets = new Insets(5, 5, 5, 5);
        layout.setConstraints(separator, constraints);
        searchPanel.add(separator);
        JLabel crawlingLabel1 = new JLabel("Crawling:");
        constraints = new GridBagConstraints();
        constraints.anchor = GridBagConstraints.EAST;
        constraints.insets = new Insets(5, 5, 0, 0);
        layout.setConstraints(crawlingLabel1, constraints);
        searchPanel.add(crawlingLabel1);
        crawlingLabel2 = new JLabel();
        crawlingLabel2.setFont(
          crawlingLabel2.getFont().deriveFont(Font.PLAIN));
        constraints = new GridBagConstraints();
        constraints.fill = GridBagConstraints.HORIZONTAL;
        constraints.gridwidth = GridBagConstraints.REMAINDER;
        constraints.insets = new Insets(5, 5, 0, 5);
        layout.setConstraints(crawlingLabel2, constraints);
        searchPanel.add(crawlingLabel2);
        JLabel crawledLabel1 = new JLabel("Crawled URLs:");
        constraints = new GridBagConstraints();
        constraints.anchor = GridBagConstraints.EAST;
        constraints.insets = new Insets(5, 5, 0, 0);
        layout.setConstraints(crawledLabel1, constraints);
        searchPanel.add(crawledLabel1);
        crawledLabel2 = new JLabel();
        crawledLabel2.setFont(
          crawledLabel2.getFont().deriveFont(Font.PLAIN));
        constraints = new GridBagConstraints();
        constraints.fill = GridBagConstraints.HORIZONTAL;
        constraints.gridwidth = GridBagConstraints.REMAINDER;
        constraints.insets = new Insets(5, 5, 0, 5);
        layout.setConstraints(crawledLabel2, constraints);
        searchPanel.add(crawledLabel2);
        JLabel toCrawlLabel1 = new JLabel("URLs to Crawl:");
        constraints = new GridBagConstraints();
        constraints.anchor = GridBagConstraints.EAST;
        constraints.insets = new Insets(5, 5, 0, 0);
        layout.setConstraints(toCrawlLabel1, constraints);
        searchPanel.add(toCrawlLabel1);
        toCrawlLabel2 = new JLabel();
        toCrawlLabel2.setFont(
          toCrawlLabel2.getFont().deriveFont(Font.PLAIN));
        constraints = new GridBagConstraints();
        constraints.fill = GridBagConstraints.HORIZONTAL;
        constraints.gridwidth = GridBagConstraints.REMAINDER;
        constraints.insets = new Insets(5, 5, 0, 5);
        layout.setConstraints(toCrawlLabel2, constraints);
        searchPanel.add(toCrawlLabel2);
        JLabel progressLabel = new JLabel("Crawling Progress:");
        constraints = new GridBagConstraints();
        constraints.anchor = GridBagConstraints.EAST;
        constraints.insets = new Insets(5, 5, 0, 0);
        layout.setConstraints(progressLabel, constraints);
        searchPanel.add(progressLabel);
        progressBar = new JProgressBar();
        progressBar.setMinimum(0);
        progressBar.setStringPainted(true);
        constraints = new GridBagConstraints();
        constraints.fill = GridBagConstraints.HORIZONTAL;
        constraints.gridwidth = GridBagConstraints.REMAINDER;
        constraints.insets = new Insets(5, 5, 0, 5);
        layout.setConstraints(progressBar, constraints);
        searchPanel.add(progressBar);
        JLabel matchesLabel1 = new JLabel("Search Matches:");
        constraints = new GridBagConstraints();
        constraints.anchor = GridBagConstraints.EAST;
        constraints.insets = new Insets(5, 5, 10, 0);
        layout.setConstraints(matchesLabel1, constraints);
        searchPanel.add(matchesLabel1);
        matchesLabel2 = new JLabel();
        matchesLabel2.setFont(
          matchesLabel2.getFont().deriveFont(Font.PLAIN));
        constraints = new GridBagConstraints();
        constraints.fill = GridBagConstraints.HORIZONTAL;
        constraints.gridwidth = GridBagConstraints.REMAINDER;
        constraints.insets = new Insets(5, 5, 10, 5);
        layout.setConstraints(matchesLabel2, constraints);
        searchPanel.add(matchesLabel2);
        // Set up matches table.
        table =
          new JTable(new DefaultTableModel(new Object[][]{},
            new String[]{"URL"}) {
          public boolean isCellEditable(int row, int column)
            return false;
        // Set up Matches panel.
        JPanel matchesPanel = new JPanel();
        matchesPanel.setBorder(
          BorderFactory.createTitledBorder("Matches"));
        matchesPanel.setLayout(new BorderLayout());
        matchesPanel.add(new JScrollPane(table),
          BorderLayout.CENTER);
        // Add panels to display.
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(searchPanel, BorderLayout.NORTH);
        getContentPane().add(matchesPanel,BorderLayout.CENTER);
      // Exit this program.
      private void actionExit() {
        System.exit(0);
      // Handle Search/Stop button being clicked.
      private void actionSearch() {
        // If stop button clicked, turn crawling flag off.
        if (crawling) {
          crawling = false;
          return;
      ArrayList errorList = new ArrayList();
      // Validate that start URL has been entered.
      String startUrl = startTextField.getText().trim();
      if (startUrl.length() < 1) {
        errorList.add("Missing Start URL.");
      // Verify start URL.
      else if (verifyUrl(startUrl) == null) {
        errorList.add("Invalid Start URL.");
      // Validate that Max URLs is either empty or is a number.
      int maxUrls = 0;
      String max = ((String) maxComboBox.getSelectedItem()).trim();
      if (max.length() > 0) {
        try {
          maxUrls = Integer.parseInt(max);
        } catch (NumberFormatException e) {
        if (maxUrls < 1) {
          errorList.add("Invalid Max URLs value.");
      // Validate that matches log file has been entered.
      String logFile = logTextField.getText().trim();
      if (logFile.length() < 1) {
        errorList.add("Missing Matches Log File.");
      // Validate that search string has been entered.
      String searchString = searchTextField.getText().trim();
      if (searchString.length() < 1) {
        errorList.add("Missing Search String.");
      // Show errors, if any, and return.
      if (errorList.size() > 0) {
        StringBuffer message = new StringBuffer();
        // Concatenate errors into single message.
        for (int i = 0; i < errorList.size(); i++) {
          message.append(errorList.get(i));
          if (i + 1 < errorList.size()) {
            message.append("\n");
        showError(message.toString());
        return;
      // Remove "www" from start URL if present.
      startUrl = removeWwwFromUrl(startUrl);
      // Start the Search Crawler.
      search(logFile, startUrl, maxUrls, searchString);
    private void search(final String logFile, final String startUrl,
      final int maxUrls, final String searchString)
      // Start the search in a new thread.
      Thread thread = new Thread(new Runnable() {
        public void run() {
          // Show hour glass cursor while crawling is under way.
          setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
          // Disable search controls.
          startTextField.setEnabled(false);
          maxComboBox.setEnabled(false);
          limitCheckBox.setEnabled(false);
          logTextField.setEnabled(false);
          searchTextField.setEnabled(false);
          caseCheckBox.setEnabled(false);
          // Switch Search button to "Stop."
          searchButton.setText("Stop");
          // Reset stats.
          table.setModel(new DefaultTableModel(new Object[][]{},
            new String[]{"URL"}) {
            public boolean isCellEditable(int row, int column)
              return false;
           updateStats(startUrl, 0, 0, maxUrls);
          // Open matches log file.
          try {
            logFileWriter = new PrintWriter(new FileWriter(logFile));
          } catch (Exception e) {
            showError("Unable to open matches log file.");
            return;
          // Turn crawling flag on.
          crawling = true;
          // Perform the actual crawling.
          crawl(startUrl, maxUrls, limitCheckBox.isSelected(),
            searchString, caseCheckBox.isSelected());
          // Turn crawling flag off.
          crawling = false;
          // Close matches log file.
          try {
            logFileWriter.close();
          } catch (Exception e) {
            showError("Unable to close matches log file.");
          // Mark search as done.
          crawlingLabel2.setText("Done");
          // Enable search controls.
          startTextField.setEnabled(true);
          maxComboBox.setEnabled(true);
          limitCheckBox.setEnabled(true);
          logTextField.setEnabled(true);
          searchTextField.setEnabled(true);
          caseCheckBox.setEnabled(true);
          // Switch search button back to "Search."
          searchButton.setText("Search");
          // Return to default cursor.
          setCursor(Cursor.getDefaultCursor());
          // Show message if search string not found.
          if (table.getRowCount() == 0) {
            JOptionPane.showMessageDialog(SearchCrawler.this,
              "Your Search String was not found. Please try another.",
              "Search String Not Found",
              JOptionPane.WARNING_MESSAGE);
      thread.start();
    // Show dialog box with error message.
    private void showError(String message) {
      JOptionPane.showMessageDialog(this, message, "Error",
        JOptionPane.ERROR_MESSAGE);
    // Update crawling stats.
    private void updateStats(
      String crawling, int crawled, int toCrawl, int maxUrls)
      crawlingLabel2.setText(crawling);
      crawledLabel2.setText("" + crawled);
      toCrawlLabel2.setText("" + toCrawl);
      // Update progress bar.
      if (maxUrls == -1) {
        progressBar.setMaximum(crawled + toCrawl);
      } else {
        progressBar.setMaximum(maxUrls);
      progressBar.setValue(crawled);
      matchesLabel2.setText("" + table.getRowCount());
    // Add match to matches table and log file.
    private void addMatch(String url) {
      // Add URL to matches table.
      DefaultTableModel model =
        (DefaultTableModel) table.getModel();
      model.addRow(new Object[]{url});
      // Add URL to matches log file.
      try {
        logFileWriter.println(url);
      } catch (Exception e) {
        showError("Unable to log match.");
    // Verify URL format.
    private URL verifyUrl(String url) {
      // Only allow HTTP URLs.
      if (!url.toLowerCase().startsWith("http://"))
        return null;
      // Verify format of URL.
      URL verifiedUrl = null;
      try {
        verifiedUrl = new URL(url);
      } catch (Exception e) {
        return null;
      return verifiedUrl;
    // Check if robot is allowed to access the given URL. private boolean isRobotAllowed(URL urlToCheck) {
      String host = urlToCheck.getHost().toLowerCase();
      // Retrieve host's disallow list from cache.
      ArrayList disallowList =
        (ArrayList) disallowListCache.get(host);
      // If list is not in the cache, download and cache it.
      if (disallowList == null) {
        disallowList = new ArrayList();
        try {
          URL robotsFileUrl =
            new URL("http://" + host + "/robots.txt");
          // Open connection to robot file URL for reading.
          BufferedReader reader =
            new BufferedReader(new InputStreamReader(
              robotsFileUrl.openStream()));
          // Read robot file, creating list of disallowed paths.
          String line;
          while ((line = reader.readLine()) != null) {
            if (line.indexOf("Disallow:") == 0) {
              String disallowPath =
                line.substring("Disallow:".length());
              // Check disallow path for comments and remove if present.
              int commentIndex = disallowPath.indexOf("#");
              if (commentIndex != -1) {
                disallowPath =
                  disallowPath.substring(0, commentIndex);
              // Remove leading or trailing spaces from disallow path.
              disallowPath = disallowPath.trim();
              // Add disallow path to list.
              disallowList.add(disallowPath);
          // Add new disallow list to cache.
          disallowListCache.put(host, disallowList);
        catch (Exception e) {
          /* Assume robot is allowed since an exception
             is thrown if the robot file doesn't exist. */
          return true;
      /* Loop through disallow list to see if
         crawling is allowed for the given URL. */
      String file = urlToCheck.getFile();
      for (int i = 0; i < disallowList.size(); i++) {
        String disallow = (String) disallowList.get(i);
        if (file.startsWith(disallow)) {
          return false;
      return true;
    // Download page at given URL.
    private String downloadPage(URL pageUrl) {
      try {
        // Open connection to URL for reading.
        BufferedReader reader =
          new BufferedReader(new InputStreamReader(
            pageUrl.openStream()));
        // Read page into buffer.
        String line;
        StringBuffer pageBuffer = new StringBuffer();
        while ((line = reader.readLine()) != null) {
          pageBuffer.append(line);
        return pageBuffer.toString();
      } catch (Exception e) {
      return null;
    // Remove leading "www" from a URL's host if present.
    private String removeWwwFromUrl(String url) {
      int index = url.indexOf("://www.");
      if (index != -1) {
        return url.substring(0, index + 3) +
          url.substring(index + 7);
      return (url);
    // Parse through page contents and retrieve links.
    private ArrayList retrieveLinks(
      URL pageUrl, String pageContents, HashSet crawledList,
      boolean limitHost)
      // Compile link matching pattern.
      Pattern p =
        Pattern.compile("<a\\s+href\\s*=\\s*\"?(.*?)[\"|>]",
          Pattern.CASE_INSENSITIVE);
      Matcher m = p.matcher(pageContents);
      // Create list of link matches.
      ArrayList linkList = new ArrayList();
      while (m.find()) {
        String link = m.group(1).trim();
        // Skip empty links.
        if (link.length() < 1) {
          continue;
        // Skip links that are just page anchors.
        if (link.charAt(0) == '#') {
          continue;
        // Skip mailto links.
        if (link.indexOf("mailto:") != -1) {
          continue;
        // Skip JavaScript links.
        if (link.toLowerCase().indexOf("javascript") != -1) {
          continue;
        // Prefix absolute and relative URLs if necessary.
        if (link.indexOf("://") == -1) {
          // Handle absolute URLs.
          if (link.charAt(0) == '/') {
            link = "http://" + pageUrl.getHost() + link;
          // Handle relative URLs.
          } else {
            String file = pageUrl.getFile();
            if (file.indexOf('/') == -1) {
              link = "http://" + pageUrl.getHost() + "/" + link;
            } else {
              String path =
                file.substring(0, file.lastIndexOf('/') + 1);
              link = "http://" + pageUrl.getHost() + path + link;
        // Remove anchors from link.
        int index = link.indexOf('#');
        if (index != -1) {
          link = link.substring(0, index);
        // Remove leading "www" from URL's host if present.
        link = removeWwwFromUrl(link);
        // Verify link and skip if invalid.
        URL verifiedLink = verifyUrl(link);
        if (verifiedLink == null) {
          continue;
        /* If specified, limit links to those
          having the same host as the start URL. */
        if (limitHost &&
            !pageUrl.getHost().toLowerCase().equals(
              verifiedLink.getHost().toLowerCase())) 
          continue;
        // Skip link if it has already been crawled.
        if (crawledList.contains(link)) {
          continue;
        // Add link to list.
        linkList.add(link);
      return (linkList);
    /* Determine whether or not search string is
       matched in the given page contents. */
    private boolean searchStringMatches(
      String pageContents, String searchString,
      boolean caseSensitive)
      String searchContents = pageContents;
      /* If case-sensitive search, lowercase
         page contents for comparison. */
      if (!caseSensitive) {
        searchContents = pageContents.toLowerCase();
      // Split search string into individual terms.
      Pattern p = Pattern.compile("[\\s]+");
      String[] terms = p.split(searchString);
      // Check to see if each term matches.
      for (int i = 0; i < terms.length; i++) {
        if (caseSensitive) {
          if (searchContents.indexOf(terms) == -1) {
    return false;
    } else {
    if (searchContents.indexOf(terms[i].toLowerCase()) == -1) {
    return false;
    return true;
    // Perform the actual crawling, searching for the search string.
    public void crawl(
    String startUrl, int maxUrls, boolean limitHost,
    String searchString, boolean caseSensitive)
    // Set up crawl lists.
    HashSet crawledList = new HashSet();
    LinkedHashSet toCrawlList = new LinkedHashSet();
    // Add start URL to the to crawl list.
    toCrawlList.add(startUrl);
    /* Perform actual crawling by looping
    through the To Crawl list. */
    while (crawling && toCrawlList.size() > 0)
    /* Check to see if the max URL count has
    been reached, if it was specified.*/
    if (maxUrls != -1) {
    if (crawledList.size() == maxUrls) {
    break;
    // Get URL at bottom of the list.
    String url = (String) toCrawlList.iterator().next();
    // Remove URL from the To Crawl list.
    toCrawlList.remove(url);
    // Convert string url to URL object.
    URL verifiedUrl = verifyUrl(url);
    // Skip URL if robots are not allowed to access it.
    if (!isRobotAllowed(verifiedUrl)) {
    continue;
    // Update crawling stats.
    updateStats(url, crawledList.size(), toCrawlList.size(),
    maxUrls);
    // Add page to the crawled list.
    crawledList.add(url);
    // Download the page at the given URL.
    String pageContents = downloadPage(verifiedUrl);
    /* If the page was downloaded successfully, retrieve all its
    links and then see if it contains the search string. */
    if (pageContents != null && pageContents.length() > 0)
    // Retrieve list of valid links from page.
    ArrayList links =
    retrieveLinks(verifiedUrl, pageContents, crawledList,
    limitHost);
    // Add links to the To Crawl list.
    toCrawlList.addAll(links);
    /* Check if search string is present in
    page, and if so, record a match. */
    if (searchStringMatches(pageContents, searchString,
    caseSensitive))
    addMatch(url);
    // Update crawling stats.
    updateStats(url, crawledList.size(), toCrawlList.size(),
    maxUrls);
    // Run the Search Crawler.
    public static void main(String[] args) {
    SearchCrawler crawler = new SearchCrawler();
    crawler.show();
    }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • How do I access my external drive over the web with my iPhone. The drive is attached to my Time Machine.

    How do I access my external drive over the web with my iPhone. The drive is attached to my Time Machine. I am new to Apple and am trying to get all my stuff working together.

    This is not a supported feature of iPhone or Time Capsule.

Maybe you are looking for

  • Previous Month From Previous Year

    I have a report that needs to return results from a chosen months and the results from te prior two months. I have things working fine if the months are in the same year. An example: I want to get the hour that certain employees in a certain departme

  • Fans always @4400rpm, sleeping while working

    I have a 1st generation 20" iMac that has very loud fans and that has recently started going to sleep while I'm working. Needless to say, this is pretty annoying. I have... - repaired permissions - run both Disk Utility and Diskwarrior - reset the SM

  • Is it  possible to unlock my phone (4s) locked from Globe network.

    I can't use my phone in Canada because it's locked from Globe network... Is there a way to unlock it so I can use new sim here? thanks...

  • Need help on Update query

    Hi, I have 2 tables A and B with below data and description, i want to update Table B when C1, C2 are equal and C3 is not equal by comparing with Table A. If A contains 2 records with same such condition then update any 1 record's different descripti

  • NoSuchObjectLocalException - call entitybean finder method from sessionbean

    I got javax.ejb.NoSuchObjectLocalException when I tried to call a BMP EntityBean finder method (return a List) from a session facade bean. The session bean uses the entityBean's local interface. Can anyone help? I am using JBOSS 4. From SessionBean: