package com.netifera.platform.net.internal.ui; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.action.IAction; import com.netifera.platform.net.tools.basic.AddHost; import com.netifera.platform.net.tools.basic.AddNetblock; import com.netifera.platform.tools.options.GenericOption; import com.netifera.platform.ui.actions.ToolAction; import com.netifera.platform.ui.api.inputbar.IInputBarActionProvider; import com.netifera.platform.util.addresses.AddressFormatException; import com.netifera.platform.util.addresses.inet.InternetAddress; import com.netifera.platform.util.addresses.inet.InternetNetblock; import com.netifera.platform.util.patternmatching.InternetAddressMatcher; import com.netifera.platform.util.patternmatching.NetblockMatcher; public class InputBarActionProvider implements IInputBarActionProvider { public List<IAction> getActions(final long realm, final long spaceId, String input) { List<IAction> answer = new ArrayList<IAction>(); NetblockMatcher netblockMatcher = new NetblockMatcher(input); if (netblockMatcher.matches()) { InternetAddress address = InternetAddress.fromString(netblockMatcher.getNetwork()); InternetNetblock netblock = address.createNetblock(netblockMatcher.getCIDR()); ToolAction addNetblock = new ToolAction("Add netblock "+netblock, AddNetblock.class.getName()); addNetblock.addFixedOption(new GenericOption(InternetNetblock.class, "netblock", "Netblock", "Netblock to add to the model", netblock)); answer.add(addNetblock); } else { InternetAddress address = null; if (InternetAddressMatcher.matches(input)) { address = InternetAddress.fromString(input); } else if (input.matches("^(\\p{XDigit}+\\.)+i.*\\.arpa\\.?$")) { try { address = InternetAddress.fromARPA(input); } catch (AddressFormatException e) { // nothing } } if (address != null) { ToolAction addHost = new ToolAction("Add host "+address, AddHost.class.getName()); addHost.addFixedOption(new GenericOption(InternetAddress.class, "address", "Address", "Address of the host to add to the model", address)); answer.add(addHost); } } return answer; } }