package com.jbidwatcher.ui; /* * Copyright (c) 2000-2007, CyberFOX Software, Inc. All Rights Reserved. * * Developed by mrs (Morgan Schweers) */ import com.jbidwatcher.util.queue.DropQObject; import com.jbidwatcher.util.queue.MQFactory; import com.jbidwatcher.util.html.JHTML; import com.jbidwatcher.util.config.JConfig; import com.jbidwatcher.ui.util.JDropHandler; import java.awt.Point; import java.util.List; public class TargetDrop implements JDropHandler { private static boolean sUberDebug = false; private String mTargetName; private ImageDropResolver imageResolver; public TargetDrop(String tableName, ImageDropResolver imageResolver) { super(); mTargetName = tableName; this.imageResolver = imageResolver; } /** * @brief This allows creation of a 'retarget to current' drop handler. */ public TargetDrop() { super(); mTargetName = null; } private StringBuffer cleanString(StringBuffer instr) { int i; int len = instr.length(); StringBuffer s = new StringBuffer(len); for (i = 0; i < len; i++) { char c = instr.charAt(i); if (c != '\u0000' && c != '\n') s.append(c); } return s; } public void receiveDropString(StringBuffer dropped, Point location) { if(dropped == null) { JConfig.log().logDebug("Dropped is (null)"); return; } dropped = new StringBuffer(cleanString(dropped)); if(sUberDebug) JConfig.log().logDebug("Dropping :" + dropped + ":"); // Is it an 'HTML Fragment' as produced by Mozilla, NS6, and IE5+? // BOY it's a small bit to test against, but Mozilla starts with <HTML>, // and IE5 starts with <!DOCTYPE... The only commonality I can trust is // that they'll start with a tag, not content. I could look for <HTML> // someplace in the document... -- mrs: 28-September-2001 03:53 if(dropped.charAt(0) == '<') { JHTML tinyDocument = new JHTML(dropped); List<String> allItemsOnPage = tinyDocument.getAllURLsOnPage(true); if(allItemsOnPage == null) { // This could be an image drop. tinyDocument.reset(); List<String> allImagesOnPage = tinyDocument.getAllImages(); if(allImagesOnPage.isEmpty()) { return; } // Get the first image String img = allImagesOnPage.get(0); imageResolver.handle(img, location); return; } for (String auctionURL : allItemsOnPage) { if (auctionURL != null) { JConfig.log().logDebug("Adding: " + auctionURL.trim()); MQFactory.getConcrete("drop").enqueueBean(new DropQObject(auctionURL.trim(), mTargetName, true)); } } } else { String newEntry = dropped.toString(); if(newEntry.matches("^.*(\\.(jpg|png|jpeg|gif|bmp))$")) { imageResolver.handle(newEntry, location); } else { MQFactory.getConcrete("drop").enqueueBean(new DropQObject(newEntry.trim(), mTargetName, true)); } } } }